diff --git a/docs/_entities/profile.md b/docs/_entities/profile.md index 7ab5656..bb93118 100644 --- a/docs/_entities/profile.md +++ b/docs/_entities/profile.md @@ -24,6 +24,7 @@ This entity contains all the profile data of a person. | `bio` | [Markdown][markdown] (65535) | The description of the person. This field can contain markdown. | | `location` | [String][string] (255) | The location of the person. | | `searchable` | [Boolean][boolean] | `false` if the person doesn't want to be searchable by name. | +| `public` | [Boolean][boolean] | `true` if the profile is visible to everyone. | | `nsfw` | [Boolean][boolean] | `true` if all posts of this person should be marked as NSFW. | | `tag_string` | [String][string] | A list of hashtags for this person, each tag beginning with `#` and seperated by spaces, at most 5 tags. | @@ -42,6 +43,7 @@ This entity contains all the profile data of a person. some text about me github true + false false #i #love #tags diff --git a/lib/diaspora_federation/entities/profile.rb b/lib/diaspora_federation/entities/profile.rb index 7a9b4c6..7834cde 100644 --- a/lib/diaspora_federation/entities/profile.rb +++ b/lib/diaspora_federation/entities/profile.rb @@ -53,6 +53,11 @@ module DiasporaFederation # @return [Boolean] searchable flag property :searchable, :boolean, default: true + # @!attribute [r] public + # Shows whether the profile is visible to everyone or only to contacts + # @return [Boolean] is it public + property :public, :boolean, default: false + property :nsfw, :boolean, default: false property :tag_string, :string, default: nil diff --git a/lib/diaspora_federation/test/factories.rb b/lib/diaspora_federation/test/factories.rb index 1efbb59..5d8da03 100644 --- a/lib/diaspora_federation/test/factories.rb +++ b/lib/diaspora_federation/test/factories.rb @@ -66,6 +66,7 @@ module DiasporaFederation bio "some text about me" location "github" searchable true + public false nsfw false tag_string "#i #love #tags" end diff --git a/lib/diaspora_federation/validators/profile_validator.rb b/lib/diaspora_federation/validators/profile_validator.rb index fabe407..22128bb 100644 --- a/lib/diaspora_federation/validators/profile_validator.rb +++ b/lib/diaspora_federation/validators/profile_validator.rb @@ -23,7 +23,7 @@ module DiasporaFederation rule :location, length: {maximum: 255} rule :searchable, :boolean - + rule :public, :boolean rule :nsfw, :boolean rule :tag_string, tag_count: {maximum: 5} diff --git a/spec/lib/diaspora_federation/entities/account_migration_spec.rb b/spec/lib/diaspora_federation/entities/account_migration_spec.rb index 09dca0d..1029e48 100644 --- a/spec/lib/diaspora_federation/entities/account_migration_spec.rb +++ b/spec/lib/diaspora_federation/entities/account_migration_spec.rb @@ -30,6 +30,7 @@ module DiasporaFederation #{data[:profile].bio} #{data[:profile].location} #{data[:profile].searchable} + #{data[:profile].public} #{data[:profile].nsfw} #{data[:profile].tag_string} diff --git a/spec/lib/diaspora_federation/entities/person_spec.rb b/spec/lib/diaspora_federation/entities/person_spec.rb index 786992a..3e7b83e 100644 --- a/spec/lib/diaspora_federation/entities/person_spec.rb +++ b/spec/lib/diaspora_federation/entities/person_spec.rb @@ -19,6 +19,7 @@ module DiasporaFederation #{data[:profile].bio} #{data[:profile].location} #{data[:profile].searchable} + #{data[:profile].public} #{data[:profile].nsfw} #{data[:profile].tag_string} diff --git a/spec/lib/diaspora_federation/entities/profile_spec.rb b/spec/lib/diaspora_federation/entities/profile_spec.rb index b0b6873..7499e60 100644 --- a/spec/lib/diaspora_federation/entities/profile_spec.rb +++ b/spec/lib/diaspora_federation/entities/profile_spec.rb @@ -15,6 +15,7 @@ module DiasporaFederation #{data[:bio]} #{data[:location]} #{data[:searchable]} + #{data[:public]} #{data[:nsfw]} #{data[:tag_string]} @@ -35,6 +36,7 @@ XML "bio": "#{data[:bio]}", "location": "#{data[:location]}", "searchable": #{data[:searchable]}, + "public": #{data[:public]}, "nsfw": #{data[:nsfw]}, "tag_string": "#{data[:tag_string]}" } @@ -68,6 +70,7 @@ XML expect(parsed_instance.bio).to be_nil expect(parsed_instance.location).to be_nil expect(parsed_instance.searchable).to be_truthy + expect(parsed_instance.public).to be_falsey expect(parsed_instance.nsfw).to be_falsey expect(parsed_instance.tag_string).to be_nil end diff --git a/spec/lib/diaspora_federation/federation/receiver/public_spec.rb b/spec/lib/diaspora_federation/federation/receiver/public_spec.rb index 298cd47..0234487 100644 --- a/spec/lib/diaspora_federation/federation/receiver/public_spec.rb +++ b/spec/lib/diaspora_federation/federation/receiver/public_spec.rb @@ -126,10 +126,10 @@ module DiasporaFederation end it "allows entities without public flag" do - profile = Fabricate(:profile_entity) - magic_env = Salmon::MagicEnvelope.new(profile, profile.author) + like = Fabricate(:like_entity) + magic_env = Salmon::MagicEnvelope.new(like, like.author) - expect_callback(:receive_entity, profile, profile.author, nil) + expect_callback(:receive_entity, like, like.author, nil) described_class.new(magic_env).receive end diff --git a/spec/lib/diaspora_federation/validators/profile_validator_spec.rb b/spec/lib/diaspora_federation/validators/profile_validator_spec.rb index 55312d8..af826ef 100644 --- a/spec/lib/diaspora_federation/validators/profile_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/profile_validator_spec.rb @@ -61,7 +61,7 @@ module DiasporaFederation end end - %i(searchable nsfw).each do |prop| + %i(searchable public nsfw).each do |prop| describe "##{prop}" do it_behaves_like "a boolean validator" do let(:property) { prop }