From a1c9998d406cfb0e255e727843fde3ff35769522 Mon Sep 17 00:00:00 2001 From: cmrd Senya Date: Wed, 4 Jan 2017 06:25:23 +0300 Subject: [PATCH] fix boolean pattern parse --- lib/diaspora_federation/entity.rb | 4 +-- spec/entities.rb | 4 +++ spec/lib/diaspora_federation/entity_spec.rb | 28 +++++++++++++++------ 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/lib/diaspora_federation/entity.rb b/lib/diaspora_federation/entity.rb index 3d8b74d..ff64e4c 100644 --- a/lib/diaspora_federation/entity.rb +++ b/lib/diaspora_federation/entity.rb @@ -319,8 +319,8 @@ module DiasporaFederation when :integer text.to_i if text =~ /^\d+$/ when :boolean - return true if text =~ /(true|t|yes|y|1)$/i - false if text =~ /(false|f|no|n|0)$/i + return true if text =~ /^(true|t|yes|y|1)$/i + false if text =~ /^(false|f|no|n|0)$/i else text end diff --git a/spec/entities.rb b/spec/entities.rb index 18f743e..1a73acc 100644 --- a/spec/entities.rb +++ b/spec/entities.rb @@ -34,6 +34,10 @@ module DiasporaFederation class Entity < DiasporaFederation::Entity property :test, :string end + + class TestEntityWithBoolean < DiasporaFederation::Entity + property :test, :boolean + end end module Validators diff --git a/spec/lib/diaspora_federation/entity_spec.rb b/spec/lib/diaspora_federation/entity_spec.rb index 1d1df67..352ac6f 100644 --- a/spec/lib/diaspora_federation/entity_spec.rb +++ b/spec/lib/diaspora_federation/entity_spec.rb @@ -195,16 +195,28 @@ XML it "parses boolean fields with false value" do xml = <<-XML.strip - - qwer - qwer - false - + + false + XML - entity = Entities::TestDefaultEntity.from_xml(Nokogiri::XML::Document.parse(xml).root) - expect(entity).to be_an_instance_of Entities::TestDefaultEntity - expect(entity.test3).to eq(false) + entity = Entities::TestEntityWithBoolean.from_xml(Nokogiri::XML::Document.parse(xml).root) + expect(entity).to be_an_instance_of Entities::TestEntityWithBoolean + expect(entity.test).to eq(false) + end + + it "parses boolean fields with a randomly matching pattern as erroneous" do + %w(ttFFFtt yesFFDSFSDy noDFDSFFDFn fXf LLyes).each do |weird_value| + xml = <<-XML.strip + + #{weird_value} + +XML + + expect { + Entities::TestEntityWithBoolean.from_xml(Nokogiri::XML::Document.parse(xml).root) + }.to raise_error Entity::ValidationError, "missing required properties: test" + end end end