From f7d269cd6a4c1b48a7b34083f5fea04ac0835a48 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sat, 9 Jul 2016 19:30:05 +0200 Subject: [PATCH] a guid is at most 255 chars long. --- lib/diaspora_federation/validators/rules/guid.rb | 4 ++-- .../lib/diaspora_federation/validators/rules/guid_spec.rb | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/diaspora_federation/validators/rules/guid.rb b/lib/diaspora_federation/validators/rules/guid.rb index 63f1224..e006e8d 100644 --- a/lib/diaspora_federation/validators/rules/guid.rb +++ b/lib/diaspora_federation/validators/rules/guid.rb @@ -2,7 +2,7 @@ module Validation module Rule # GUID validation rule # - # Valid is a +String+ that is at least 16 chars long and contains only: + # Valid is a +String+ that is at least 16 and at most 255 chars long. It contains only: # * Letters: a-z # * Numbers: 0-9 # * Special chars: '-', '_', '@', '.' and ':' @@ -30,7 +30,7 @@ module Validation # Determines if value is a valid +GUID+ def valid_value?(value) - params[:nilable] && value.nil? || value.is_a?(String) && value.downcase =~ /\A[0-9a-z\-_@.:]{16,}\z/ + params[:nilable] && value.nil? || value.is_a?(String) && value.downcase =~ /\A[0-9a-z\-_@.:]{16,255}\z/ end end end diff --git a/spec/lib/diaspora_federation/validators/rules/guid_spec.rb b/spec/lib/diaspora_federation/validators/rules/guid_spec.rb index c64f849..25d87dc 100644 --- a/spec/lib/diaspora_federation/validators/rules/guid_spec.rb +++ b/spec/lib/diaspora_federation/validators/rules/guid_spec.rb @@ -61,6 +61,14 @@ describe Validation::Rule::Guid do expect(validator.errors).to include(:guid) end + it "fails if the string is too long" do + validator = Validation::Validator.new(OpenStruct.new(guid: "a" * 256)) + validator.rule(:guid, :guid) + + expect(validator).not_to be_valid + expect(validator.errors).to include(:guid) + end + it "fails if the string contains invalid chars" do validator = Validation::Validator.new(OpenStruct.new(guid: "ghijklmnopqrstuvwxyz++")) validator.rule(:guid, :guid)