From 4a7fd528446ea9870addff7c6856972b7cfe319b Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sat, 12 Mar 2016 20:04:21 +0100 Subject: [PATCH] don't modify the parameter string in `Entity.entity_class` --- lib/diaspora_federation/entity.rb | 8 ++++---- spec/lib/diaspora_federation/entity_spec.rb | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/diaspora_federation/entity.rb b/lib/diaspora_federation/entity.rb index 7e12bae..c2246a3 100644 --- a/lib/diaspora_federation/entity.rb +++ b/lib/diaspora_federation/entity.rb @@ -119,11 +119,11 @@ module DiasporaFederation # # @see .entity_name # - # @param [String] class_name "snake_case" class name + # @param [String] entity_name "snake_case" class name # @return [Class] entity class - def self.entity_class(class_name) - raise InvalidEntityName, "'#{class_name}' is invalid" unless class_name =~ /^[a-z]*(_[a-z]*)*$/ - class_name.sub!(/^[a-z]/, &:upcase) + def self.entity_class(entity_name) + raise InvalidEntityName, "'#{entity_name}' is invalid" unless entity_name =~ /^[a-z]*(_[a-z]*)*$/ + class_name = entity_name.sub(/^[a-z]/, &:upcase) class_name.gsub!(/_([a-z])/) { Regexp.last_match[1].upcase } raise UnknownEntity, "'#{class_name}' not found" unless Entities.const_defined?(class_name) diff --git a/spec/lib/diaspora_federation/entity_spec.rb b/spec/lib/diaspora_federation/entity_spec.rb index c9eec4a..9097ef9 100644 --- a/spec/lib/diaspora_federation/entity_spec.rb +++ b/spec/lib/diaspora_federation/entity_spec.rb @@ -211,6 +211,12 @@ XML expect(Entity.entity_class("test_entity")).to eq(Entities::TestEntity) end + it "should not change the input string" do + entity_name = "test_entity" + Entity.entity_class(entity_name) + expect(entity_name).to eq("test_entity") + end + it "raises an error when the entity name contains special characters" do expect { Entity.entity_class("te.st-enti/ty")