From 55052f83efa225dc030107ef6d3fe21666c3108a Mon Sep 17 00:00:00 2001 From: Gibheer Date: Sat, 1 Dec 2012 07:23:37 +0100 Subject: [PATCH] avoid changing existing environment keys --- lib/zero/request/parameter.rb | 10 ++++++++-- spec/unit/request/parameter/initialize_spec.rb | 12 ++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 spec/unit/request/parameter/initialize_spec.rb diff --git a/lib/zero/request/parameter.rb b/lib/zero/request/parameter.rb index a9a3abe..73e69e2 100644 --- a/lib/zero/request/parameter.rb +++ b/lib/zero/request/parameter.rb @@ -12,6 +12,8 @@ module Zero ENV_KEY_QUERY = 'QUERY_STRING' # the key for the payload ENV_KEY_PAYLOAD = 'rack.input' + # the key for custom parameters + ENV_KEY_CUSTOM = 'zero.params.custom' # the key for the content type ENV_KEY_CONTENT_TYPE = 'CONTENT_TYPE' # all content types which used for using the body as a parameter input @@ -40,8 +42,12 @@ module Zero def initialize(environment) @query = extract_query_params(environment) @payload = extract_payload_params(environment) - @custom = {} - environment['zero.params.custom'] = @custom + if environment.has_key?(ENV_KEY_CUSTOM) + @custom = environment[ENV_KEY_CUSTOM] + else + @custom = {} + environment[ENV_KEY_CUSTOM] = @custom + end end # get a parameter diff --git a/spec/unit/request/parameter/initialize_spec.rb b/spec/unit/request/parameter/initialize_spec.rb new file mode 100644 index 0000000..bc611b1 --- /dev/null +++ b/spec/unit/request/parameter/initialize_spec.rb @@ -0,0 +1,12 @@ +require 'spec_helper' + +describe Zero::Request::Parameter, '#initialize' do + subject { Zero::Request::Parameter.new(env) } + let(:env) { EnvGenerator.get('/get', { + 'zero.params.custom' => {'foo' => 'bar'} }) } + + it 'does not overwrite parameters' do + subject + expect(env['zero.params.custom']).to have_key('foo') + end +end