api-tester 0.0.4 → 0.0.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.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/api-tester.gemspec +2 -2
- data/changelog.txt +13 -0
- data/lib/tester/api_tester.rb +1 -0
- data/lib/tester/definition/methods/api_copy.rb +13 -0
- data/lib/tester/definition/methods/api_delete.rb +13 -0
- data/lib/tester/definition/methods/api_get.rb +0 -5
- data/lib/tester/definition/methods/api_head.rb +16 -0
- data/lib/tester/definition/methods/api_lock.rb +13 -0
- data/lib/tester/definition/methods/api_method.rb +4 -3
- data/lib/tester/definition/methods/api_mkcol.rb +13 -0
- data/lib/tester/definition/methods/api_move.rb +13 -0
- data/lib/tester/definition/methods/api_options.rb +16 -0
- data/lib/tester/definition/methods/api_patch.rb +18 -0
- data/lib/tester/definition/methods/api_post.rb +0 -8
- data/lib/tester/definition/methods/api_propfind.rb +13 -0
- data/lib/tester/definition/methods/api_proppatch.rb +13 -0
- data/lib/tester/definition/methods/api_put.rb +18 -0
- data/lib/tester/definition/methods/api_trace.rb +13 -0
- data/lib/tester/definition/methods/api_unlock.rb +13 -0
- data/lib/tester/definition/response.rb +10 -5
- data/lib/tester/modules/module.rb +5 -1
- data/lib/tester/reporter/report.rb +1 -1
- data/lib/tester/util/supported_verbs.rb +46 -1
- data/lib/tester/version.rb +1 -1
- metadata +23 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b11d2e3d6f78a6a867a7a205bcd271d1d62b7e8
|
4
|
+
data.tar.gz: fa0a9eec8bda1701b28bdcb7bd00d8632c74b650
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 138abc36857193eeeb73fe634b6e72bee33be1d9734a522d55ff5ecea80667a8d230e9d9b083990eb8c4eb72ad83f9f1bf2f867859164e8b5722b3e4fd18eb02
|
7
|
+
data.tar.gz: 9dd329012286578853c53ad87197e36a9c61ab9be04b244d3855e58357888586deca8e7f746d518e2263c1481467767c629f6866dcfe07190eac7fd62748247f
|
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# Api::Tester
|
2
|
+
[](https://badge.fury.io/rb/api-tester)
|
2
3
|
[](https://travis-ci.org/araneforseti/api-tester)
|
3
4
|
|
4
5
|
Work in Progress! Use at own risk, definitely not ready
|
data/api-tester.gemspec
CHANGED
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_development_dependency "bundler", "~> 1.13"
|
34
34
|
spec.add_development_dependency "rake", "~> 10.0"
|
35
35
|
spec.add_development_dependency "rspec", "~> 3.0"
|
36
|
-
spec.add_development_dependency "webmock"
|
36
|
+
spec.add_development_dependency "webmock", "~> 3.4"
|
37
37
|
|
38
|
-
spec.add_runtime_dependency "rest-client"
|
38
|
+
spec.add_runtime_dependency "rest-client", "~> 2.0"
|
39
39
|
end
|
data/changelog.txt
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
0.0.5
|
2
|
+
|
3
|
+
- Adding support for delete, put, head, options, copy, mkcol, move, propfind, proppatch, trace, lock, unlock, and patch verbs
|
4
|
+
- Fixing test output to be more readable
|
5
|
+
|
6
|
+
0.0.4
|
7
|
+
|
8
|
+
- Moving test_helper from tester level to endpoint level in preparation for moving to full definition
|
9
|
+
|
10
|
+
0.0.3
|
11
|
+
|
12
|
+
- Fixing Problem with 0.0.2
|
13
|
+
|
1
14
|
0.0.2
|
2
15
|
|
3
16
|
- Moving url from methods to endpoints
|
data/lib/tester/api_tester.rb
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'tester/util/supported_verbs'
|
2
|
+
require 'rest-client'
|
3
|
+
require 'tester/definition/methods/api_method'
|
4
|
+
|
5
|
+
class ApiCopy < ApiMethod
|
6
|
+
def call url, params={}, headers={}
|
7
|
+
RestClient::Request.execute(method: :copy, url: url, headers: headers)
|
8
|
+
end
|
9
|
+
|
10
|
+
def verb
|
11
|
+
SupportedVerbs::COPY
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'tester/util/supported_verbs'
|
2
|
+
require 'rest-client'
|
3
|
+
require 'tester/definition/methods/api_method'
|
4
|
+
|
5
|
+
class ApiDelete < ApiMethod
|
6
|
+
def call url, params={}, headers={}
|
7
|
+
RestClient::Request.execute(method: :delete, url: url, headers: headers)
|
8
|
+
end
|
9
|
+
|
10
|
+
def verb
|
11
|
+
SupportedVerbs::DELETE
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'rest-client'
|
2
|
+
require 'tester/definition/methods/api_method'
|
3
|
+
|
4
|
+
class ApiHead < ApiMethod
|
5
|
+
def call url, params={}, headers={}
|
6
|
+
headers[:params] = params
|
7
|
+
|
8
|
+
RestClient.head(url, headers) { |real_response, request, result|
|
9
|
+
real_response
|
10
|
+
}
|
11
|
+
end
|
12
|
+
|
13
|
+
def verb
|
14
|
+
SupportedVerbs::HEAD
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'tester/util/supported_verbs'
|
2
|
+
require 'rest-client'
|
3
|
+
require 'tester/definition/methods/api_method'
|
4
|
+
|
5
|
+
class ApiLock < ApiMethod
|
6
|
+
def call url, params={}, headers={}
|
7
|
+
RestClient::Request.execute(method: :lock, url: url, headers: headers)
|
8
|
+
end
|
9
|
+
|
10
|
+
def verb
|
11
|
+
SupportedVerbs::LOCK
|
12
|
+
end
|
13
|
+
end
|
@@ -1,8 +1,5 @@
|
|
1
1
|
require 'tester/definition/request'
|
2
2
|
require 'tester/definition/response'
|
3
|
-
require 'tester/reporter/status_code_report'
|
4
|
-
require 'tester/reporter/missing_field_report'
|
5
|
-
require 'tester/reporter/api_report'
|
6
3
|
require 'json'
|
7
4
|
|
8
5
|
class ApiMethod
|
@@ -14,6 +11,10 @@ class ApiMethod
|
|
14
11
|
self.expected_response = Response.new 200
|
15
12
|
end
|
16
13
|
|
14
|
+
def call
|
15
|
+
throw "Not implemented"
|
16
|
+
end
|
17
|
+
|
17
18
|
def verb
|
18
19
|
"None"
|
19
20
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'tester/util/supported_verbs'
|
2
|
+
require 'rest-client'
|
3
|
+
require 'tester/definition/methods/api_method'
|
4
|
+
|
5
|
+
class ApiMkcol < ApiMethod
|
6
|
+
def call url, params={}, headers={}
|
7
|
+
RestClient::Request.execute(method: :mkcol, url: url, headers: headers)
|
8
|
+
end
|
9
|
+
|
10
|
+
def verb
|
11
|
+
SupportedVerbs::MKCOL
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'tester/util/supported_verbs'
|
2
|
+
require 'rest-client'
|
3
|
+
require 'tester/definition/methods/api_method'
|
4
|
+
|
5
|
+
class ApiMove < ApiMethod
|
6
|
+
def call url, params={}, headers={}
|
7
|
+
RestClient::Request.execute(method: :move, url: url, headers: headers)
|
8
|
+
end
|
9
|
+
|
10
|
+
def verb
|
11
|
+
SupportedVerbs::MOVE
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'rest-client'
|
2
|
+
require 'tester/definition/methods/api_method'
|
3
|
+
|
4
|
+
class ApiOptions < ApiMethod
|
5
|
+
def call url, params={}, headers={}
|
6
|
+
headers[:params] = params
|
7
|
+
|
8
|
+
RestClient.options(url, headers) { |real_response, request, result|
|
9
|
+
real_response
|
10
|
+
}
|
11
|
+
end
|
12
|
+
|
13
|
+
def verb
|
14
|
+
SupportedVerbs::OPTIONS
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rest-client'
|
2
|
+
require 'tester/definition/methods/api_method'
|
3
|
+
|
4
|
+
class ApiPatch < ApiMethod
|
5
|
+
def patch url, json_payload, headers
|
6
|
+
RestClient.patch(url, json_payload, headers) { |real_response, request, result|
|
7
|
+
real_response
|
8
|
+
}
|
9
|
+
end
|
10
|
+
|
11
|
+
def call url, body_params={}, request_params={}
|
12
|
+
patch url, body_params.to_json, request_params
|
13
|
+
end
|
14
|
+
|
15
|
+
def verb
|
16
|
+
SupportedVerbs::PATCH
|
17
|
+
end
|
18
|
+
end
|
@@ -1,15 +1,7 @@
|
|
1
|
-
require 'tester/definition/request'
|
2
|
-
require 'tester/definition/response'
|
3
|
-
require "tester/version"
|
4
1
|
require 'rest-client'
|
5
|
-
require 'json'
|
6
2
|
require 'tester/definition/methods/api_method'
|
7
|
-
require 'tester/reporter/api_report'
|
8
|
-
require 'tester/reporter/status_code_report'
|
9
3
|
|
10
4
|
class ApiPost < ApiMethod
|
11
|
-
attr_accessor :syntax_error_response
|
12
|
-
|
13
5
|
def post url, json_payload, headers
|
14
6
|
RestClient.post(url, json_payload, headers) { |real_response, request, result|
|
15
7
|
real_response
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'tester/util/supported_verbs'
|
2
|
+
require 'rest-client'
|
3
|
+
require 'tester/definition/methods/api_method'
|
4
|
+
|
5
|
+
class ApiPropfind < ApiMethod
|
6
|
+
def call url, params={}, headers={}
|
7
|
+
RestClient::Request.execute(method: :propfind, url: url, headers: headers)
|
8
|
+
end
|
9
|
+
|
10
|
+
def verb
|
11
|
+
SupportedVerbs::PROPFIND
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'tester/util/supported_verbs'
|
2
|
+
require 'rest-client'
|
3
|
+
require 'tester/definition/methods/api_method'
|
4
|
+
|
5
|
+
class ApiProppatch < ApiMethod
|
6
|
+
def call url, params={}, headers={}
|
7
|
+
RestClient::Request.execute(method: :proppatch, url: url, headers: headers)
|
8
|
+
end
|
9
|
+
|
10
|
+
def verb
|
11
|
+
SupportedVerbs::PROPPATCH
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rest-client'
|
2
|
+
require 'tester/definition/methods/api_method'
|
3
|
+
|
4
|
+
class ApiPut < ApiMethod
|
5
|
+
def put url, json_payload, headers
|
6
|
+
RestClient.put(url, json_payload, headers) { |real_response, request, result|
|
7
|
+
real_response
|
8
|
+
}
|
9
|
+
end
|
10
|
+
|
11
|
+
def call url, body_params={}, request_params={}
|
12
|
+
self.put url, body_params.to_json, request_params
|
13
|
+
end
|
14
|
+
|
15
|
+
def verb
|
16
|
+
SupportedVerbs::PUT
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'tester/util/supported_verbs'
|
2
|
+
require 'rest-client'
|
3
|
+
require 'tester/definition/methods/api_method'
|
4
|
+
|
5
|
+
class ApiTrace < ApiMethod
|
6
|
+
def call url, params={}, headers={}
|
7
|
+
RestClient::Request.execute(method: :trace, url: url, headers: headers)
|
8
|
+
end
|
9
|
+
|
10
|
+
def verb
|
11
|
+
SupportedVerbs::TRACE
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'tester/util/supported_verbs'
|
2
|
+
require 'rest-client'
|
3
|
+
require 'tester/definition/methods/api_method'
|
4
|
+
|
5
|
+
class ApiUnlock < ApiMethod
|
6
|
+
def call url, params={}, headers={}
|
7
|
+
RestClient::Request.execute(method: :unlock, url: url, headers: headers)
|
8
|
+
end
|
9
|
+
|
10
|
+
def verb
|
11
|
+
SupportedVerbs::UNLOCK
|
12
|
+
end
|
13
|
+
end
|
@@ -13,17 +13,22 @@ class Response
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def to_s
|
16
|
+
des = {}
|
16
17
|
s = self.body.map do |f|
|
17
|
-
field_display f
|
18
|
+
des[f.name] = field_display f
|
18
19
|
end
|
19
|
-
|
20
|
+
des.to_json
|
20
21
|
end
|
21
22
|
|
22
23
|
def field_display field
|
24
|
+
des = field.display_class
|
23
25
|
if field.has_subfields?
|
24
|
-
|
25
|
-
|
26
|
-
|
26
|
+
des = {}
|
27
|
+
s = field.fields.map do |f|
|
28
|
+
des[f.name] = field_display f
|
29
|
+
end
|
30
|
+
des.to_json
|
27
31
|
end
|
32
|
+
des
|
28
33
|
end
|
29
34
|
end
|
@@ -26,7 +26,11 @@ class Module
|
|
26
26
|
|
27
27
|
def call method, definition, format_case
|
28
28
|
self.before definition
|
29
|
-
|
29
|
+
begin
|
30
|
+
response = method.call definition.url, format_case.payload, format_case.headers
|
31
|
+
rescue RestClient::ExceptionWithResponse => e
|
32
|
+
response = e.response
|
33
|
+
end
|
30
34
|
self.after definition
|
31
35
|
response
|
32
36
|
end
|
@@ -18,7 +18,7 @@ class Report
|
|
18
18
|
puts " Requested #{self.url} with payload:"
|
19
19
|
puts " #{self.request.to_json}"
|
20
20
|
puts " Expecting: "
|
21
|
-
puts "
|
21
|
+
puts " " + self.expected_response.to_s
|
22
22
|
puts " Receiving: "
|
23
23
|
puts " #{self.actual_response}"
|
24
24
|
end
|
@@ -1,3 +1,19 @@
|
|
1
|
+
require 'tester/definition/methods/api_copy'
|
2
|
+
require 'tester/definition/methods/api_delete'
|
3
|
+
require 'tester/definition/methods/api_get'
|
4
|
+
require 'tester/definition/methods/api_head'
|
5
|
+
require 'tester/definition/methods/api_lock'
|
6
|
+
require 'tester/definition/methods/api_mkcol'
|
7
|
+
require 'tester/definition/methods/api_move'
|
8
|
+
require 'tester/definition/methods/api_options'
|
9
|
+
require 'tester/definition/methods/api_patch'
|
10
|
+
require 'tester/definition/methods/api_post'
|
11
|
+
require 'tester/definition/methods/api_propfind'
|
12
|
+
require 'tester/definition/methods/api_proppatch'
|
13
|
+
require 'tester/definition/methods/api_put'
|
14
|
+
require 'tester/definition/methods/api_trace'
|
15
|
+
require 'tester/definition/methods/api_unlock'
|
16
|
+
|
1
17
|
class SupportedVerbs
|
2
18
|
def SupportedVerbs.add_item(key, value)
|
3
19
|
@hash ||= {}
|
@@ -17,9 +33,38 @@ class SupportedVerbs
|
|
17
33
|
end
|
18
34
|
|
19
35
|
def SupportedVerbs.get_method_for(verb)
|
20
|
-
{
|
36
|
+
{
|
37
|
+
:copy => ApiCopy,
|
38
|
+
:delete => ApiDelete,
|
39
|
+
:get => ApiGet,
|
40
|
+
:head => ApiHead,
|
41
|
+
:lock => ApiLock,
|
42
|
+
:mkcol => ApiMkcol,
|
43
|
+
:move => ApiMove,
|
44
|
+
:options => ApiOptions,
|
45
|
+
:patch => ApiPatch,
|
46
|
+
:post => ApiPost,
|
47
|
+
:propfind => ApiPropfind,
|
48
|
+
:proppatch => ApiProppatch,
|
49
|
+
:put => ApiPut,
|
50
|
+
:unlock => ApiUnlock,
|
51
|
+
:trace => ApiTrace
|
52
|
+
}[verb]
|
21
53
|
end
|
22
54
|
|
55
|
+
SupportedVerbs.add_item :COPY, :copy
|
56
|
+
SupportedVerbs.add_item :DELETE, :delete
|
23
57
|
SupportedVerbs.add_item :GET, :get
|
58
|
+
SupportedVerbs.add_item :HEAD, :head
|
59
|
+
SupportedVerbs.add_item :LOCK, :lock
|
60
|
+
SupportedVerbs.add_item :MKCOL, :mkcol
|
61
|
+
SupportedVerbs.add_item :MOVE, :move
|
62
|
+
SupportedVerbs.add_item :OPTIONS, :options
|
63
|
+
SupportedVerbs.add_item :PATCH, :patch
|
24
64
|
SupportedVerbs.add_item :POST, :post
|
65
|
+
SupportedVerbs.add_item :PROPFIND, :propfind
|
66
|
+
SupportedVerbs.add_item :PROPPATCH, :proppatch
|
67
|
+
SupportedVerbs.add_item :PUT, :put
|
68
|
+
SupportedVerbs.add_item :TRACE, :trace
|
69
|
+
SupportedVerbs.add_item :UNLOCK, :unlock
|
25
70
|
end
|
data/lib/tester/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: api-tester
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- arane
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -56,30 +56,30 @@ dependencies:
|
|
56
56
|
name: webmock
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '3.4'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '3.4'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rest-client
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
75
|
+
version: '2.0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
82
|
+
version: '2.0'
|
83
83
|
description: Tool to test APIs which will eventually do boundary testing and other
|
84
84
|
sorts of testing automatically given a contract
|
85
85
|
email:
|
@@ -110,9 +110,22 @@ files:
|
|
110
110
|
- lib/tester/definition/fields/field.rb
|
111
111
|
- lib/tester/definition/fields/number_field.rb
|
112
112
|
- lib/tester/definition/fields/object_field.rb
|
113
|
+
- lib/tester/definition/methods/api_copy.rb
|
114
|
+
- lib/tester/definition/methods/api_delete.rb
|
113
115
|
- lib/tester/definition/methods/api_get.rb
|
116
|
+
- lib/tester/definition/methods/api_head.rb
|
117
|
+
- lib/tester/definition/methods/api_lock.rb
|
114
118
|
- lib/tester/definition/methods/api_method.rb
|
119
|
+
- lib/tester/definition/methods/api_mkcol.rb
|
120
|
+
- lib/tester/definition/methods/api_move.rb
|
121
|
+
- lib/tester/definition/methods/api_options.rb
|
122
|
+
- lib/tester/definition/methods/api_patch.rb
|
115
123
|
- lib/tester/definition/methods/api_post.rb
|
124
|
+
- lib/tester/definition/methods/api_propfind.rb
|
125
|
+
- lib/tester/definition/methods/api_proppatch.rb
|
126
|
+
- lib/tester/definition/methods/api_put.rb
|
127
|
+
- lib/tester/definition/methods/api_trace.rb
|
128
|
+
- lib/tester/definition/methods/api_unlock.rb
|
116
129
|
- lib/tester/definition/request.rb
|
117
130
|
- lib/tester/definition/response.rb
|
118
131
|
- lib/tester/method_case_test.rb
|