Allow to receive non-public profiles without private data
This commit is contained in:
parent
0b07b36017
commit
834d358eca
2 changed files with 29 additions and 4 deletions
|
|
@ -7,11 +7,18 @@ module DiasporaFederation
|
||||||
|
|
||||||
def validate
|
def validate
|
||||||
super
|
super
|
||||||
raise NotPublic if entity_can_be_public_but_it_is_not?
|
validate_public_flag
|
||||||
end
|
end
|
||||||
|
|
||||||
def entity_can_be_public_but_it_is_not?
|
def validate_public_flag
|
||||||
entity.respond_to?(:public) && !entity.public
|
return if !entity.respond_to?(:public) || entity.public
|
||||||
|
|
||||||
|
if entity.is_a?(Entities::Profile) &&
|
||||||
|
%i[bio birthday gender location].all? {|prop| entity.public_send(prop).nil? }
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
raise NotPublic, "received entity #{entity} should be public!"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,7 @@ module DiasporaFederation
|
||||||
described_class.new(magic_env).receive
|
described_class.new(magic_env).receive
|
||||||
end
|
end
|
||||||
|
|
||||||
it "does not allow non-public entities" do
|
it "doesn't allow non-public entities" do
|
||||||
private_post = Fabricate(:status_message_entity, public: false)
|
private_post = Fabricate(:status_message_entity, public: false)
|
||||||
magic_env = Salmon::MagicEnvelope.new(private_post, private_post.author)
|
magic_env = Salmon::MagicEnvelope.new(private_post, private_post.author)
|
||||||
|
|
||||||
|
|
@ -133,6 +133,24 @@ module DiasporaFederation
|
||||||
|
|
||||||
described_class.new(magic_env).receive
|
described_class.new(magic_env).receive
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "allows profiles flagged as private if they don't contain private information" do
|
||||||
|
profile = Fabricate(:profile_entity, public: false, bio: nil, birthday: nil, gender: nil, location: nil)
|
||||||
|
magic_env = Salmon::MagicEnvelope.new(profile, profile.author)
|
||||||
|
|
||||||
|
expect_callback(:receive_entity, profile, profile.author, nil)
|
||||||
|
|
||||||
|
described_class.new(magic_env).receive
|
||||||
|
end
|
||||||
|
|
||||||
|
it "doesn't allow profiles flagged as private if they contain private information" do
|
||||||
|
profile = Fabricate(:profile_entity, public: false)
|
||||||
|
magic_env = Salmon::MagicEnvelope.new(profile, profile.author)
|
||||||
|
|
||||||
|
expect {
|
||||||
|
described_class.new(magic_env).receive
|
||||||
|
}.to raise_error Federation::Receiver::NotPublic
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "with text" do
|
context "with text" do
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue