apirunner 0.5.0 → 0.5.5
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.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|
|