sinatra-strong-params 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d7e198ec2d712488f1d5ae9e05c578e7a0cf52da
4
- data.tar.gz: 6ed634ad02a939f12ddb34af2851e8f248ae8df4
3
+ metadata.gz: 2a395072291663098a8c4e241b4488bacc8e25f1
4
+ data.tar.gz: abb9249d19214474b81d7099e67ac6ba833260b9
5
5
  SHA512:
6
- metadata.gz: b9aa465bc866fababaa1f807f6bc04397a139a531dc3714e3c6ca4847bb533eb1c3f313a90132b3d4fdd4089a15dd7b99a6fc69a18b7b2a4f739064c631dce49
7
- data.tar.gz: 929441a2c4be7f6954f985e3ead0f9ae853862d6922f405175b2adab91169aef82e37acc6bc68dee68695881d59db0b65fb3d6ffb3091c8bd0c5101bacb6c333
6
+ metadata.gz: 4d6a12f59264e4c74e5580049d9ae7217ba9da4f40ca70d2c902fd50a34337729ad11bd6ded8be465c5518872869b60689f5bc7a36c217e5a9a4174d6580845a
7
+ data.tar.gz: 70e7dc32a003c0f82f59a06d0e078173afb395490d9bcb03d1ce4d6c1a5926b5c8acecab639838625a9d3530a417a8c841031a8fc7f9282dac59745bc433f56f
data/Rakefile CHANGED
@@ -1,2 +1,13 @@
1
- require "bundler/gem_tasks"
1
+ # encoding: UTF-8
2
+ # frozen_string_literal: true
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
2
5
 
6
+ namespace :test do
7
+ desc 'Run the specs'
8
+ task :spec do
9
+ RSpec::Core::RakeTask.new('test:spec')
10
+ end
11
+ end
12
+
13
+ task :default => 'test:spec'
@@ -1,3 +1,5 @@
1
+ # encoding: UTF-8
2
+ # frozen_string_literal: true
1
3
  require 'sinatra/base'
2
4
  require 'sinatra/strong-params/version'
3
5
 
@@ -23,10 +25,15 @@ module Sinatra
23
25
  globals = settings.globally_allowed_parameters
24
26
  passable = (globals | passable).map(&:to_sym) # make sure it's a symbol
25
27
 
26
- # trim the params down
28
+ # Select only the allowed parameters.
27
29
  @params = @params.select do |param, _value|
28
30
  passable.include?(param.to_sym)
29
31
  end
32
+
33
+ # Copy Sinatra's default proc to allow indifferent access.
34
+ @params.tap do |params|
35
+ params.default_proc = @_params.default_proc.dup rescue nil
36
+ end
30
37
  end
31
38
  end
32
39
  end
@@ -1,5 +1,7 @@
1
+ # encoding: UTF-8
2
+ # frozen_string_literal: true
1
3
  module Sinatra
2
4
  module StrongParams
3
- VERSION = '0.0.2'
5
+ VERSION = '0.0.3'
4
6
  end
5
7
  end
@@ -1,24 +1,28 @@
1
- # coding: utf-8
2
- $:.unshift File.expand_path("../lib", __FILE__)
1
+ # encoding: UTF-8
2
+ # frozen_string_literal: true
3
+ $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
4
+
3
5
  require 'sinatra/strong-params/version'
4
6
 
5
7
  Gem::Specification.new do |spec|
6
- spec.name = "sinatra-strong-params"
8
+ spec.name = 'sinatra-strong-params'
7
9
  spec.version = Sinatra::StrongParams::VERSION
8
- spec.authors = ["Evan Lecklider"]
9
- spec.email = ["evan@lecklider.com"]
10
- spec.summary = %q{Some super basic strong parameter filters for Sinatra.}
10
+ spec.authors = ['Evan Lecklider']
11
+ spec.email = ['evan@lecklider.com']
12
+ spec.summary = 'Some super basic strong parameter filters for Sinatra.'
11
13
  spec.description = spec.summary
12
- spec.homepage = ""
13
- spec.license = "MIT"
14
+ spec.homepage = 'https://github.com/evanleck/sinatra-strong-params'
15
+ spec.license = 'MIT'
14
16
 
15
17
  spec.files = `git ls-files -z`.split("\x0")
16
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
- spec.require_paths = ["lib"]
20
+ spec.require_paths = ['lib']
19
21
 
20
22
  spec.add_dependency 'sinatra', '>= 1.4.0'
21
23
 
22
- spec.add_development_dependency "bundler", "~> 1.6"
23
- spec.add_development_dependency "rake"
24
+ spec.add_development_dependency 'bundler'
25
+ spec.add_development_dependency 'rake'
26
+ spec.add_development_dependency 'rspec'
27
+ spec.add_development_dependency 'rack-test'
24
28
  end
