diff --git a/lib/diaspora_federation/entities/reshare.rb b/lib/diaspora_federation/entities/reshare.rb index 96ae593..ff235fa 100644 --- a/lib/diaspora_federation/entities/reshare.rb +++ b/lib/diaspora_federation/entities/reshare.rb @@ -10,7 +10,7 @@ module DiasporaFederation # The diaspora* ID of the person who posted the original post # @see Person#author # @return [String] diaspora* ID - property :root_author, :string, xml_name: :root_diaspora_id + property :root_author, :string, optional: true, xml_name: :root_diaspora_id # @!attribute [r] root_guid # Guid of the original post diff --git a/lib/diaspora_federation/validators/account_deletion_validator.rb b/lib/diaspora_federation/validators/account_deletion_validator.rb index 872472b..60a32cf 100644 --- a/lib/diaspora_federation/validators/account_deletion_validator.rb +++ b/lib/diaspora_federation/validators/account_deletion_validator.rb @@ -4,7 +4,7 @@ module DiasporaFederation class AccountDeletionValidator < OptionalAwareValidator include Validation - rule :author, %i[not_empty diaspora_id] + rule :author, :diaspora_id end end end diff --git a/lib/diaspora_federation/validators/account_migration_validator.rb b/lib/diaspora_federation/validators/account_migration_validator.rb index f0dd336..1c11b25 100644 --- a/lib/diaspora_federation/validators/account_migration_validator.rb +++ b/lib/diaspora_federation/validators/account_migration_validator.rb @@ -4,7 +4,7 @@ module DiasporaFederation class AccountMigrationValidator < OptionalAwareValidator include Validation - rule :author, %i[not_empty diaspora_id] + rule :author, :diaspora_id rule :profile, :not_nil end diff --git a/lib/diaspora_federation/validators/contact_validator.rb b/lib/diaspora_federation/validators/contact_validator.rb index c22ecc7..3c88805 100644 --- a/lib/diaspora_federation/validators/contact_validator.rb +++ b/lib/diaspora_federation/validators/contact_validator.rb @@ -4,8 +4,8 @@ module DiasporaFederation class ContactValidator < OptionalAwareValidator include Validation - rule :author, %i[not_empty diaspora_id] - rule :recipient, %i[not_empty diaspora_id] + rule :author, :diaspora_id + rule :recipient, :diaspora_id rule :following, :boolean rule :sharing, :boolean end diff --git a/lib/diaspora_federation/validators/conversation_validator.rb b/lib/diaspora_federation/validators/conversation_validator.rb index e8c84ee..43e68cb 100644 --- a/lib/diaspora_federation/validators/conversation_validator.rb +++ b/lib/diaspora_federation/validators/conversation_validator.rb @@ -4,7 +4,7 @@ module DiasporaFederation class ConversationValidator < OptionalAwareValidator include Validation - rule :author, %i[not_empty diaspora_id] + rule :author, :diaspora_id rule :guid, :guid rule :subject, [:not_empty, length: {maximum: 255}] diff --git a/lib/diaspora_federation/validators/event_validator.rb b/lib/diaspora_federation/validators/event_validator.rb index ab926a4..a6c0aa6 100644 --- a/lib/diaspora_federation/validators/event_validator.rb +++ b/lib/diaspora_federation/validators/event_validator.rb @@ -4,7 +4,7 @@ module DiasporaFederation class EventValidator < OptionalAwareValidator include Validation - rule :author, %i[not_empty diaspora_id] + rule :author, :diaspora_id rule :guid, :guid diff --git a/lib/diaspora_federation/validators/message_validator.rb b/lib/diaspora_federation/validators/message_validator.rb index 1e757f6..6ded966 100644 --- a/lib/diaspora_federation/validators/message_validator.rb +++ b/lib/diaspora_federation/validators/message_validator.rb @@ -4,7 +4,7 @@ module DiasporaFederation class MessageValidator < OptionalAwareValidator include Validation - rule :author, %i[not_empty diaspora_id] + rule :author, :diaspora_id rule :guid, :guid rule :conversation_guid, :guid diff --git a/lib/diaspora_federation/validators/participation_validator.rb b/lib/diaspora_federation/validators/participation_validator.rb index 13b8c1e..c3c4917 100644 --- a/lib/diaspora_federation/validators/participation_validator.rb +++ b/lib/diaspora_federation/validators/participation_validator.rb @@ -4,7 +4,7 @@ module DiasporaFederation class ParticipationValidator < OptionalAwareValidator include Validation - rule :author, %i[not_empty diaspora_id] + rule :author, :diaspora_id rule :guid, :guid rule :parent_guid, :guid rule :parent_type, [:not_empty, regular_expression: {regex: /\APost\z/}] diff --git a/lib/diaspora_federation/validators/person_validator.rb b/lib/diaspora_federation/validators/person_validator.rb index 62cac9d..ddfad99 100644 --- a/lib/diaspora_federation/validators/person_validator.rb +++ b/lib/diaspora_federation/validators/person_validator.rb @@ -6,7 +6,7 @@ module DiasporaFederation rule :guid, :guid - rule :author, %i[not_empty diaspora_id] + rule :author, :diaspora_id rule :url, %i[not_nil URI] diff --git a/lib/diaspora_federation/validators/photo_validator.rb b/lib/diaspora_federation/validators/photo_validator.rb index 48e0d73..7c18107 100644 --- a/lib/diaspora_federation/validators/photo_validator.rb +++ b/lib/diaspora_federation/validators/photo_validator.rb @@ -6,7 +6,7 @@ module DiasporaFederation rule :guid, :guid - rule :author, %i[not_empty diaspora_id] + rule :author, :diaspora_id rule :public, :boolean diff --git a/lib/diaspora_federation/validators/related_entity_validator.rb b/lib/diaspora_federation/validators/related_entity_validator.rb index 1f2ffe3..17c2726 100644 --- a/lib/diaspora_federation/validators/related_entity_validator.rb +++ b/lib/diaspora_federation/validators/related_entity_validator.rb @@ -4,7 +4,7 @@ module DiasporaFederation class RelatedEntityValidator < Validation::Validator include Validation - rule :author, %i[not_empty diaspora_id] + rule :author, :diaspora_id rule :local, :boolean rule :public, :boolean end diff --git a/lib/diaspora_federation/validators/relayable_validator.rb b/lib/diaspora_federation/validators/relayable_validator.rb index f32b384..618f3ce 100644 --- a/lib/diaspora_federation/validators/relayable_validator.rb +++ b/lib/diaspora_federation/validators/relayable_validator.rb @@ -6,7 +6,7 @@ module DiasporaFederation # @param [Validation::Validator] validator the validator in which it is included def self.included(validator) validator.class_eval do - rule :author, %i[not_empty diaspora_id] + rule :author, :diaspora_id rule :guid, :guid rule :parent_guid, :guid rule :parent, :not_nil diff --git a/lib/diaspora_federation/validators/reshare_validator.rb b/lib/diaspora_federation/validators/reshare_validator.rb index db8858d..b28621d 100644 --- a/lib/diaspora_federation/validators/reshare_validator.rb +++ b/lib/diaspora_federation/validators/reshare_validator.rb @@ -8,7 +8,7 @@ module DiasporaFederation rule :root_guid, :guid - rule :author, %i[not_empty diaspora_id] + rule :author, :diaspora_id rule :guid, :guid diff --git a/lib/diaspora_federation/validators/retraction_validator.rb b/lib/diaspora_federation/validators/retraction_validator.rb index de70bc8..922b44f 100644 --- a/lib/diaspora_federation/validators/retraction_validator.rb +++ b/lib/diaspora_federation/validators/retraction_validator.rb @@ -4,7 +4,7 @@ module DiasporaFederation class RetractionValidator < OptionalAwareValidator include Validation - rule :author, %i[not_empty diaspora_id] + rule :author, :diaspora_id rule :target_guid, :guid rule :target_type, :not_empty diff --git a/lib/diaspora_federation/validators/status_message_validator.rb b/lib/diaspora_federation/validators/status_message_validator.rb index 43a13be..62eee98 100644 --- a/lib/diaspora_federation/validators/status_message_validator.rb +++ b/lib/diaspora_federation/validators/status_message_validator.rb @@ -4,7 +4,7 @@ module DiasporaFederation class StatusMessageValidator < OptionalAwareValidator include Validation - rule :author, %i[not_empty diaspora_id] + rule :author, :diaspora_id rule :guid, :guid diff --git a/spec/lib/diaspora_federation/validators/account_deletion_validator_spec.rb b/spec/lib/diaspora_federation/validators/account_deletion_validator_spec.rb index 7d0b542..2c76af6 100644 --- a/spec/lib/diaspora_federation/validators/account_deletion_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/account_deletion_validator_spec.rb @@ -6,7 +6,6 @@ module DiasporaFederation it_behaves_like "a diaspora* ID validator" do let(:property) { :author } - let(:mandatory) { true } end end end diff --git a/spec/lib/diaspora_federation/validators/account_migration_validator_spec.rb b/spec/lib/diaspora_federation/validators/account_migration_validator_spec.rb index eca0e5d..7d95768 100644 --- a/spec/lib/diaspora_federation/validators/account_migration_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/account_migration_validator_spec.rb @@ -6,7 +6,6 @@ module DiasporaFederation it_behaves_like "a diaspora* ID validator" do let(:property) { :author } - let(:mandatory) { true } end describe "#person" do diff --git a/spec/lib/diaspora_federation/validators/contact_validator_spec.rb b/spec/lib/diaspora_federation/validators/contact_validator_spec.rb index 476d859..27ab84a 100644 --- a/spec/lib/diaspora_federation/validators/contact_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/contact_validator_spec.rb @@ -8,7 +8,6 @@ module DiasporaFederation describe "##{prop}" do it_behaves_like "a diaspora* ID validator" do let(:property) { prop } - let(:mandatory) { true } end end end diff --git a/spec/lib/diaspora_federation/validators/conversation_validator_spec.rb b/spec/lib/diaspora_federation/validators/conversation_validator_spec.rb index 7891159..49670ff 100644 --- a/spec/lib/diaspora_federation/validators/conversation_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/conversation_validator_spec.rb @@ -6,7 +6,6 @@ module DiasporaFederation it_behaves_like "a diaspora* ID validator" do let(:property) { :author } - let(:mandatory) { true } end it_behaves_like "a guid validator" do diff --git a/spec/lib/diaspora_federation/validators/event_validator_spec.rb b/spec/lib/diaspora_federation/validators/event_validator_spec.rb index 1bd3864..c516a95 100644 --- a/spec/lib/diaspora_federation/validators/event_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/event_validator_spec.rb @@ -6,7 +6,6 @@ module DiasporaFederation it_behaves_like "a diaspora* ID validator" do let(:property) { :author } - let(:mandatory) { true } end it_behaves_like "a guid validator" do diff --git a/spec/lib/diaspora_federation/validators/message_validator_spec.rb b/spec/lib/diaspora_federation/validators/message_validator_spec.rb index 7347b9b..0889cbb 100644 --- a/spec/lib/diaspora_federation/validators/message_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/message_validator_spec.rb @@ -5,7 +5,6 @@ module DiasporaFederation it_behaves_like "a diaspora* ID validator" do let(:property) { :author } - let(:mandatory) { true } end describe "#guid" do diff --git a/spec/lib/diaspora_federation/validators/participation_validator_spec.rb b/spec/lib/diaspora_federation/validators/participation_validator_spec.rb index cd7cadd..7ffdcfc 100644 --- a/spec/lib/diaspora_federation/validators/participation_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/participation_validator_spec.rb @@ -6,7 +6,6 @@ module DiasporaFederation it_behaves_like "a diaspora* ID validator" do let(:property) { :author } - let(:mandatory) { true } end describe "#guid" do diff --git a/spec/lib/diaspora_federation/validators/person_validator_spec.rb b/spec/lib/diaspora_federation/validators/person_validator_spec.rb index e4f7726..6b7d61d 100644 --- a/spec/lib/diaspora_federation/validators/person_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/person_validator_spec.rb @@ -6,7 +6,6 @@ module DiasporaFederation it_behaves_like "a diaspora* ID validator" do let(:property) { :author } - let(:mandatory) { true } end it_behaves_like "a guid validator" do diff --git a/spec/lib/diaspora_federation/validators/photo_validator_spec.rb b/spec/lib/diaspora_federation/validators/photo_validator_spec.rb index 97682cc..342ebac 100644 --- a/spec/lib/diaspora_federation/validators/photo_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/photo_validator_spec.rb @@ -6,7 +6,6 @@ module DiasporaFederation it_behaves_like "a diaspora* ID validator" do let(:property) { :author } - let(:mandatory) { true } end describe "#guid" do diff --git a/spec/lib/diaspora_federation/validators/profile_validator_spec.rb b/spec/lib/diaspora_federation/validators/profile_validator_spec.rb index d93b17a..5f8b52c 100644 --- a/spec/lib/diaspora_federation/validators/profile_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/profile_validator_spec.rb @@ -6,7 +6,6 @@ module DiasporaFederation it_behaves_like "a diaspora* ID validator" do let(:property) { :author } - let(:mandatory) { false } end %i[first_name last_name].each do |prop| diff --git a/spec/lib/diaspora_federation/validators/related_entity_validator_spec.rb b/spec/lib/diaspora_federation/validators/related_entity_validator_spec.rb index d42d3fc..56bf669 100644 --- a/spec/lib/diaspora_federation/validators/related_entity_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/related_entity_validator_spec.rb @@ -6,7 +6,6 @@ module DiasporaFederation it_behaves_like "a diaspora* ID validator" do let(:property) { :author } - let(:mandatory) { true } end %i[local public].each do |prop| diff --git a/spec/lib/diaspora_federation/validators/reshare_validator_spec.rb b/spec/lib/diaspora_federation/validators/reshare_validator_spec.rb index e78905d..2f50ef5 100644 --- a/spec/lib/diaspora_federation/validators/reshare_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/reshare_validator_spec.rb @@ -6,7 +6,6 @@ module DiasporaFederation describe "#author" do it_behaves_like "a diaspora* ID validator" do let(:property) { :author } - let(:mandatory) { true } end end @@ -23,9 +22,10 @@ module DiasporaFederation end describe "#root_author" do - it_behaves_like "a diaspora* ID validator" do + it_behaves_like "a property with a value validation/restriction" do let(:property) { :root_author } - let(:mandatory) { false } + let(:wrong_values) { ["i am a weird diaspora* ID @@@ ### 12345"] } + let(:correct_values) { [nil, "alice@example.org"] } end end diff --git a/spec/lib/diaspora_federation/validators/retraction_validator_spec.rb b/spec/lib/diaspora_federation/validators/retraction_validator_spec.rb index a0bb5c8..b19294c 100644 --- a/spec/lib/diaspora_federation/validators/retraction_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/retraction_validator_spec.rb @@ -9,7 +9,6 @@ module DiasporaFederation it_behaves_like "a diaspora* ID validator" do let(:property) { :author } - let(:mandatory) { true } end describe "#target_type" do diff --git a/spec/lib/diaspora_federation/validators/status_message_validator_spec.rb b/spec/lib/diaspora_federation/validators/status_message_validator_spec.rb index 2fb5873..0f8bd4b 100644 --- a/spec/lib/diaspora_federation/validators/status_message_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/status_message_validator_spec.rb @@ -6,7 +6,6 @@ module DiasporaFederation it_behaves_like "a diaspora* ID validator" do let(:property) { :author } - let(:mandatory) { true } end it_behaves_like "a guid validator" do diff --git a/spec/support/shared_validator_specs.rb b/spec/support/shared_validator_specs.rb index 58a5c0a..16def0c 100644 --- a/spec/support/shared_validator_specs.rb +++ b/spec/support/shared_validator_specs.rb @@ -20,7 +20,6 @@ end shared_examples "a relayable validator" do it_behaves_like "a diaspora* ID validator" do let(:property) { :author } - let(:mandatory) { true } end describe "#guid" do @@ -74,16 +73,18 @@ shared_examples "a diaspora* ID validator" do [nil, ""].each do |val| validator = described_class.new(entity_stub(entity, property => val)) - if mandatory - expect(validator).not_to be_valid - expect(validator.errors).to include(property) - else - expect(validator).to be_valid - expect(validator.errors).to be_empty - end + expect(validator).not_to be_valid + expect(validator.errors).to include(property) end end + it "validates a well-formed diaspora* ID" do + validator = described_class.new(entity_stub(entity, property => "alice@example.org")) + + expect(validator).to be_valid + expect(validator.errors).to be_empty + end + it "must be a valid diaspora* ID" do validator = described_class.new(entity_stub(entity, property => "i am a weird diaspora* ID @@@ ### 12345"))