apirunner 0.1.9 → 0.1.10
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/VERSION +1 -1
- data/apirunner.gemspec +1 -1
- data/examples/test/api_runner/001_create_ressource.yml +10 -0
- data/lib/api_runner.rb +4 -4
- data/lib/expectation_matcher.rb +0 -1
- data/lib/http_client.rb +14 -41
- data/lib/result.rb +14 -8
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.10
|
data/apirunner.gemspec
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
---
|
2
2
|
- name: 'Create new User'
|
3
3
|
request:
|
4
|
+
headers:
|
5
|
+
Content-Type: 'application/json'
|
4
6
|
path: '/users/duffyduck'
|
5
7
|
method: 'PUT'
|
6
8
|
body:
|
@@ -42,6 +44,8 @@
|
|
42
44
|
fsk: "18"
|
43
45
|
- name: 'Update existing User - Update watchlist'
|
44
46
|
request:
|
47
|
+
headers:
|
48
|
+
Content-Type: 'application/json'
|
45
49
|
path: '/users/duffyduck/watchlist'
|
46
50
|
method: 'PUT'
|
47
51
|
body:
|
@@ -52,6 +56,8 @@
|
|
52
56
|
body:
|
53
57
|
- name: 'Check User FSK,Watchlist'
|
54
58
|
request:
|
59
|
+
headers:
|
60
|
+
Content-Type: 'application/json'
|
55
61
|
path: '/users/duffyduck'
|
56
62
|
method: 'GET'
|
57
63
|
response_expectation:
|
@@ -75,6 +81,8 @@
|
|
75
81
|
m79: 2.5
|
76
82
|
- name: 'Set 10 Ratings'
|
77
83
|
request:
|
84
|
+
headers:
|
85
|
+
Content-Type: 'application/json'
|
78
86
|
path: '/users/duffyduck/ratings'
|
79
87
|
method: 'PUT'
|
80
88
|
body:
|
@@ -92,6 +100,8 @@
|
|
92
100
|
Last-Modified: /.*/
|
93
101
|
- name: 'Check User Ratings Update'
|
94
102
|
request:
|
103
|
+
headers:
|
104
|
+
Content-Type: 'application/json'
|
95
105
|
path: '/users/duffyduck'
|
96
106
|
method: 'GET'
|
97
107
|
response_expectation:
|
data/lib/api_runner.rb
CHANGED
@@ -38,7 +38,7 @@ class ApiRunner
|
|
38
38
|
# runs all testcases that are provided by the testclass an fills errors if there are any
|
39
39
|
def run_tests
|
40
40
|
@spec.each do |test_case|
|
41
|
-
response = send_request(test_case['request']['method'].downcase.to_sym, test_case['request']['path'], test_case['request']['body'])
|
41
|
+
response = send_request(test_case['request']['method'].downcase.to_sym, test_case['request']['path'], test_case['request']['headers'], test_case['request']['body'])
|
42
42
|
@expectation.test_types.each do |test_type|
|
43
43
|
result = @expectation.check(test_type, response, test_case)
|
44
44
|
if not result.succeeded
|
@@ -56,8 +56,8 @@ class ApiRunner
|
|
56
56
|
end
|
57
57
|
|
58
58
|
# sends http request and fetches response using the given http client
|
59
|
-
def send_request(method, uri, data)
|
60
|
-
@http_client.send_request(method, uri, data)
|
59
|
+
def send_request(method, uri, headers, data)
|
60
|
+
@http_client.send_request(method, uri, headers, data)
|
61
61
|
end
|
62
62
|
|
63
63
|
# builds target uri from base uri generated of host port and namespace as well as the ressource path
|
@@ -68,7 +68,7 @@ class ApiRunner
|
|
68
68
|
# returns true if server is available
|
69
69
|
def server_is_available?
|
70
70
|
return true
|
71
|
-
!@http_client.send_request(:get, "#{@configuration.protocol}://#{@configuration.host}:#{@configuration.port}", {:timeout => 5}).nil?
|
71
|
+
!@http_client.send_request(:get, "#{@configuration.protocol}://#{@configuration.host}:#{@configuration.port}", nil, {:timeout => 5}).nil?
|
72
72
|
end
|
73
73
|
|
74
74
|
# loads environment config data from yaml file
|
data/lib/expectation_matcher.rb
CHANGED
@@ -31,7 +31,6 @@ class ExpectationMatcher
|
|
31
31
|
end
|
32
32
|
|
33
33
|
# checks the format of the given data of JSON conformity
|
34
|
-
# returns a structure containing return value and error if there is one
|
35
34
|
def response_body_format(response, testcase)
|
36
35
|
result_struct = Struct.new(:succeeded, :error)
|
37
36
|
results = result_struct.new(:succeeded => true, :error => nil)
|
data/lib/http_client.rb
CHANGED
@@ -8,8 +8,8 @@ class HttpClient
|
|
8
8
|
@namespace = namespace
|
9
9
|
end
|
10
10
|
|
11
|
-
def send_request(method, resource, data=nil)
|
12
|
-
build_response(self.send(method.to_s.downcase, resource, data))
|
11
|
+
def send_request(method, resource, headers=nil, data=nil)
|
12
|
+
build_response(self.send(method.to_s.downcase, headers, resource, data))
|
13
13
|
end
|
14
14
|
|
15
15
|
protected
|
@@ -26,28 +26,27 @@ class HttpClient
|
|
26
26
|
response
|
27
27
|
end
|
28
28
|
|
29
|
-
def get(resource, params)
|
30
|
-
request = Net::HTTP::Get.new(resource_path(resource), initheader =
|
31
|
-
|
32
|
-
return response
|
29
|
+
def get(headers, resource, params)
|
30
|
+
request = Net::HTTP::Get.new(resource_path(resource), initheader = headers)
|
31
|
+
@http.request(request)
|
33
32
|
end
|
34
33
|
|
35
|
-
def put(resource, data)
|
36
|
-
request = Net::HTTP::Put.new(resource_path(resource), initheader =
|
34
|
+
def put(headers, resource, data)
|
35
|
+
request = Net::HTTP::Put.new(resource_path(resource), initheader = headers)
|
37
36
|
request.body = data.to_json
|
38
|
-
|
37
|
+
@http.request(request)
|
39
38
|
end
|
40
39
|
|
41
|
-
def post(resource, data)
|
42
|
-
request = Net::HTTP::Post.new(resource_path(resource), initheader =
|
40
|
+
def post(headers, resource, data)
|
41
|
+
request = Net::HTTP::Post.new(resource_path(resource), initheader = headers)
|
43
42
|
request.body = data.to_json
|
44
|
-
|
43
|
+
@http.request(request)
|
45
44
|
end
|
46
45
|
|
47
46
|
|
48
|
-
def delete(resource, params)
|
49
|
-
request = Net::HTTP::Delete.new(resource_path(resource), initheader =
|
50
|
-
|
47
|
+
def delete(headers, resource, params)
|
48
|
+
request = Net::HTTP::Delete.new(resource_path(resource), initheader = headers)
|
49
|
+
@http.request(request)
|
51
50
|
end
|
52
51
|
|
53
52
|
def resource_path(resource)
|
@@ -55,29 +54,3 @@ class HttpClient
|
|
55
54
|
end
|
56
55
|
end
|
57
56
|
|
58
|
-
|
59
|
-
class HttPartyClient
|
60
|
-
require 'httparty'
|
61
|
-
include HTTParty
|
62
|
-
|
63
|
-
# sends http request with given method, uri and data and returns servers response
|
64
|
-
def send_request(method, uri, data=nil)
|
65
|
-
options = { :body => data.to_json, :format => :json }
|
66
|
-
build_response(self.class.send(method, uri, options))
|
67
|
-
end
|
68
|
-
|
69
|
-
protected
|
70
|
-
|
71
|
-
# returns struct containing response.code, headers, body and message
|
72
|
-
# this is only for easily interfaceing another http client
|
73
|
-
def build_response(raw_response)
|
74
|
-
response_struct = Struct.new(:code, :message, :headers, :body)
|
75
|
-
response = response_struct.new
|
76
|
-
response.code = raw_response.code
|
77
|
-
response.message = raw_response.message
|
78
|
-
response.headers = raw_response.headers
|
79
|
-
response.body = raw_response.body
|
80
|
-
response
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
data/lib/result.rb
CHANGED
@@ -45,16 +45,22 @@ class Result
|
|
45
45
|
|
46
46
|
# yields the verbose error messages
|
47
47
|
def be_verbose(index)
|
48
|
+
debugger
|
48
49
|
puts "\n#{result_case} (#{index+1}) - \"#{@testcase['name']}\""
|
49
50
|
puts @error_message
|
50
|
-
puts
|
51
|
-
puts
|
52
|
-
puts
|
53
|
-
puts
|
54
|
-
puts
|
55
|
-
puts
|
56
|
-
puts
|
57
|
-
puts
|
51
|
+
puts(" More more more verbosity\n")
|
52
|
+
puts(" request method: #{@testcase['request']['method']}")
|
53
|
+
puts(" resource path: #{@testcase['request']['path']}")
|
54
|
+
puts(" request headers: #{@testcase['request']['headers']}")
|
55
|
+
puts(" JSON body sent: #{@testcase['request']['body']}")
|
56
|
+
puts(" expectation:")
|
57
|
+
puts(" response status code: #{@testcase['response_expectation']['status_code']}")
|
58
|
+
puts(" response headers: #{@testcase['response_expectation']['headers']}")
|
59
|
+
puts(" response body: #{@testcase['response_expectation']['body']}")
|
60
|
+
puts(" result:")
|
61
|
+
puts(" response status code: #{@response.code}")
|
62
|
+
puts(" response headers: #{@response.headers}")
|
63
|
+
puts(" repsonse body: #{JSON.parse(@response.body)}")
|
58
64
|
end
|
59
65
|
|
60
66
|
# returns the result case for interpolation in the output message header
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 10
|
9
|
+
version: 0.1.10
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- jan@moviepilot.com
|
@@ -265,7 +265,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
265
265
|
requirements:
|
266
266
|
- - ">="
|
267
267
|
- !ruby/object:Gem::Version
|
268
|
-
hash: -
|
268
|
+
hash: -1888087046839663550
|
269
269
|
segments:
|
270
270
|
- 0
|
271
271
|
version: "0"
|