From b9b5ee6f7d4f08318c20f07cbdc8ba2ee3de928c Mon Sep 17 00:00:00 2001 From: cmrd Senya Date: Fri, 13 Nov 2015 17:02:41 +0300 Subject: [PATCH] Do the same generalization for Relayable for validators taking into account that "author_signature" and "parent_author_signature" are allowed to be empty, actually. --- lib/diaspora_federation/validators.rb | 1 + .../validators/comment_validator.rb | 6 +----- .../validators/like_validator.rb | 6 +----- .../validators/message_validator.rb | 6 +----- .../validators/participation_validator.rb | 6 +----- .../validators/poll_participation_validator.rb | 4 +--- .../validators/relayable_validator.rb | 11 +++++++++++ .../validators/comment_validator_spec.rb | 14 ++++---------- .../validators/like_validator_spec.rb | 14 ++++---------- .../validators/message_validator_spec.rb | 12 +++--------- .../validators/participation_validator_spec.rb | 18 ++++++++---------- .../poll_participation_validator_spec.rb | 10 +++------- spec/support/shared_validator_specs.rb | 8 ++++++++ 13 files changed, 47 insertions(+), 69 deletions(-) create mode 100644 lib/diaspora_federation/validators/relayable_validator.rb diff --git a/lib/diaspora_federation/validators.rb b/lib/diaspora_federation/validators.rb index 2f5a985..57e7ace 100644 --- a/lib/diaspora_federation/validators.rb +++ b/lib/diaspora_federation/validators.rb @@ -34,6 +34,7 @@ module DiasporaFederation end end +require "diaspora_federation/validators/relayable_validator" require "diaspora_federation/validators/h_card_validator" require "diaspora_federation/validators/person_validator" require "diaspora_federation/validators/profile_validator" diff --git a/lib/diaspora_federation/validators/comment_validator.rb b/lib/diaspora_federation/validators/comment_validator.rb index 9609dfb..da346e5 100644 --- a/lib/diaspora_federation/validators/comment_validator.rb +++ b/lib/diaspora_federation/validators/comment_validator.rb @@ -5,11 +5,7 @@ module DiasporaFederation rule :guid, :guid - rule :parent_guid, :guid - - rule :parent_author_signature, :not_empty - - rule :author_signature, :not_empty + include RelayableValidator rule :text, [:not_empty, length: {maximum: 65_535}] diff --git a/lib/diaspora_federation/validators/like_validator.rb b/lib/diaspora_federation/validators/like_validator.rb index 78b2a95..9f4d319 100644 --- a/lib/diaspora_federation/validators/like_validator.rb +++ b/lib/diaspora_federation/validators/like_validator.rb @@ -5,11 +5,7 @@ module DiasporaFederation rule :guid, :guid - rule :parent_guid, :guid - - rule :parent_author_signature, :not_empty - - rule :author_signature, :not_empty + include RelayableValidator rule :diaspora_id, %i(not_empty diaspora_id) end diff --git a/lib/diaspora_federation/validators/message_validator.rb b/lib/diaspora_federation/validators/message_validator.rb index 0e9f244..bf7b853 100644 --- a/lib/diaspora_federation/validators/message_validator.rb +++ b/lib/diaspora_federation/validators/message_validator.rb @@ -5,11 +5,7 @@ module DiasporaFederation rule :guid, :guid - rule :parent_guid, :guid - - rule :parent_author_signature, :not_empty - - rule :author_signature, :not_empty + include RelayableValidator rule :diaspora_id, %i(not_empty diaspora_id) diff --git a/lib/diaspora_federation/validators/participation_validator.rb b/lib/diaspora_federation/validators/participation_validator.rb index e51739b..28d96f7 100644 --- a/lib/diaspora_federation/validators/participation_validator.rb +++ b/lib/diaspora_federation/validators/participation_validator.rb @@ -7,11 +7,7 @@ module DiasporaFederation rule :target_type, :not_empty - rule :parent_guid, :guid - - rule :parent_author_signature, :not_empty - - rule :author_signature, :not_empty + include RelayableValidator rule :diaspora_id, %i(not_empty diaspora_id) end diff --git a/lib/diaspora_federation/validators/poll_participation_validator.rb b/lib/diaspora_federation/validators/poll_participation_validator.rb index d3b9306..44e5063 100644 --- a/lib/diaspora_federation/validators/poll_participation_validator.rb +++ b/lib/diaspora_federation/validators/poll_participation_validator.rb @@ -5,9 +5,7 @@ module DiasporaFederation rule :guid, :guid - rule :parent_guid, :guid - - rule :parent_author_signature, :not_empty + include RelayableValidator rule :diaspora_id, %i(not_empty diaspora_id) diff --git a/lib/diaspora_federation/validators/relayable_validator.rb b/lib/diaspora_federation/validators/relayable_validator.rb new file mode 100644 index 0000000..1f44781 --- /dev/null +++ b/lib/diaspora_federation/validators/relayable_validator.rb @@ -0,0 +1,11 @@ +module DiasporaFederation + module Validators + module RelayableValidator + def self.included(model) + model.class_eval do + rule :parent_guid, :guid + end + end + end + end +end diff --git a/spec/lib/diaspora_federation/validators/comment_validator_spec.rb b/spec/lib/diaspora_federation/validators/comment_validator_spec.rb index cad4627..755afcf 100644 --- a/spec/lib/diaspora_federation/validators/comment_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/comment_validator_spec.rb @@ -4,22 +4,16 @@ module DiasporaFederation it_behaves_like "a common validator" + it_behaves_like "a relayable validator" + it_behaves_like "a diaspora id validator" do let(:property) { :diaspora_id } let(:mandatory) { true } end - %i(guid parent_guid).each do |prop| + describe "#guid" do it_behaves_like "a guid validator" do - let(:property) { prop } - end - end - - %i(author_signature parent_author_signature).each do |prop| - describe "##{prop}" do - it_behaves_like "a property that mustn't be empty" do - let(:property) { prop } - end + let(:property) { :guid } end end diff --git a/spec/lib/diaspora_federation/validators/like_validator_spec.rb b/spec/lib/diaspora_federation/validators/like_validator_spec.rb index 798138b..c6fcb11 100644 --- a/spec/lib/diaspora_federation/validators/like_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/like_validator_spec.rb @@ -3,17 +3,11 @@ module DiasporaFederation let(:entity) { :like_entity } it_behaves_like "a common validator" - %i(guid parent_guid).each do |prop| - it_behaves_like "a guid validator" do - let(:property) { prop } - end - end + it_behaves_like "a relayable validator" - %i(author_signature parent_author_signature).each do |prop| - describe "##{prop}" do - it_behaves_like "a property that mustn't be empty" do - let(:property) { prop } - end + describe "#guid" do + it_behaves_like "a guid validator" do + let(:property) { :guid } end end diff --git a/spec/lib/diaspora_federation/validators/message_validator_spec.rb b/spec/lib/diaspora_federation/validators/message_validator_spec.rb index ea530b2..3cd6389 100644 --- a/spec/lib/diaspora_federation/validators/message_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/message_validator_spec.rb @@ -3,25 +3,19 @@ module DiasporaFederation let(:entity) { :message_entity } it_behaves_like "a common validator" + it_behaves_like "a relayable validator" + it_behaves_like "a diaspora id validator" do let(:property) { :diaspora_id } let(:mandatory) { true } end - %i(guid parent_guid conversation_guid).each do |prop| + %i(guid conversation_guid).each do |prop| describe "##{prop}" do it_behaves_like "a guid validator" do let(:property) { prop } end end end - - %i(author_signature parent_author_signature).each do |prop| - describe "##{prop}" do - it_behaves_like "a property that mustn't be empty" do - let(:property) { prop } - end - end - end end end diff --git a/spec/lib/diaspora_federation/validators/participation_validator_spec.rb b/spec/lib/diaspora_federation/validators/participation_validator_spec.rb index 285889b..0a1f451 100644 --- a/spec/lib/diaspora_federation/validators/participation_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/participation_validator_spec.rb @@ -4,24 +4,22 @@ module DiasporaFederation it_behaves_like "a common validator" + it_behaves_like "a relayable validator" + it_behaves_like "a diaspora id validator" do let(:property) { :diaspora_id } let(:mandatory) { true } end - %i(guid parent_guid).each do |prop| - describe "##{prop}" do - it_behaves_like "a guid validator" do - let(:property) { prop } - end + describe "#guid" do + it_behaves_like "a guid validator" do + let(:property) { :guid } end end - %i(target_type author_signature parent_author_signature).each do |prop| - describe "##{prop}" do - it_behaves_like "a property that mustn't be empty" do - let(:property) { prop } - end + describe "#target_type" do + it_behaves_like "a property that mustn't be empty" do + let(:property) { :target_type } end end end diff --git a/spec/lib/diaspora_federation/validators/poll_participation_validator_spec.rb b/spec/lib/diaspora_federation/validators/poll_participation_validator_spec.rb index 1ab876d..233bc5c 100644 --- a/spec/lib/diaspora_federation/validators/poll_participation_validator_spec.rb +++ b/spec/lib/diaspora_federation/validators/poll_participation_validator_spec.rb @@ -4,23 +4,19 @@ module DiasporaFederation it_behaves_like "a common validator" + it_behaves_like "a relayable validator" + it_behaves_like "a diaspora id validator" do let(:property) { :diaspora_id } let(:mandatory) { true } end - %i(guid parent_guid poll_answer_guid).each do |prop| + %i(guid poll_answer_guid).each do |prop| describe "##{prop}" do it_behaves_like "a guid validator" do let(:property) { prop } end end end - - describe "#parent_author_signature" do - it_behaves_like "a property that mustn't be empty" do - let(:property) { :parent_author_signature } - end - end end end diff --git a/spec/support/shared_validator_specs.rb b/spec/support/shared_validator_specs.rb index 579beb5..d075d0f 100644 --- a/spec/support/shared_validator_specs.rb +++ b/spec/support/shared_validator_specs.rb @@ -16,6 +16,14 @@ shared_examples "a common validator" do end end +shared_examples "a relayable validator" do + describe "#parent_guid" do + it_behaves_like "a guid validator" do + let(:property) { :parent_guid } + end + end +end + shared_examples "a property with a value validation/restriction" do it "fails if a wrong value is supplied" do wrong_values.each do |val|