@@ -0,0 +1,11 @@
1
+ # encoding: UTF-8
2
+ # frozen_string_literal: true
3
+ ENV['RACK_ENV'] = 'test'
4
+
5
+ require 'rspec'
6
+ require_relative 'test_helper'
7
+
8
+ RSpec.configure do |config|
9
+ config.mock_framework = :rspec
10
+ config.include TestHelper
11
+ end
@@ -0,0 +1,97 @@
1
+ # encoding: UTF-8
2
+ # frozen_string_literal: true
3
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
4
+
5
+ require_relative 'spec_helper'
6
+ require 'json'
7
+ require 'sinatra/strong-params'
8
+
9
+ describe Sinatra::StrongParams do
10
+ context "using allows filter" do
11
+ context "with no nested params" do
12
+ let(:request_params) { { id: 'id', action: 'action', not_allows: 'not_allows' } }
13
+
14
+ it 'supports accessing params with string keys' do
15
+ actual_params = nil
16
+ mock_app do
17
+ register Sinatra::StrongParams
18
+ get '/', allows: [:id, :action] { actual_params = params }
19
+ end
20
+
21
+ get '/', request_params
22
+ expect(actual_params['id']).to eq request_params[:id]
23
+ expect(actual_params['action']).to eq request_params[:action]
24
+ expect(actual_params['not_allows']).to eq nil
25
+ end
26
+
27
+ it 'supports accessing params with symbol keys' do
28
+ actual_params = nil
29
+ mock_app do
30
+ register Sinatra::StrongParams
31
+ get '/', allows: [:id, :action] { actual_params = params }
32
+ end
33
+
34
+ get '/', request_params
35
+ expect(actual_params[:id]).to eq request_params[:id]
36
+ expect(actual_params[:action]).to eq request_params[:action]
37
+ expect(actual_params[:not_allows]).to eq nil
38
+ end
39
+ end
40
+
41
+ context "with nested params" do
42
+ let(:request_params) { { id: [ { in_array: 'in_array'} ], action: { nested_hash: 'nested_hash'} }}
43
+
44
+ it 'supports accessing params with string keys' do
45
+ actual_params = nil
46
+ mock_app do
47
+ register Sinatra::StrongParams
48
+ get '/', allows: [:id, :action] { actual_params = params }
49
+ end
50
+
51
+ get '/', request_params
52
+ expect(actual_params['id'][0]['in_array']).to eq request_params[:id][0][:in_array]
53
+ expect(actual_params['action']['nested_hash']).to eq request_params[:action][:nested_hash]
54
+ end
55
+
56
+ it 'supports accessing params with symbol keys' do
57
+ actual_params = nil
58
+ mock_app do
59
+ register Sinatra::StrongParams
60
+ get '/', allows: [:id, :action] { actual_params = params }
61
+ end
62
+
63
+ get '/', request_params
64
+ expect(actual_params[:id][0][:in_array]).to eq request_params[:id][0][:in_array]
65
+ expect(actual_params[:action][:nested_hash]).to eq request_params[:action][:nested_hash]
66
+ end
67
+ end
68
+ end
69
+
70
+ context "using needs filter" do
71
+ it 'supports accessing params with string keys' do
72
+ actual_params = nil
73
+ mock_app do
74
+ register Sinatra::StrongParams
75
+ get '/', needs: [:id, :action] { actual_params = params }
76
+ end
77
+ params = { id: 'id', action: 'action' }
78
+
79
+ get '/', params
80
+ expect(actual_params['id']).to eq params[:id]
81
+ expect(actual_params['action']).to eq params[:action]
82
+ end
83
+
84
+ it 'supports accessing params with symbol keys' do
85
+ actual_params = nil
86
+ mock_app do
87
+ register Sinatra::StrongParams
88
+ get '/', needs: [:id, :action] { actual_params = params }
89
+ end
90
+ params = { id: 'id', action: 'action' }
91
+
92
+ get '/', params
93
+ expect(actual_params[:id]).to eq params[:id]
94
+ expect(actual_params[:action]).to eq params[:action]
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,21 @@
1
+ # encoding: UTF-8
2
+ # frozen_string_literal: true
3
+ require 'rack/test'
4
+
5
+ module TestHelper
6
+ include Rack::Test::Methods
7
+
8
+ def mock_app(&block)
9
+ @app = Sinatra.new(Sinatra::Base) do
10
+ class_eval(&block)
11
+ end
12
+ end
13
+
14
+ def app
15
+ @app
16
+ end
17
+
18
+ def json
19
+ JSON.parse(last_response.body, :symbolize_names => true)
20
+ end
21
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-strong-params
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evan Lecklider
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-11 00:00:00.000000000 Z
11
+ date: 2017-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sinatra
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '1.6'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '1.6'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rack-test
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  description: Some super basic strong parameter filters for Sinatra.
56
84
  email:
57
85
  - evan@lecklider.com
@@ -67,7 +95,10 @@ files:
67
95
  - lib/sinatra/strong-params.rb
68
96
  - lib/sinatra/strong-params/version.rb
69
97
  - sinatra-strong-params.gemspec
70
- homepage: ''
98
+ - spec/spec_helper.rb
99
+ - spec/strong-params_spec.rb
100
+ - spec/test_helper.rb
101
+ homepage: https://github.com/evanleck/sinatra-strong-params
71
102
  licenses:
72
103
  - MIT
73
104
  metadata: {}
@@ -87,8 +118,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
87
118
  version: '0'
88
119
  requirements: []
89
120
  rubyforge_project:
90
- rubygems_version: 2.4.8
121
+ rubygems_version: 2.6.10
91
122
  signing_key:
92
123
  specification_version: 4
93
124
  summary: Some super basic strong parameter filters for Sinatra.
94
- test_files: []
125
+ test_files:
126
+ - spec/spec_helper.rb
127
+ - spec/strong-params_spec.rb
128
+ - spec/test_helper.rb