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 }