weak_parameters 0.4.0 → 0.4.1
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 +4 -4
- data/CHANGELOG.md +3 -0
- data/lib/weak_parameters.rb +1 -0
- data/lib/weak_parameters/version.rb +1 -1
- data/spec/dummy/app/controllers/api/recipes_controller.rb +5 -0
- data/spec/dummy/app/controllers/api/strongs_controller.rb +5 -0
- data/spec/dummy/app/controllers/api_controller.rb +5 -0
- data/spec/dummy/app/controllers/concerns/with_recipe.rb +47 -0
- data/spec/dummy/app/controllers/concerns/with_strong.rb +61 -0
- data/spec/dummy/app/controllers/recipes_controller.rb +1 -41
- data/spec/dummy/app/controllers/strongs_controller.rb +1 -55
- data/spec/dummy/config/routes.rb +5 -0
- data/spec/requests/api/recipes_spec.rb +188 -0
- data/spec/requests/api/strong_spec.rb +100 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc43dbf15b3f5fe477fe58c0788a80aa036317f5
|
4
|
+
data.tar.gz: d6a24136ebea5ade178a61d4555e376128d95432
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b716fa12192074d863010d6b25369e1d00ec03571ae7e4872f40bba877373f1964f670790518f51a640ccac0bb742e53206625a77f9ea0a639de67b49a7452c
|
7
|
+
data.tar.gz: 6f8a71f1741499f9f0acde74dc8f0ea6a1fbb673679beaf8101c7a314f674d5c90f87a3731b83bd37994994d936d8d5bc85b623d2f0d61ed88d4b505dc862f3d
|
data/CHANGELOG.md
CHANGED
data/lib/weak_parameters.rb
CHANGED
@@ -57,6 +57,7 @@ module WeakParameters
|
|
57
57
|
initializer 'weak_parameters' do
|
58
58
|
ActiveSupport.on_load :action_controller do
|
59
59
|
ActionController::Base.extend WeakParameters::Controller
|
60
|
+
ActionController::API.extend WeakParameters::Controller if Object.const_defined?('ActionController::API')
|
60
61
|
end
|
61
62
|
end
|
62
63
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module WithRecipe
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
included do
|
5
|
+
validates :create do
|
6
|
+
any :object
|
7
|
+
string :name, required: true, except: %w[invalid wrong]
|
8
|
+
integer :type, only: 0..3
|
9
|
+
integer :number, only: [0, 1]
|
10
|
+
boolean :flag
|
11
|
+
hash :config
|
12
|
+
array :tags
|
13
|
+
float :rate
|
14
|
+
file :attachment
|
15
|
+
integer :custom, only: 0..1, handler: :render_error
|
16
|
+
string :zip_code do |value|
|
17
|
+
zip_pattern(value)
|
18
|
+
end
|
19
|
+
object :nested, required: true do
|
20
|
+
integer :number, only: [0, 1]
|
21
|
+
end
|
22
|
+
|
23
|
+
list :numbers, :integer, description: 'some numbers'
|
24
|
+
|
25
|
+
object :body do
|
26
|
+
list :items, :object, description: 'some items' do
|
27
|
+
string :name
|
28
|
+
integer :price
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def create
|
35
|
+
head 201
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def render_error
|
41
|
+
head 403
|
42
|
+
end
|
43
|
+
|
44
|
+
def zip_pattern(value)
|
45
|
+
value =~ /\A\d{3}-\d{4}\z/
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module WithStrong
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
included do
|
5
|
+
validates :create do
|
6
|
+
any :object
|
7
|
+
any :strong_object, strong: true
|
8
|
+
string :name, required: true, except: %w[invalid wrong]
|
9
|
+
string :strong_name, required: true, strong: true, except: %w[invalid wrong]
|
10
|
+
integer :type, only: 0..3
|
11
|
+
integer :strong_type, strong: true, only: 0..3
|
12
|
+
integer :number, only: [0, 1]
|
13
|
+
integer :strong_number, strong: true, only: [0, 1]
|
14
|
+
boolean :flag
|
15
|
+
boolean :strong_flag, strong: true
|
16
|
+
hash :config
|
17
|
+
hash :strong_config, strong: true
|
18
|
+
array :tags
|
19
|
+
array :strong_tags, strong: true
|
20
|
+
float :rate
|
21
|
+
float :strong_rate, strong: true
|
22
|
+
file :attachment
|
23
|
+
file :strong_attachment, strong: true
|
24
|
+
integer :custom, only: 0..1, handler: :render_error
|
25
|
+
integer :strong_custom, strong: true, only: 0..1, handler: :render_error
|
26
|
+
string :zip_code do |value|
|
27
|
+
value =~ /\A\d{3}-\d{4}\z/
|
28
|
+
end
|
29
|
+
string :strong_zip_code, strong: true do |value|
|
30
|
+
value =~ /\A\d{3}-\d{4}\z/
|
31
|
+
end
|
32
|
+
object :nested, required: true do
|
33
|
+
integer :number, only: [0, 1]
|
34
|
+
end
|
35
|
+
object :strong_nested, required: true do
|
36
|
+
integer :strong_number, strong: true, only: [0, 1]
|
37
|
+
end
|
38
|
+
|
39
|
+
list :numbers, :integer, description: 'some numbers'
|
40
|
+
|
41
|
+
list :strong_numbers, :integer, strong: true, description: 'some numbers'
|
42
|
+
|
43
|
+
object :strong_body do
|
44
|
+
list :items, :object, description: 'some items' do
|
45
|
+
string :name
|
46
|
+
integer :strong_price, strong: true
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def create
|
53
|
+
head 201
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def render_error
|
59
|
+
head 403
|
60
|
+
end
|
61
|
+
end
|
@@ -1,43 +1,3 @@
|
|
1
1
|
class RecipesController < ApplicationController
|
2
|
-
|
3
|
-
any :object
|
4
|
-
string :name, required: true, except: %w[invalid wrong]
|
5
|
-
integer :type, only: 0..3
|
6
|
-
integer :number, only: [0, 1]
|
7
|
-
boolean :flag
|
8
|
-
hash :config
|
9
|
-
array :tags
|
10
|
-
float :rate
|
11
|
-
file :attachment
|
12
|
-
integer :custom, only: 0..1, handler: :render_error
|
13
|
-
string :zip_code do |value|
|
14
|
-
zip_pattern(value)
|
15
|
-
end
|
16
|
-
object :nested, required: true do
|
17
|
-
integer :number, only: [0, 1]
|
18
|
-
end
|
19
|
-
|
20
|
-
list :numbers, :integer, description: 'some numbers'
|
21
|
-
|
22
|
-
object :body do
|
23
|
-
list :items, :object, description: 'some items' do
|
24
|
-
string :name
|
25
|
-
integer :price
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def create
|
31
|
-
head 201
|
32
|
-
end
|
33
|
-
|
34
|
-
private
|
35
|
-
|
36
|
-
def render_error
|
37
|
-
head 403
|
38
|
-
end
|
39
|
-
|
40
|
-
def zip_pattern(value)
|
41
|
-
value =~ /\A\d{3}-\d{4}\z/
|
42
|
-
end
|
2
|
+
include WithRecipe
|
43
3
|
end
|
@@ -1,57 +1,3 @@
|
|
1
1
|
class StrongsController < ApplicationController
|
2
|
-
|
3
|
-
any :object
|
4
|
-
any :strong_object, strong: true
|
5
|
-
string :name, required: true, except: %w[invalid wrong]
|
6
|
-
string :strong_name, required: true, strong: true, except: %w[invalid wrong]
|
7
|
-
integer :type, only: 0..3
|
8
|
-
integer :strong_type, strong: true, only: 0..3
|
9
|
-
integer :number, only: [0, 1]
|
10
|
-
integer :strong_number, strong: true, only: [0, 1]
|
11
|
-
boolean :flag
|
12
|
-
boolean :strong_flag, strong: true
|
13
|
-
hash :config
|
14
|
-
hash :strong_config, strong: true
|
15
|
-
array :tags
|
16
|
-
array :strong_tags, strong: true
|
17
|
-
float :rate
|
18
|
-
float :strong_rate, strong: true
|
19
|
-
file :attachment
|
20
|
-
file :strong_attachment, strong: true
|
21
|
-
integer :custom, only: 0..1, handler: :render_error
|
22
|
-
integer :strong_custom, strong: true, only: 0..1, handler: :render_error
|
23
|
-
string :zip_code do |value|
|
24
|
-
value =~ /\A\d{3}-\d{4}\z/
|
25
|
-
end
|
26
|
-
string :strong_zip_code, strong: true do |value|
|
27
|
-
value =~ /\A\d{3}-\d{4}\z/
|
28
|
-
end
|
29
|
-
object :nested, required: true do
|
30
|
-
integer :number, only: [0, 1]
|
31
|
-
end
|
32
|
-
object :strong_nested, required: true do
|
33
|
-
integer :strong_number, strong: true, only: [0, 1]
|
34
|
-
end
|
35
|
-
|
36
|
-
list :numbers, :integer, description: 'some numbers'
|
37
|
-
|
38
|
-
list :strong_numbers, :integer, strong: true, description: 'some numbers'
|
39
|
-
|
40
|
-
object :strong_body do
|
41
|
-
list :items, :object, description: 'some items' do
|
42
|
-
string :name
|
43
|
-
integer :strong_price, strong: true
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def create
|
49
|
-
head 201
|
50
|
-
end
|
51
|
-
|
52
|
-
private
|
53
|
-
|
54
|
-
def render_error
|
55
|
-
head 403
|
56
|
-
end
|
2
|
+
include WithStrong
|
57
3
|
end
|
data/spec/dummy/config/routes.rb
CHANGED
@@ -0,0 +1,188 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "Recipes with rails-api", type: :request do
|
4
|
+
let(:params) do
|
5
|
+
{
|
6
|
+
object: [],
|
7
|
+
name: "name",
|
8
|
+
number: 0,
|
9
|
+
type: 1,
|
10
|
+
flag: true,
|
11
|
+
config: {},
|
12
|
+
tags: [],
|
13
|
+
attachment: Rack::Test::UploadedFile.new(__FILE__),
|
14
|
+
zip_code: "123-4567",
|
15
|
+
custom: 0,
|
16
|
+
nested: {
|
17
|
+
number: 0
|
18
|
+
},
|
19
|
+
numbers: [1, 2, 3],
|
20
|
+
body: {
|
21
|
+
items: [
|
22
|
+
{ name: "foo", price: 100 },
|
23
|
+
{ name: "bar", price: 100 }
|
24
|
+
]
|
25
|
+
}
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
shared_examples_for "400" do
|
30
|
+
it "returns 400" do
|
31
|
+
post "/api/recipes", params: params
|
32
|
+
expect(response.status).to eq(400)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
shared_examples_for "201" do
|
37
|
+
it "creates a new recipe" do
|
38
|
+
post "/api/recipes", params: params
|
39
|
+
expect(response.status).to eq(201)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "POST /api/recipes" do
|
44
|
+
context "without required param" do
|
45
|
+
before do
|
46
|
+
params.delete(:name)
|
47
|
+
end
|
48
|
+
include_examples "400"
|
49
|
+
end
|
50
|
+
|
51
|
+
context "with wrong string param" do
|
52
|
+
before do
|
53
|
+
params[:name] = ["x"]
|
54
|
+
end
|
55
|
+
include_examples "400"
|
56
|
+
end
|
57
|
+
|
58
|
+
context "with wrong integer param" do
|
59
|
+
before do
|
60
|
+
params[:type] = "x"
|
61
|
+
end
|
62
|
+
include_examples "400"
|
63
|
+
end
|
64
|
+
|
65
|
+
context "with exceptional interger param" do
|
66
|
+
before do
|
67
|
+
params[:number] = [1]
|
68
|
+
end
|
69
|
+
include_examples "400"
|
70
|
+
end
|
71
|
+
|
72
|
+
context "with wrong boolean param" do
|
73
|
+
before do
|
74
|
+
params[:flag] = "x"
|
75
|
+
end
|
76
|
+
include_examples "400"
|
77
|
+
end
|
78
|
+
|
79
|
+
context "with wrong array param" do
|
80
|
+
before do
|
81
|
+
params[:tags] = "x"
|
82
|
+
end
|
83
|
+
include_examples "400"
|
84
|
+
end
|
85
|
+
|
86
|
+
context "with wrong hash param" do
|
87
|
+
before do
|
88
|
+
params[:config] = "x"
|
89
|
+
end
|
90
|
+
include_examples "400"
|
91
|
+
end
|
92
|
+
|
93
|
+
context "with wrong float param" do
|
94
|
+
before do
|
95
|
+
params[:rate] = "-x"
|
96
|
+
end
|
97
|
+
include_examples "400"
|
98
|
+
end
|
99
|
+
|
100
|
+
context "with wrong file param" do
|
101
|
+
before do
|
102
|
+
params[:attachment] = "x"
|
103
|
+
end
|
104
|
+
include_examples "400"
|
105
|
+
end
|
106
|
+
|
107
|
+
context "with block failure" do
|
108
|
+
before do
|
109
|
+
params[:zip_code] = "123-456"
|
110
|
+
end
|
111
|
+
include_examples "400"
|
112
|
+
end
|
113
|
+
|
114
|
+
context "with invalid param to :only condition" do
|
115
|
+
before do
|
116
|
+
params[:type] = 4
|
117
|
+
end
|
118
|
+
include_examples "400"
|
119
|
+
end
|
120
|
+
|
121
|
+
context "with invalid param to :except condition" do
|
122
|
+
before do
|
123
|
+
params[:name] = "invalid"
|
124
|
+
end
|
125
|
+
include_examples "400"
|
126
|
+
end
|
127
|
+
|
128
|
+
context "without non-required param" do
|
129
|
+
before do
|
130
|
+
params.delete(:type)
|
131
|
+
end
|
132
|
+
include_examples "201"
|
133
|
+
end
|
134
|
+
|
135
|
+
context "with valid condition", :autodoc do
|
136
|
+
include_examples "201"
|
137
|
+
end
|
138
|
+
|
139
|
+
context "with custom handler option" do
|
140
|
+
before do
|
141
|
+
params[:custom] = "invalid"
|
142
|
+
end
|
143
|
+
it "delegates to specified method" do
|
144
|
+
post "/recipes", params: params
|
145
|
+
expect(response.status).to eq(403)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
context "with wrong nested params" do
|
150
|
+
before do
|
151
|
+
params[:nested][:number] = true
|
152
|
+
end
|
153
|
+
include_examples "400"
|
154
|
+
end
|
155
|
+
|
156
|
+
context "with wrong repeated params" do
|
157
|
+
describe 'scalar' do
|
158
|
+
before do
|
159
|
+
params[:numbers] = 1
|
160
|
+
end
|
161
|
+
include_examples "400"
|
162
|
+
end
|
163
|
+
|
164
|
+
describe 'wrong type' do
|
165
|
+
before do
|
166
|
+
params[:numbers] = ["foo"]
|
167
|
+
end
|
168
|
+
include_examples "400"
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
context "with complex params" do
|
173
|
+
describe 'invalid parameter' do
|
174
|
+
before do
|
175
|
+
params[:body][:items] << { price: "xxx" }
|
176
|
+
end
|
177
|
+
include_examples "400"
|
178
|
+
end
|
179
|
+
|
180
|
+
describe 'missing parameter' do
|
181
|
+
before do
|
182
|
+
params.delete :body
|
183
|
+
end
|
184
|
+
include_examples "201"
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "Strong with rails-api", type: :request do
|
4
|
+
let(:params) do
|
5
|
+
{
|
6
|
+
object: [1],
|
7
|
+
strong_object: [1],
|
8
|
+
name: "name",
|
9
|
+
strong_name: "name",
|
10
|
+
number: 0,
|
11
|
+
strong_number: 0,
|
12
|
+
type: 1,
|
13
|
+
strong_type: 1,
|
14
|
+
flag: true,
|
15
|
+
strong_flag: true,
|
16
|
+
config: { a: 1 },
|
17
|
+
strong_config: { a: 1, b: { c: 2 } },
|
18
|
+
tags: [1],
|
19
|
+
strong_tags: [1],
|
20
|
+
attachment: Rack::Test::UploadedFile.new(__FILE__),
|
21
|
+
strong_attachment: Rack::Test::UploadedFile.new(__FILE__),
|
22
|
+
zip_code: "123-4567",
|
23
|
+
strong_zip_code: "123-4567",
|
24
|
+
custom: 0,
|
25
|
+
strong_custom: 0,
|
26
|
+
nested: {
|
27
|
+
number: 0
|
28
|
+
},
|
29
|
+
strong_nested: {
|
30
|
+
strong_number: 0
|
31
|
+
},
|
32
|
+
numbers: [1, 2, 3],
|
33
|
+
strong_numbers: [1, 2, 3],
|
34
|
+
body: {
|
35
|
+
items: [
|
36
|
+
{ name: "foo", price: 100 },
|
37
|
+
{ name: "bar", price: 100 }
|
38
|
+
]
|
39
|
+
},
|
40
|
+
strong_body: {
|
41
|
+
items: [
|
42
|
+
{ name: "foo", strong_price: 100 },
|
43
|
+
{ name: "bar", strong_price: 100 }
|
44
|
+
]
|
45
|
+
}
|
46
|
+
}
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "#permitted_params" do
|
50
|
+
it "returns permitted_params" do
|
51
|
+
post "/api/strongs", params: params
|
52
|
+
expect(controller.permitted_params).to have_key "strong_object"
|
53
|
+
expect(controller.permitted_params).not_to have_key "object"
|
54
|
+
|
55
|
+
expect(controller.permitted_params).to have_key "strong_name"
|
56
|
+
expect(controller.permitted_params).not_to have_key "name"
|
57
|
+
|
58
|
+
expect(controller.permitted_params).to have_key "strong_number"
|
59
|
+
expect(controller.permitted_params).not_to have_key "number"
|
60
|
+
|
61
|
+
expect(controller.permitted_params).to have_key "strong_type"
|
62
|
+
expect(controller.permitted_params).not_to have_key "type"
|
63
|
+
|
64
|
+
expect(controller.permitted_params).to have_key "strong_flag"
|
65
|
+
expect(controller.permitted_params).not_to have_key "flag"
|
66
|
+
|
67
|
+
expect(controller.permitted_params).to have_key "strong_config"
|
68
|
+
expect(controller.permitted_params).not_to have_key "config"
|
69
|
+
|
70
|
+
expect(controller.permitted_params).to have_key "strong_tags"
|
71
|
+
expect(controller.permitted_params).not_to have_key "tags"
|
72
|
+
|
73
|
+
expect(controller.permitted_params).not_to have_key "strong_rate"
|
74
|
+
expect(controller.permitted_params).not_to have_key "rate"
|
75
|
+
|
76
|
+
expect(controller.permitted_params).to have_key "strong_attachment"
|
77
|
+
expect(controller.permitted_params).not_to have_key "attachment"
|
78
|
+
|
79
|
+
expect(controller.permitted_params).to have_key "strong_zip_code"
|
80
|
+
expect(controller.permitted_params).not_to have_key "zip_code"
|
81
|
+
|
82
|
+
expect(controller.permitted_params).to have_key "strong_custom"
|
83
|
+
expect(controller.permitted_params).not_to have_key "custom"
|
84
|
+
|
85
|
+
expect(controller.permitted_params).to have_key "strong_nested"
|
86
|
+
expect(controller.permitted_params).not_to have_key "nested"
|
87
|
+
|
88
|
+
expect(controller.permitted_params).to have_key "strong_numbers"
|
89
|
+
expect(controller.permitted_params).not_to have_key "numbers"
|
90
|
+
|
91
|
+
expect(controller.permitted_params).to have_key "strong_body"
|
92
|
+
expect(controller.permitted_params).not_to have_key "body"
|
93
|
+
|
94
|
+
expect(controller.permitted_params[:strong_body]).to have_key "items"
|
95
|
+
|
96
|
+
expect(controller.permitted_params[:strong_body][:items].first).to have_key "strong_price"
|
97
|
+
expect(controller.permitted_params[:strong_body][:items].first).not_to have_key "name"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: weak_parameters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryo Nakamura
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -155,7 +155,12 @@ files:
|
|
155
155
|
- spec/dummy/Rakefile
|
156
156
|
- spec/dummy/app/assets/javascripts/application.js
|
157
157
|
- spec/dummy/app/assets/stylesheets/application.css
|
158
|
+
- spec/dummy/app/controllers/api/recipes_controller.rb
|
159
|
+
- spec/dummy/app/controllers/api/strongs_controller.rb
|
160
|
+
- spec/dummy/app/controllers/api_controller.rb
|
158
161
|
- spec/dummy/app/controllers/application_controller.rb
|
162
|
+
- spec/dummy/app/controllers/concerns/with_recipe.rb
|
163
|
+
- spec/dummy/app/controllers/concerns/with_strong.rb
|
159
164
|
- spec/dummy/app/controllers/recipes_controller.rb
|
160
165
|
- spec/dummy/app/controllers/strongs_controller.rb
|
161
166
|
- spec/dummy/app/helpers/application_helper.rb
|
@@ -188,6 +193,8 @@ files:
|
|
188
193
|
- spec/dummy/public/500.html
|
189
194
|
- spec/dummy/public/favicon.ico
|
190
195
|
- spec/dummy/script/rails
|
196
|
+
- spec/requests/api/recipes_spec.rb
|
197
|
+
- spec/requests/api/strong_spec.rb
|
191
198
|
- spec/requests/recipes_spec.rb
|
192
199
|
- spec/requests/strong_spec.rb
|
193
200
|
- spec/spec_helper.rb
|
@@ -220,7 +227,12 @@ test_files:
|
|
220
227
|
- spec/dummy/Rakefile
|
221
228
|
- spec/dummy/app/assets/javascripts/application.js
|
222
229
|
- spec/dummy/app/assets/stylesheets/application.css
|
230
|
+
- spec/dummy/app/controllers/api/recipes_controller.rb
|
231
|
+
- spec/dummy/app/controllers/api/strongs_controller.rb
|
232
|
+
- spec/dummy/app/controllers/api_controller.rb
|
223
233
|
- spec/dummy/app/controllers/application_controller.rb
|
234
|
+
- spec/dummy/app/controllers/concerns/with_recipe.rb
|
235
|
+
- spec/dummy/app/controllers/concerns/with_strong.rb
|
224
236
|
- spec/dummy/app/controllers/recipes_controller.rb
|
225
237
|
- spec/dummy/app/controllers/strongs_controller.rb
|
226
238
|
- spec/dummy/app/helpers/application_helper.rb
|
@@ -253,6 +265,8 @@ test_files:
|
|
253
265
|
- spec/dummy/public/500.html
|
254
266
|
- spec/dummy/public/favicon.ico
|
255
267
|
- spec/dummy/script/rails
|
268
|
+
- spec/requests/api/recipes_spec.rb
|
269
|
+
- spec/requests/api/strong_spec.rb
|
256
270
|
- spec/requests/recipes_spec.rb
|
257
271
|
- spec/requests/strong_spec.rb
|
258
272
|
- spec/spec_helper.rb
|