flunk 0.0.7 → 0.0.8
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.
- data/README.md +5 -196
- data/flunk.gemspec +1 -1
- data/lib/flunk.rb +8 -3
- data/lib/generators/flunk_test/templates/flunk_test.rb +5 -2
- metadata +5 -5
data/README.md
CHANGED
@@ -47,7 +47,10 @@ You write tests that SHOULD pass to test your app's basic functionality all work
|
|
47
47
|
method :post
|
48
48
|
body user: attrs = FactoryGirl.attributes_for(:user)
|
49
49
|
status :created
|
50
|
-
|
50
|
+
before {
|
51
|
+
assert_equal 0, user.languages.count
|
52
|
+
}
|
53
|
+
after {
|
51
54
|
assert_equal result[:name], attrs[:name]
|
52
55
|
assert_equal result[:username], attrs[:username]
|
53
56
|
assert_equal result[:email], attrs[:email]
|
@@ -57,23 +60,12 @@ You write tests that SHOULD pass to test your app's basic functionality all work
|
|
57
60
|
}
|
58
61
|
end
|
59
62
|
|
60
|
-
test "User", "Log In" do
|
61
|
-
desc "Obtain a users API token by logging in with their username and password"
|
62
|
-
path "login"
|
63
|
-
method :get
|
64
|
-
body username: @user.username, password: @user.password
|
65
|
-
status :ok
|
66
|
-
assertions {
|
67
|
-
assert_not_nil result[:api_token]
|
68
|
-
}
|
69
|
-
end
|
70
|
-
|
71
63
|
test "User", "Log In With Email" do
|
72
64
|
path "login"
|
73
65
|
method :get
|
74
66
|
body username: @user.email, password: @user.password
|
75
67
|
status :ok
|
76
|
-
|
68
|
+
after {
|
77
69
|
assert_not_nil result[:api_token]
|
78
70
|
}
|
79
71
|
end
|
@@ -86,56 +78,6 @@ You write tests that SHOULD pass to test your app's basic functionality all work
|
|
86
78
|
status :ok
|
87
79
|
end
|
88
80
|
|
89
|
-
test "User", "Update" do
|
90
|
-
desc "Update the username, e-mail, password and/or name"
|
91
|
-
path "account"
|
92
|
-
method :put
|
93
|
-
username @user.api_token
|
94
|
-
body user: { username: username = Faker::Internet.user_name }
|
95
|
-
status :ok
|
96
|
-
assertions {
|
97
|
-
assert_equal result[:username], username
|
98
|
-
}
|
99
|
-
end
|
100
|
-
|
101
|
-
test "User", "Update E-mail" do
|
102
|
-
path "account"
|
103
|
-
method :put
|
104
|
-
username @user.api_token
|
105
|
-
body user: { email: email = Faker::Internet.email }
|
106
|
-
status :ok
|
107
|
-
assertions {
|
108
|
-
assert_equal result[:email], email
|
109
|
-
}
|
110
|
-
end
|
111
|
-
|
112
|
-
test "User", "Update User Password" do
|
113
|
-
path "account"
|
114
|
-
method :put
|
115
|
-
username @user.api_token
|
116
|
-
body user: { password: Faker::Lorem.characters(10) }
|
117
|
-
status :ok
|
118
|
-
end
|
119
|
-
|
120
|
-
test "User", "Update Name" do
|
121
|
-
path "account"
|
122
|
-
method :put
|
123
|
-
username @user.api_token
|
124
|
-
body user: { name: name = Faker::Name.first_name }
|
125
|
-
status :ok
|
126
|
-
assertions {
|
127
|
-
assert_equal result[:name], name
|
128
|
-
}
|
129
|
-
end
|
130
|
-
|
131
|
-
test "User", "Destroy" do
|
132
|
-
path "account"
|
133
|
-
method :delete
|
134
|
-
username @user.api_token
|
135
|
-
status :ok
|
136
|
-
end
|
137
|
-
|
138
|
-
|
139
81
|
|
140
82
|
Then, write tests that SHOULDN'T pass to make sure your app rejects bad requests correctly/gracefully:
|
141
83
|
|
@@ -154,139 +96,6 @@ Then, write tests that SHOULDN'T pass to make sure your app rejects bad requests
|
|
154
96
|
body user: FactoryGirl.attributes_for(:user, username: @user.username)
|
155
97
|
status :unprocessable_entity
|
156
98
|
end
|
157
|
-
|
158
|
-
flunk "User", "Create", "Invalid username" do
|
159
|
-
path "signup"
|
160
|
-
method :post
|
161
|
-
body user: FactoryGirl.attributes_for(:user, username: "a234$2aa" )
|
162
|
-
status :unprocessable_entity
|
163
|
-
end
|
164
|
-
|
165
|
-
flunk "User", "Create", "Missing e-mail" do
|
166
|
-
desc "Attempting to create a user without a e-mail."
|
167
|
-
path "signup"
|
168
|
-
method :post
|
169
|
-
body user: FactoryGirl.attributes_for(:user, email: nil)
|
170
|
-
status :unprocessable_entity
|
171
|
-
end
|
172
|
-
|
173
|
-
flunk "User", "Create", "E-mail already taken" do
|
174
|
-
desc "Attempting to create a user with an e-mail that's already taken."
|
175
|
-
path "signup"
|
176
|
-
method :post
|
177
|
-
body user: FactoryGirl.attributes_for(:user, email: @user.email)
|
178
|
-
status :unprocessable_entity
|
179
|
-
end
|
180
|
-
|
181
|
-
flunk "User", "Create", "Invalid e-mail" do
|
182
|
-
path "signup"
|
183
|
-
method :post
|
184
|
-
body user: FactoryGirl.attributes_for(:user, email: "aaaa@aakk")
|
185
|
-
status :unprocessable_entity
|
186
|
-
end
|
187
|
-
|
188
|
-
flunk "User", "Create", "Missing password" do
|
189
|
-
desc "Attempting to create a user without a password."
|
190
|
-
path "signup"
|
191
|
-
method :post
|
192
|
-
body user: FactoryGirl.attributes_for(:user, password: nil)
|
193
|
-
status :unprocessable_entity
|
194
|
-
end
|
195
|
-
|
196
|
-
flunk "User", "Create", "Missing name" do
|
197
|
-
path "signup"
|
198
|
-
method :post
|
199
|
-
body user: FactoryGirl.attributes_for(:user, name: nil)
|
200
|
-
status :unprocessable_entity
|
201
|
-
end
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
flunk "User", "Log In", "No username" do
|
207
|
-
desc "Attempting to obtain an API token with the wrong password"
|
208
|
-
path "login"
|
209
|
-
method :get
|
210
|
-
body password: "a"
|
211
|
-
status :unauthorized
|
212
|
-
end
|
213
|
-
|
214
|
-
flunk "User", "Log In", "Wrong password" do
|
215
|
-
desc "Attempting to obtain an API token with the wrong password"
|
216
|
-
path "login"
|
217
|
-
method :get
|
218
|
-
body username: @user.username, password: "a"
|
219
|
-
status :unauthorized
|
220
|
-
end
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
flunk "User", "Read", "Wrong API token" do
|
226
|
-
path "login"
|
227
|
-
method :get
|
228
|
-
username "a"
|
229
|
-
status :unauthorized
|
230
|
-
end
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
flunk "User", "Update", "Wrong password" do
|
236
|
-
path "account"
|
237
|
-
method :put
|
238
|
-
username "a"
|
239
|
-
body user: FactoryGirl.attributes_for(:user)
|
240
|
-
status :unauthorized
|
241
|
-
end
|
242
|
-
|
243
|
-
flunk "User", "Update", "Username already taken" do
|
244
|
-
path "account"
|
245
|
-
method :put
|
246
|
-
username @user.api_token
|
247
|
-
u = FactoryGirl.create(:user)
|
248
|
-
body user: { username: u.username }
|
249
|
-
status :unprocessable_entity
|
250
|
-
end
|
251
|
-
|
252
|
-
flunk "User", "Update", "Invalid username" do
|
253
|
-
path "account"
|
254
|
-
method :put
|
255
|
-
username @user.api_token
|
256
|
-
body user: { username: "a234$2aa" }
|
257
|
-
status :unprocessable_entity
|
258
|
-
end
|
259
|
-
|
260
|
-
flunk "User", "Update", "E-mail already taken" do
|
261
|
-
desc "Attempting to update a user with an e-mail that's already taken."
|
262
|
-
path "account"
|
263
|
-
method :put
|
264
|
-
username @user.api_token
|
265
|
-
u = FactoryGirl.create(:user)
|
266
|
-
body user: { email: u.email }
|
267
|
-
status :unprocessable_entity
|
268
|
-
end
|
269
|
-
|
270
|
-
flunk "User", "Update", "Invalid e-mail" do
|
271
|
-
desc "Attempting to update the user with an invalid e-mail"
|
272
|
-
path "account"
|
273
|
-
method :put
|
274
|
-
username @user.api_token
|
275
|
-
body user: { email: "aaaa@aakk" }
|
276
|
-
status :unprocessable_entity
|
277
|
-
end
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
flunk "User", "Delete", "Wrong password" do
|
283
|
-
path "account"
|
284
|
-
method :delete
|
285
|
-
username "a"
|
286
|
-
body user: FactoryGirl.attributes_for(:user)
|
287
|
-
status :unauthorized
|
288
|
-
end
|
289
|
-
|
290
99
|
end
|
291
100
|
|
292
101
|
### Generator
|
data/flunk.gemspec
CHANGED
data/lib/flunk.rb
CHANGED
@@ -4,9 +4,10 @@ class Flunk < ActionDispatch::IntegrationTest
|
|
4
4
|
|
5
5
|
def self.test(resource, action, &block)
|
6
6
|
new_proc = Proc.new do
|
7
|
+
@before.call unless @before.nil?
|
7
8
|
instance_eval(&block)
|
8
9
|
result
|
9
|
-
@
|
10
|
+
@after.call unless @after.nil?
|
10
11
|
end
|
11
12
|
|
12
13
|
if !action || !resource
|
@@ -91,8 +92,12 @@ class Flunk < ActionDispatch::IntegrationTest
|
|
91
92
|
@desc = desc
|
92
93
|
end
|
93
94
|
|
94
|
-
def
|
95
|
-
@
|
95
|
+
def before(&block)
|
96
|
+
@before = block
|
97
|
+
end
|
98
|
+
|
99
|
+
def after(&block)
|
100
|
+
@after = block
|
96
101
|
end
|
97
102
|
|
98
103
|
def rec_symbolize(obj)
|
@@ -13,14 +13,17 @@ class <%= class_name.pluralize %>Test < Flunk
|
|
13
13
|
username @user.username
|
14
14
|
password @user.password
|
15
15
|
status :ok
|
16
|
-
|
16
|
+
before {
|
17
|
+
assert_equal 1, 1
|
18
|
+
}
|
19
|
+
after {
|
17
20
|
assert_equal 2, 2
|
18
21
|
}
|
19
22
|
end
|
20
23
|
|
21
24
|
|
22
25
|
# Write a test that SHOULD fail to ensure your application handles bad requests gracefully.
|
23
|
-
flunk "Resource", "Action, "Why it flunks" do
|
26
|
+
flunk "Resource", "Action", "Why it flunks" do
|
24
27
|
path "/resource/:id"
|
25
28
|
method :get
|
26
29
|
status :unauthorized
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flunk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.7
|
5
4
|
prerelease:
|
5
|
+
version: 0.0.8
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Adam Kirk
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-26 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A gem for testing Ruby on Rails web APIs by simulating a client.
|
15
15
|
email: atomkirk@gmail.com
|
@@ -33,20 +33,20 @@ rdoc_options: []
|
|
33
33
|
require_paths:
|
34
34
|
- lib
|
35
35
|
required_ruby_version: !ruby/object:Gem::Requirement
|
36
|
-
none: false
|
37
36
|
requirements:
|
38
37
|
- - ! '>='
|
39
38
|
- !ruby/object:Gem::Version
|
40
39
|
version: '0'
|
41
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
42
40
|
none: false
|
41
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
43
42
|
requirements:
|
44
43
|
- - ! '>='
|
45
44
|
- !ruby/object:Gem::Version
|
46
45
|
version: '0'
|
46
|
+
none: false
|
47
47
|
requirements: []
|
48
48
|
rubyforge_project:
|
49
|
-
rubygems_version: 1.8.
|
49
|
+
rubygems_version: 1.8.23
|
50
50
|
signing_key:
|
51
51
|
specification_version: 3
|
52
52
|
summary: A gem for testing Ruby on Rails web APIs by simulating a client.
|