From 06695610dd2ab37cbdb483de69d5e6eb4327530c Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Mon, 30 Nov 2015 00:28:20 +0100 Subject: [PATCH] write tests to have 100% coverage again --- lib/diaspora_federation/properties_dsl.rb | 2 - .../validators/rules/diaspora_id_count.rb | 2 +- spec/lib/diaspora_federation/signing_spec.rb | 12 +++- .../rules/diaspora_id_count_spec.rb | 63 ++++++++++++------- 4 files changed, 50 insertions(+), 29 deletions(-) diff --git a/lib/diaspora_federation/properties_dsl.rb b/lib/diaspora_federation/properties_dsl.rb index 35ea4ae..1013226 100644 --- a/lib/diaspora_federation/properties_dsl.rb +++ b/lib/diaspora_federation/properties_dsl.rb @@ -82,8 +82,6 @@ module DiasporaFederation type.first.entity_name.to_sym elsif type.ancestors.include?(Entity) type.entity_name.to_sym - else - raise ArgumentError, "unknown type #{type} supplied" end end diff --git a/lib/diaspora_federation/validators/rules/diaspora_id_count.rb b/lib/diaspora_federation/validators/rules/diaspora_id_count.rb index 025ceda..649697a 100644 --- a/lib/diaspora_federation/validators/rules/diaspora_id_count.rb +++ b/lib/diaspora_federation/validators/rules/diaspora_id_count.rb @@ -9,7 +9,7 @@ module Validation # @option params [Fixnum] :maximum maximum allowed id count def initialize(params) unless params.include?(:maximum) && params[:maximum].is_a?(Fixnum) - raise "A number has to be specified for :maximum" + raise ArgumentError, "A number has to be specified for :maximum" end @params = params diff --git a/spec/lib/diaspora_federation/signing_spec.rb b/spec/lib/diaspora_federation/signing_spec.rb index 3c776e2..390a1ed 100644 --- a/spec/lib/diaspora_federation/signing_spec.rb +++ b/spec/lib/diaspora_federation/signing_spec.rb @@ -49,11 +49,19 @@ RSA describe ".verify_signature" do it "verifies correct signature" do - expect(Signing.verify_signature(hash, signature, pkey)).to be_truthy + expect(Signing.verify_signature(hash, signature, pkey.public_key)).to be_truthy end it "doesn't verify wrong signature" do - expect(Signing.verify_signature(hash, "false signature==", pkey)).to be_falsy + expect(Signing.verify_signature(hash, "false signature==", pkey.public_key)).to be_falsy + end + + it "doesn't verify when signature is missing" do + expect(Signing.verify_signature(hash, nil, pkey.public_key)).to be_falsy + end + + it "doesn't verify when public key is missing" do + expect(Signing.verify_signature(hash, signature, nil)).to be_falsy end end end diff --git a/spec/lib/diaspora_federation/validators/rules/diaspora_id_count_spec.rb b/spec/lib/diaspora_federation/validators/rules/diaspora_id_count_spec.rb index 7e8ca66..28525f2 100644 --- a/spec/lib/diaspora_federation/validators/rules/diaspora_id_count_spec.rb +++ b/spec/lib/diaspora_federation/validators/rules/diaspora_id_count_spec.rb @@ -8,36 +8,51 @@ describe Validation::Rule::DiasporaIdCount do }.to raise_error ArgumentError end - it "validates less ids" do - validator = Validation::Validator.new(OpenStruct.new(ids: id_str)) - validator.rule(:ids, diaspora_id_count: {maximum: 5}) - - expect(validator).to be_valid - expect(validator.errors).to be_empty + it "requires a integer as parameter" do + validator = Validation::Validator.new({}) + [nil, "", 5.5].each do |val| + expect { + validator.rule(:ids, diaspora_id_count: {maximum: val}) + }.to raise_error ArgumentError, "A number has to be specified for :maximum" + end end - it "fails for less but non ids" do - bad_str = "user@example.com;i am a weird diaspora id @@@ ### 12345;shouldnt be reached by a rule" - validator = Validation::Validator.new(OpenStruct.new(ids: bad_str)) - validator.rule(:ids, diaspora_id_count: {maximum: 5}) - - expect(validator).not_to be_valid - expect(validator.errors).to include(:ids) + it "has an error key" do + expect(described_class.new(maximum: 5).error_key).to eq(:diaspora_id_count) end - it "validates exactly as many ids" do - validator = Validation::Validator.new(OpenStruct.new(ids: id_str)) - validator.rule(:ids, diaspora_id_count: {maximum: 3}) + context "validation" do + it "validates less ids" do + validator = Validation::Validator.new(OpenStruct.new(ids: id_str)) + validator.rule(:ids, diaspora_id_count: {maximum: 5}) - expect(validator).to be_valid - expect(validator.errors).to be_empty - end + expect(validator).to be_valid + expect(validator.errors).to be_empty + end - it "fails for too many ids" do - validator = Validation::Validator.new(OpenStruct.new(ids: id_str)) - validator.rule(:ids, diaspora_id_count: {maximum: 1}) + it "fails for less but non ids" do + bad_str = "user@example.com;i am a weird diaspora id @@@ ### 12345;shouldnt be reached by a rule" + validator = Validation::Validator.new(OpenStruct.new(ids: bad_str)) + validator.rule(:ids, diaspora_id_count: {maximum: 5}) - expect(validator).not_to be_valid - expect(validator.errors).to include(:ids) + expect(validator).not_to be_valid + expect(validator.errors).to include(:ids) + end + + it "validates exactly as many ids" do + validator = Validation::Validator.new(OpenStruct.new(ids: id_str)) + validator.rule(:ids, diaspora_id_count: {maximum: 3}) + + expect(validator).to be_valid + expect(validator.errors).to be_empty + end + + it "fails for too many ids" do + validator = Validation::Validator.new(OpenStruct.new(ids: id_str)) + validator.rule(:ids, diaspora_id_count: {maximum: 1}) + + expect(validator).not_to be_valid + expect(validator.errors).to include(:ids) + end end end