apirunner 0.5.0 → 0.5.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +302 -33
- data/VERSION +1 -1
- data/apirunner.gemspec +2 -17
- data/examples/config/api_runner.yml +2 -2
- data/examples/test/api_runner/001_create_user.yml +199 -112
- data/lib/api_runner.rb +3 -3
- data/lib/apirunner/railtie.rb +6 -5
- data/lib/result.rb +2 -1
- data/lib/tasks/api.rake +7 -0
- data/spec/api_runner_spec.rb +1 -1
- metadata +4 -19
- data/examples/test/api_runner/002_update_resources.yml +0 -360
- data/examples/test/api_runner/003_update_ratings.yml +0 -88
- data/examples/test/api_runner/004_update_series_ratings.yml +0 -88
- data/examples/test/api_runner/005_rateables_and_pagination.yml +0 -34
- data/examples/test/api_runner/006_recommendations.yml +0 -78
- data/examples/test/api_runner/007_item_predictions.yml +0 -286
- data/examples/test/api_runner/008_discovery.yml +0 -299
- data/examples/test/api_runner/009_cacheable_operations.yml +0 -1
- data/examples/test/api_runner/010_fsk.yml +0 -168
- data/examples/test/api_runner/011_misc.yml +0 -116
- data/examples/test/api_runner/012_telekom_error_reports.yml +0 -1831
- data/examples/test/api_runner/013-extended-unpersonalized-discovery.yml +0 -711
- data/examples/test/api_runner/014-extended-personalized-discovery.yml +0 -764
- data/examples/test/api_runner/015_create_10000_users.yml +0 -43
- data/examples/test/api_runner/999_delete_user.yml +0 -78
@@ -5,12 +5,12 @@ local:
|
|
5
5
|
namespace: api1v0
|
6
6
|
staging:
|
7
7
|
protocol: http
|
8
|
-
host: staging.premium.
|
8
|
+
host: staging.premium.yourhost.com
|
9
9
|
port: 80
|
10
10
|
namespace: api1v0
|
11
11
|
production:
|
12
12
|
protocol: http
|
13
|
-
host: vtu.premium.
|
13
|
+
host: vtu.premium.yourhost.com
|
14
14
|
port: 80
|
15
15
|
namespace: api1v0
|
16
16
|
general:
|
@@ -1,173 +1,260 @@
|
|
1
1
|
---
|
2
|
-
- name:
|
2
|
+
- name: "001/1: Search for non existing user without correct OAuth sig should fail"
|
3
3
|
request:
|
4
4
|
headers:
|
5
5
|
Content-Type: 'application/json'
|
6
|
-
|
7
|
-
|
6
|
+
Accept: 'application/json'
|
7
|
+
path: '/users/0815471169'
|
8
|
+
method: 'GET'
|
8
9
|
body:
|
9
|
-
|
10
|
-
|
10
|
+
response_expectation:
|
11
|
+
status_code: 401
|
12
|
+
headers:
|
13
|
+
Last-Modified: /.*/
|
14
|
+
body:
|
15
|
+
- name: "001/2: Search for non existing user with correct OAuth sig should return a 204"
|
16
|
+
request:
|
17
|
+
headers:
|
18
|
+
Content-Type: 'application/json'
|
19
|
+
Accept: 'application/json'
|
20
|
+
path: '/users/0815471169'
|
21
|
+
method: 'GET'
|
22
|
+
body:
|
23
|
+
oauth: true
|
24
|
+
response_expectation:
|
25
|
+
status_code: 204
|
26
|
+
headers:
|
27
|
+
Last-Modified: /.*/
|
28
|
+
body:
|
29
|
+
- name: "001/3: Creating a guest user with POST parameters should succeed with a 201"
|
30
|
+
request:
|
31
|
+
headers:
|
32
|
+
Accept: 'application/json'
|
33
|
+
path: '/users'
|
34
|
+
method: 'POST'
|
35
|
+
parameters:
|
36
|
+
id: '08154711'
|
37
|
+
body:
|
38
|
+
oauth: true
|
11
39
|
response_expectation:
|
12
40
|
status_code: 201
|
13
41
|
headers:
|
14
42
|
Last-Modified: /.*/
|
15
43
|
body:
|
16
|
-
|
17
|
-
- name: 'Create new User'
|
44
|
+
- name: "001/4: Creating a guest user with JSON parameters should succeed with a 201"
|
18
45
|
request:
|
19
46
|
headers:
|
20
47
|
Content-Type: 'application/json'
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
- m2087
|
28
|
-
blacklist:
|
29
|
-
- m1554
|
30
|
-
- m2981
|
31
|
-
skiplist:
|
32
|
-
- m1590
|
33
|
-
- m1056
|
34
|
-
ratings:
|
35
|
-
m12493: 4.0
|
36
|
-
m1875: 2.5
|
37
|
-
m7258: 3.0
|
38
|
-
m7339: 4.0
|
39
|
-
m3642: 5.0
|
40
|
-
expires_at: 2011-09-09T22:41:50+00:00
|
48
|
+
Accept: 'application/json'
|
49
|
+
path: '/users'
|
50
|
+
method: 'POST'
|
51
|
+
body:
|
52
|
+
id: '08154712'
|
53
|
+
oauth: true
|
41
54
|
response_expectation:
|
42
55
|
status_code: 201
|
43
56
|
headers:
|
44
57
|
Last-Modified: /.*/
|
45
58
|
body:
|
46
|
-
|
47
|
-
watchlist:
|
48
|
-
- m1035
|
49
|
-
- m2087
|
50
|
-
blacklist:
|
51
|
-
- m1554
|
52
|
-
- m2981
|
53
|
-
skiplist:
|
54
|
-
- m1590
|
55
|
-
- m1056
|
56
|
-
ratings:
|
57
|
-
m12493: 4.0
|
58
|
-
m1875: 2.5
|
59
|
-
m7258: 3.0
|
60
|
-
m7339: 4.0
|
61
|
-
m3642: 5.0
|
62
|
-
fsk: "18"
|
63
|
-
- name: 'Update existing User - Update watchlist'
|
59
|
+
- name: "001/5: Creating a guest user with JSON parameters without OAuth should result in a 401"
|
64
60
|
request:
|
65
61
|
headers:
|
66
62
|
Content-Type: 'application/json'
|
67
|
-
|
68
|
-
|
63
|
+
Accept: 'application/json'
|
64
|
+
path: '/users'
|
65
|
+
method: 'POST'
|
69
66
|
body:
|
70
|
-
|
71
|
-
- m73
|
67
|
+
id: '08154713'
|
72
68
|
response_expectation:
|
73
|
-
status_code:
|
69
|
+
status_code: 401
|
70
|
+
headers:
|
71
|
+
Last-Modified: /.*/
|
74
72
|
body:
|
75
|
-
- name:
|
73
|
+
- name: "001/6: Search for previously created user with correct OAuth sig should return the user"
|
76
74
|
request:
|
77
75
|
headers:
|
78
76
|
Content-Type: 'application/json'
|
79
|
-
|
80
|
-
|
77
|
+
Accept: 'application/json'
|
78
|
+
path: '/users/08154712'
|
79
|
+
method: 'GET'
|
80
|
+
body:
|
81
|
+
oauth: true
|
81
82
|
response_expectation:
|
82
83
|
status_code: 200
|
83
84
|
headers:
|
84
85
|
Last-Modified: /.*/
|
85
86
|
body:
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
87
|
+
version: 'v5'
|
88
|
+
content:
|
89
|
+
user:
|
90
|
+
vz_id: '08154712'
|
91
|
+
username: /^Guest_.*$/
|
92
|
+
guest: true
|
93
|
+
- name: "001/7: Recreating a guest user with POST parameters should fail in case the user already exists"
|
94
|
+
request:
|
95
|
+
headers:
|
96
|
+
Accept: 'application/json'
|
97
|
+
path: '/users'
|
98
|
+
method: 'POST'
|
99
|
+
parameters:
|
100
|
+
id: '08154712'
|
101
|
+
body:
|
102
|
+
oauth: true
|
103
|
+
response_expectation:
|
104
|
+
status_code: 422
|
105
|
+
headers:
|
106
|
+
Last-Modified: /.*/
|
107
|
+
body:
|
108
|
+
- name: "001/8: Recreating a guest user with JSON parameters should fail in case the user already exists"
|
104
109
|
request:
|
105
110
|
headers:
|
106
111
|
Content-Type: 'application/json'
|
107
|
-
|
108
|
-
|
112
|
+
Accept: 'application/json'
|
113
|
+
path: '/users'
|
114
|
+
method: 'POST'
|
109
115
|
body:
|
110
|
-
|
111
|
-
|
112
|
-
"m2981": 1.0
|
113
|
-
"m1590": 2
|
114
|
-
"m12493": 4
|
115
|
-
"m1875": 5
|
116
|
-
"m7258": 2.5
|
116
|
+
id: '08154712'
|
117
|
+
oauth: true
|
117
118
|
response_expectation:
|
118
|
-
status_code:
|
119
|
+
status_code: 422
|
119
120
|
headers:
|
120
121
|
Last-Modified: /.*/
|
121
|
-
|
122
|
+
body:
|
123
|
+
- name: "001/9: Updating a guest user via PUT parameters should succeed"
|
124
|
+
priority: 5
|
125
|
+
request:
|
126
|
+
headers:
|
127
|
+
Accept: 'application/json'
|
128
|
+
path: '/users/08154712'
|
129
|
+
method: 'PUT'
|
130
|
+
parameters:
|
131
|
+
access_token: 'vz_t0k3n'
|
132
|
+
body:
|
133
|
+
oauth: true
|
134
|
+
response_expectation:
|
135
|
+
status_code: 201
|
136
|
+
headers:
|
137
|
+
Last-Modified: /.*/
|
138
|
+
body:
|
139
|
+
version: 'v5'
|
140
|
+
content:
|
141
|
+
user:
|
142
|
+
vz_id: '08154712'
|
143
|
+
username: /^Guest_.*$/
|
144
|
+
guest: true
|
145
|
+
- name: "001/10: Updating a guest user via JSON should succeed"
|
122
146
|
request:
|
123
147
|
headers:
|
124
148
|
Content-Type: 'application/json'
|
125
|
-
|
126
|
-
|
149
|
+
Accept: 'application/json'
|
150
|
+
path: '/users/08154712'
|
151
|
+
method: 'PUT'
|
152
|
+
body:
|
153
|
+
id: '08154712'
|
154
|
+
access_token: 'vz_t0k3n'
|
155
|
+
oauth: true
|
127
156
|
response_expectation:
|
128
|
-
status_code:
|
157
|
+
status_code: 201
|
158
|
+
headers:
|
159
|
+
Last-Modified: /.*/
|
160
|
+
body:
|
161
|
+
version: 'v5'
|
162
|
+
content:
|
163
|
+
user:
|
164
|
+
vz_id: '08154712'
|
165
|
+
username: /^Guest_.*$/
|
166
|
+
guest: true
|
167
|
+
- name: "001/11: Updating a guest user via PUT parameters without valid OAuth sig should fail"
|
168
|
+
request:
|
169
|
+
headers:
|
170
|
+
Accept: 'application/json'
|
171
|
+
path: '/users/08154712'
|
172
|
+
method: 'PUT'
|
173
|
+
parameters:
|
174
|
+
id: '08154712'
|
175
|
+
access_token: 'vz_t0k3n'
|
176
|
+
body:
|
177
|
+
response_expectation:
|
178
|
+
status_code: 401
|
129
179
|
headers:
|
130
180
|
Last-Modified: /.*/
|
131
181
|
body:
|
132
|
-
|
133
|
-
fsk: "18"
|
134
|
-
ratings:
|
135
|
-
"m1035": "1.0"
|
136
|
-
"m1554": "2.0"
|
137
|
-
"m2981": "1.0"
|
138
|
-
"m1590": "2.0"
|
139
|
-
"m12493": "4.0"
|
140
|
-
"m1875": "5.0"
|
141
|
-
"m7258": "2.5"
|
142
|
-
- name: 'User creation should fail on bogus characters in username'
|
143
|
-
priority: 3
|
182
|
+
- name: "001/12: Updating a guest user via JSON without valid OAuth sig should fail"
|
144
183
|
request:
|
145
184
|
headers:
|
146
185
|
Content-Type: 'application/json'
|
147
|
-
|
148
|
-
|
186
|
+
Accept: 'application/json'
|
187
|
+
path: '/users/08154712'
|
188
|
+
method: 'PUT'
|
149
189
|
body:
|
190
|
+
id: '08154712'
|
191
|
+
access_token: 'vz_t0k3n'
|
150
192
|
response_expectation:
|
151
|
-
status_code:
|
152
|
-
|
193
|
+
status_code: 401
|
194
|
+
headers:
|
195
|
+
Last-Modified: /.*/
|
196
|
+
body:
|
197
|
+
- name: "001/13: Updating a guest user via PUT parameters with invalid parameters should fail"
|
198
|
+
request:
|
199
|
+
headers:
|
200
|
+
Accept: 'application/json'
|
201
|
+
path: '/users/08154712'
|
202
|
+
method: 'PUT'
|
203
|
+
parameters:
|
204
|
+
user:
|
205
|
+
username: 'duffyduck'
|
206
|
+
body:
|
207
|
+
oauth: true
|
208
|
+
response_expectation:
|
209
|
+
status_code: 422
|
210
|
+
headers:
|
211
|
+
Last-Modified: /.*/
|
212
|
+
body:
|
213
|
+
- name: "001/14: Updating a guest user via JSON without valid OAuth sig should fail"
|
153
214
|
request:
|
154
215
|
headers:
|
155
216
|
Content-Type: 'application/json'
|
156
|
-
|
157
|
-
|
217
|
+
Accept: 'application/json'
|
218
|
+
path: '/users/08154712'
|
219
|
+
method: 'PUT'
|
158
220
|
body:
|
159
|
-
|
160
|
-
|
221
|
+
user:
|
222
|
+
username: 'duffyduck'
|
223
|
+
oauth: true
|
161
224
|
response_expectation:
|
162
|
-
status_code:
|
163
|
-
|
225
|
+
status_code: 422
|
226
|
+
headers:
|
227
|
+
Last-Modified: /.*/
|
228
|
+
body:
|
229
|
+
- name: "001/15: Updating a guest user via PUT parameters with invalid user_id should fail with 404"
|
230
|
+
request:
|
231
|
+
headers:
|
232
|
+
Accept: 'application/json'
|
233
|
+
path: '/users/08154799'
|
234
|
+
method: 'PUT'
|
235
|
+
parameters:
|
236
|
+
user:
|
237
|
+
username: 'duffyduck'
|
238
|
+
body:
|
239
|
+
oauth: true
|
240
|
+
response_expectation:
|
241
|
+
status_code: 404
|
242
|
+
headers:
|
243
|
+
Last-Modified: /.*/
|
244
|
+
body:
|
245
|
+
- name: "001/16: Updating a guest user via JSON with invalid user_id should fail with 404"
|
164
246
|
request:
|
165
247
|
headers:
|
166
248
|
Content-Type: 'application/json'
|
167
|
-
|
168
|
-
|
249
|
+
Accept: 'application/json'
|
250
|
+
path: '/users/08154799'
|
251
|
+
method: 'PUT'
|
169
252
|
body:
|
170
|
-
|
171
|
-
|
253
|
+
user:
|
254
|
+
username: 'duffyduck'
|
255
|
+
oauth: true
|
172
256
|
response_expectation:
|
173
|
-
status_code:
|
257
|
+
status_code: 404
|
258
|
+
headers:
|
259
|
+
Last-Modified: /.*/
|
260
|
+
body:
|
data/lib/api_runner.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
class ApiRunner
|
2
2
|
require 'yaml'
|
3
|
-
require 'csv_writer'
|
3
|
+
require 'csv_writer' if defined?(Rails) and Rails.version.match(/^3.+$/)
|
4
4
|
require 'string_ext' if not String.respond_to?(:underscore)
|
5
5
|
require 'expectation_matcher'
|
6
6
|
require 'http_client'
|
@@ -24,14 +24,14 @@ class ApiRunner
|
|
24
24
|
load_url_spec
|
25
25
|
@http_client = HttpClient.new(@configuration.protocol, @configuration.host, @configuration.port, @configuration.namespace)
|
26
26
|
@expectation = ExpectationMatcher.new(@excludes)
|
27
|
-
@csv_writer = CsvWriter.new(self.class.csv_path, env)
|
27
|
+
@csv_writer = CsvWriter.new(self.class.csv_path, env) if defined?(Rails) and Rails.version.match(/^3.+$/)
|
28
28
|
end
|
29
29
|
|
30
30
|
# checks servers availability and invokes test cases
|
31
31
|
def run
|
32
32
|
if server_is_available?
|
33
33
|
run_tests
|
34
|
-
@csv_writer.write(@configuration.csv_mode, @results) unless @results.empty?
|
34
|
+
@csv_writer.write(@configuration.csv_mode, @results) unless @results.empty? if defined?(Rails) and Rails.version.match(/^3.+$/)
|
35
35
|
@results.each_with_index do |result, index|
|
36
36
|
result.honk_in(@configuration.verbosity, index)
|
37
37
|
end unless @results.empty?
|
data/lib/apirunner/railtie.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
require 'apirunner'
|
2
|
-
require 'rails'
|
2
|
+
require 'rails' if defined?(Rails) and Rails.version.match(/^3.+/)
|
3
3
|
|
4
4
|
module Apirunner
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
if defined?(Rails) and Rails.version.match(/^3.+/)
|
6
|
+
class Railtie < Rails::Railtie
|
7
|
+
rake_tasks do
|
8
|
+
load "tasks/api.rake"
|
9
|
+
end
|
9
10
|
end
|
10
11
|
end
|
11
12
|
end
|
data/lib/result.rb
CHANGED
@@ -10,7 +10,8 @@ class Result
|
|
10
10
|
end
|
11
11
|
|
12
12
|
# honk out the errors message corresponding to the verbosity configuration the user took
|
13
|
-
def honk_in(verbosity
|
13
|
+
def honk_in(verbosity, index)
|
14
|
+
verbosity ||= "rspec"
|
14
15
|
self.send(verbosity.to_sym, index)
|
15
16
|
end
|
16
17
|
|
data/lib/tasks/api.rake
CHANGED
@@ -1,7 +1,14 @@
|
|
1
|
+
if defined?(Rails) and Rails.version.match(/^2.+$/)
|
2
|
+
APIRUNNER_ROOT = File.dirname(__FILE__).to_s + "/../../"
|
3
|
+
TEST_EXAMPLES_PATH = APIRUNNER_ROOT + "examples/test/api_runner"
|
4
|
+
CONFIG_EXAMPLE_PATH = APIRUNNER_ROOT + "examples/config"
|
5
|
+
end
|
6
|
+
|
1
7
|
begin
|
2
8
|
config = YAML.load_file("#{Rails.root}/config/api_runner.yml")
|
3
9
|
rescue
|
4
10
|
end
|
11
|
+
|
5
12
|
namespace :api do
|
6
13
|
namespace :run do
|
7
14
|
config.delete_if{ |key| key == "general" }.each_key do |env|
|