api-tester 0.0.1 → 0.0.3
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/.gitignore +1 -0
- data/README.md +7 -7
- data/changelog.txt +3 -0
- data/lib/tester/definition/endpoint.rb +4 -2
- data/lib/tester/definition/methods/api_get.rb +3 -3
- data/lib/tester/definition/methods/api_method.rb +1 -3
- data/lib/tester/definition/methods/api_post.rb +4 -4
- data/lib/tester/modules/format.rb +2 -2
- data/lib/tester/modules/good_case.rb +5 -5
- data/lib/tester/modules/module.rb +2 -2
- data/lib/tester/modules/typo.rb +7 -7
- data/lib/tester/modules/unused_fields.rb +1 -1
- data/lib/tester/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c2d7d376e7fabf9e5d3b6d3dcfc46fed51769c4
|
4
|
+
data.tar.gz: bec8bec10284f71f2ac319a341cce60f305ed04f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51849f3cbee0fe669116ec6bd9b1d9ff2c19a4e345d9f9ea2c1fc47e059bf00283a95dcbf5c754bd81ae9697c4db01f17067532d238a58bc85702d0e8e0f176e
|
7
|
+
data.tar.gz: 1fdc1be1f412a64596c58b2c652a69b63b822d18c8b51f889097317375418a14ec7ee0fcd3de40a23454e85f604ce593203e320f2c4af97b0390ceda8b39154e
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
[](https://travis-ci.org/araneforseti/api-tester)
|
3
3
|
|
4
4
|
Work in Progress! Use at own risk, definitely not ready
|
5
|
-
for prime time!
|
5
|
+
for prime time! To isolate your project from the changes, be sure to specify which gem version you use.
|
6
6
|
|
7
7
|
This gem is intended to enable easy creation of tests for
|
8
8
|
RESTful API services when given a contract.
|
@@ -48,10 +48,10 @@ required)
|
|
48
48
|
# Usage
|
49
49
|
## Installation
|
50
50
|
|
51
|
-
Add this line to your application's Gemfile:
|
51
|
+
Add this line to your application's Gemfile (Note: specify your version due to gem's currently volatile nature):
|
52
52
|
|
53
53
|
```ruby
|
54
|
-
gem 'api-tester'
|
54
|
+
gem 'api-tester', '0.0.2'
|
55
55
|
```
|
56
56
|
|
57
57
|
And then execute:
|
@@ -70,13 +70,13 @@ stable release
|
|
70
70
|
|
71
71
|
Define your endpoints using
|
72
72
|
```ruby
|
73
|
-
endpoint = Endpoint.new "Some name which is currently unused"
|
73
|
+
endpoint = Endpoint.new "Some name which is currently unused", "http://yourbase.com/api/endpoint"
|
74
74
|
```
|
75
75
|
|
76
76
|
Define methods on endpoints
|
77
77
|
|
78
78
|
```ruby
|
79
|
-
get_method = ApiGet.new
|
79
|
+
get_method = ApiGet.new
|
80
80
|
```
|
81
81
|
Note: Currently only GET and POST have been created, but
|
82
82
|
you can make your own so long as it has `call` and `verb` methods
|
@@ -97,10 +97,10 @@ Put them together and call go and off you go!
|
|
97
97
|
```ruby
|
98
98
|
request = Request.new.add_field(Field.new "fieldName")
|
99
99
|
expected_response = Response.new(200).add_field(Field.new "fieldName")
|
100
|
-
get_method = ApiGet.new
|
100
|
+
get_method = ApiGet.new
|
101
101
|
get_method.request = request
|
102
102
|
get_method.expected_response = expected_response
|
103
|
-
endpoint = Endpoint.new "Unused Name
|
103
|
+
endpoint = Endpoint.new "Unused Name", "http://yourbase.com/api/endpoint"
|
104
104
|
endpoint.add_method get_method
|
105
105
|
tester = ApiTester.new(endpoint).with_module(Format.new)
|
106
106
|
expect(tester.go).to be true
|
data/changelog.txt
ADDED
@@ -1,13 +1,15 @@
|
|
1
1
|
require 'tester/definition/response'
|
2
2
|
|
3
3
|
class Endpoint
|
4
|
+
attr_accessor :url
|
4
5
|
attr_accessor :methods
|
5
6
|
attr_accessor :name
|
6
7
|
attr_accessor :bad_request_response
|
7
8
|
attr_accessor :not_allowed_response
|
8
9
|
attr_accessor :not_found_response
|
9
10
|
|
10
|
-
def initialize name
|
11
|
+
def initialize name, url
|
12
|
+
self.url = url
|
11
13
|
self.name = name
|
12
14
|
self.methods = []
|
13
15
|
self.bad_request_response = Response.new 400
|
@@ -19,4 +21,4 @@ class Endpoint
|
|
19
21
|
self.methods << new_method
|
20
22
|
self
|
21
23
|
end
|
22
|
-
end
|
24
|
+
end
|
@@ -7,10 +7,10 @@ require 'json'
|
|
7
7
|
require 'tester/definition/methods/api_method'
|
8
8
|
|
9
9
|
class ApiGet < ApiMethod
|
10
|
-
def call params={}, headers={}
|
10
|
+
def call url, params={}, headers={}
|
11
11
|
headers[:params] = params
|
12
12
|
|
13
|
-
RestClient.get(
|
13
|
+
RestClient.get(url, headers) { |real_response, request, result|
|
14
14
|
real_response
|
15
15
|
}
|
16
16
|
end
|
@@ -18,4 +18,4 @@ class ApiGet < ApiMethod
|
|
18
18
|
def verb
|
19
19
|
SupportedVerbs::GET
|
20
20
|
end
|
21
|
-
end
|
21
|
+
end
|
@@ -8,10 +8,8 @@ require 'json'
|
|
8
8
|
class ApiMethod
|
9
9
|
attr_accessor :request
|
10
10
|
attr_accessor :expected_response
|
11
|
-
attr_accessor :url
|
12
11
|
|
13
|
-
def initialize
|
14
|
-
self.url = url
|
12
|
+
def initialize
|
15
13
|
self.request = Request.new
|
16
14
|
self.expected_response = Response.new 200
|
17
15
|
end
|
@@ -10,14 +10,14 @@ require 'tester/reporter/status_code_report'
|
|
10
10
|
class ApiPost < ApiMethod
|
11
11
|
attr_accessor :syntax_error_response
|
12
12
|
|
13
|
-
def post json_payload, headers
|
14
|
-
RestClient.post(
|
13
|
+
def post url, json_payload, headers
|
14
|
+
RestClient.post(url, json_payload, headers) { |real_response, request, result|
|
15
15
|
real_response
|
16
16
|
}
|
17
17
|
end
|
18
18
|
|
19
|
-
def call body_params={}, request_params={}
|
20
|
-
post body_params.to_json, request_params
|
19
|
+
def call url, body_params={}, request_params={}
|
20
|
+
post url, body_params.to_json, request_params
|
21
21
|
end
|
22
22
|
|
23
23
|
def verb
|
@@ -9,8 +9,8 @@ class Format < Module
|
|
9
9
|
definition.methods.each do |method|
|
10
10
|
cases = method.request.cases
|
11
11
|
cases.each do |format_case|
|
12
|
-
response = self.call method, format_case
|
13
|
-
test = FormatTest.new response, format_case.payload, definition.bad_request_response,
|
12
|
+
response = self.call method, definition.url, format_case
|
13
|
+
test = FormatTest.new response, format_case.payload, definition.bad_request_response, definition.url, method.verb
|
14
14
|
self.report.reports.concat test.check
|
15
15
|
end
|
16
16
|
end
|
@@ -7,9 +7,9 @@ class GoodCase < Module
|
|
7
7
|
super
|
8
8
|
|
9
9
|
definition.methods.each do |method|
|
10
|
-
default_case = BoundaryCase.new
|
11
|
-
response = self.call method, default_case
|
12
|
-
test = GoodCaseTest.new response, method
|
10
|
+
default_case = BoundaryCase.new definition.url, method.request.default_payload, method.request.default_headers
|
11
|
+
response = self.call method, definition.url, default_case
|
12
|
+
test = GoodCaseTest.new response, definition.url, method
|
13
13
|
self.report.reports.concat test.check
|
14
14
|
end
|
15
15
|
|
@@ -23,7 +23,7 @@ end
|
|
23
23
|
|
24
24
|
|
25
25
|
class GoodCaseTest < MethodCaseTest
|
26
|
-
def initialize response, method
|
27
|
-
super response, method.request.default_payload, method.expected_response,
|
26
|
+
def initialize response, url, method
|
27
|
+
super response, method.request.default_payload, method.expected_response, url, method.verb, "GoodCaseModule"
|
28
28
|
end
|
29
29
|
end
|
@@ -29,9 +29,9 @@ class Module
|
|
29
29
|
self.test_helper.after
|
30
30
|
end
|
31
31
|
|
32
|
-
def call method, format_case
|
32
|
+
def call method, url, format_case
|
33
33
|
self.before
|
34
|
-
response = method.call format_case.payload, format_case.headers
|
34
|
+
response = method.call url, format_case.payload, format_case.headers
|
35
35
|
self.after
|
36
36
|
response
|
37
37
|
end
|
data/lib/tester/modules/typo.rb
CHANGED
@@ -20,9 +20,9 @@ class Typo < Module
|
|
20
20
|
def check_verbs definition, url, verbs
|
21
21
|
missing_verbs = SupportedVerbs.all - verbs
|
22
22
|
missing_verbs.each do |verb|
|
23
|
-
check_method = create_api_method
|
23
|
+
check_method = create_api_method verb
|
24
24
|
typo_case = BoundaryCase.new("Typo verb check #{verb}", {}, {})
|
25
|
-
response = self.call check_method, typo_case
|
25
|
+
response = self.call check_method, definition.url, typo_case
|
26
26
|
|
27
27
|
test = TypoClass.new response, typo_case.payload, definition.not_allowed_response, url, verb
|
28
28
|
reports = test.check
|
@@ -33,23 +33,23 @@ class Typo < Module
|
|
33
33
|
def check_typo_url definition, url
|
34
34
|
bad_url = "#{url}gibberishadsfasdf"
|
35
35
|
typo_case = BoundaryCase.new("Typo URL check", {}, {})
|
36
|
-
check_method = create_api_method
|
37
|
-
response = self.call check_method, typo_case
|
36
|
+
check_method = create_api_method SupportedVerbs::GET
|
37
|
+
response = self.call check_method, bad_url, typo_case
|
38
38
|
|
39
39
|
test = TypoClass.new response, typo_case.payload, definition.not_found_response, bad_url, SupportedVerbs::GET
|
40
40
|
reports = test.check
|
41
41
|
self.report.reports.concat reports
|
42
42
|
end
|
43
43
|
|
44
|
-
def create_api_method
|
44
|
+
def create_api_method verb
|
45
45
|
method = SupportedVerbs.get_method_for(verb)
|
46
|
-
method.new
|
46
|
+
method.new
|
47
47
|
end
|
48
48
|
|
49
49
|
def allowances(definition)
|
50
50
|
allowances = {}
|
51
51
|
definition.methods.each do |method|
|
52
|
-
url =
|
52
|
+
url = definition.url
|
53
53
|
if allowances[url]
|
54
54
|
allowances[url] << method.verb
|
55
55
|
else
|
@@ -8,7 +8,7 @@ class UnusedFields < Module
|
|
8
8
|
definition.methods.each do |method|
|
9
9
|
method.expected_response.body.each do |field|
|
10
10
|
if field.is_seen == 0
|
11
|
-
report.add_new_report MissingResponseFieldReport.new(
|
11
|
+
report.add_new_report MissingResponseFieldReport.new(definition.url, method.verb, field.name, "UnusedFieldsModule")
|
12
12
|
end
|
13
13
|
end
|
14
14
|
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.3
|
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-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -98,6 +98,7 @@ files:
|
|
98
98
|
- api-tester.gemspec
|
99
99
|
- bin/console
|
100
100
|
- bin/setup
|
101
|
+
- changelog.txt
|
101
102
|
- lib/tester.rb
|
102
103
|
- lib/tester/api_tester.rb
|
103
104
|
- lib/tester/definition/boundary_case.rb
|