api-tester 0.2.0 → 0.3.0
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 +26 -4
- data/changelog.txt +4 -0
- data/lib/api-tester/modules/extra_verbs.rb +11 -9
- data/lib/api-tester/modules/format.rb +10 -7
- data/lib/api-tester/modules/good_case.rb +7 -8
- data/lib/api-tester/modules/typo.rb +13 -11
- data/lib/api-tester/modules/unused_fields.rb +7 -7
- data/lib/api-tester/version.rb +1 -1
- metadata +1 -2
- data/lib/api-tester/modules/module.rb +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52c7685df4c907ec1841e6b73414281b003670bb
|
4
|
+
data.tar.gz: 4d277569d088a704d840ad7e6c187bee4eeb0629
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ea181c7075b97cad1fbfbdfa235a0ab2fcda488a7bdc99efbe981b4bee6cbf69ec98c3024d6cb5cf321004b4bb2e2b4558ca611f9f5fc5628306cdad5dbf541
|
7
|
+
data.tar.gz: d9ad6635b7521e596478c47bea98ceb5c778a18b12a3bb33f5bb50941ec60cf70aaf7f8c90b2ba8e25581ddcf4f85cec93b5da9c0d963cebff67522b85577cc1
|
data/README.md
CHANGED
@@ -75,7 +75,7 @@ Define your contract and endpoints using
|
|
75
75
|
```ruby
|
76
76
|
require 'api-tester/definition/api_contract'
|
77
77
|
require 'api-tester/definition/endpoint'
|
78
|
-
contract = ApiContract.new "API Name"
|
78
|
+
contract = ApiTester::ApiContract.new "API Name"
|
79
79
|
endpoint = ApiTester::Endpoint.new "Some name which is currently unused", "http://yourbase.com/api/endpoint"
|
80
80
|
```
|
81
81
|
|
@@ -97,16 +97,21 @@ field.has_subfields?
|
|
97
97
|
values_array = field.negative_boundary_values
|
98
98
|
```
|
99
99
|
|
100
|
+
Define which modules you want to use through a config
|
101
|
+
```ruby
|
102
|
+
config = ApiTester::Config().with_module(Format.new)
|
103
|
+
```
|
104
|
+
|
100
105
|
Put them together and call go and off you go!
|
101
106
|
```ruby
|
102
|
-
request = Request.new.add_field(ApiTester::Field.new "fieldName")
|
107
|
+
request = ApiTester::Request.new.add_field(ApiTester::Field.new "fieldName")
|
103
108
|
expected_response = ApiTester::Response.new(200).add_field(ApiTester::Field.new "fieldName")
|
104
109
|
endpoint = ApiTester::Endpoint.new "Unused Name", "http://yourbase.com/api/endpoint"
|
105
110
|
endpoint.add_method ApiTester::SupportedVerbs::GET, expected_response, request
|
106
111
|
contract = ApiContract.new "API Name"
|
107
112
|
contract.add_endpoint endpoint
|
108
|
-
|
109
|
-
expect(
|
113
|
+
config = ApiTester::Config().with_module(Format.new)
|
114
|
+
expect(ApiTester.go(contract, config)).to be true
|
110
115
|
|
111
116
|
```
|
112
117
|
|
@@ -159,6 +164,23 @@ detailing unreturned response fields. When using this
|
|
159
164
|
module, it is recommended the good case module is also
|
160
165
|
used.
|
161
166
|
|
167
|
+
## Custom Modules
|
168
|
+
Do you want to do something with the definition which this gem currently does not support?
|
169
|
+
You can create your own test module and add it to the config instance class!
|
170
|
+
Just make sure it adheres to the following interface:
|
171
|
+
```ruby
|
172
|
+
module Name
|
173
|
+
def self.go contract, reports
|
174
|
+
# Your test code here - the reports object is where the reports are all stored
|
175
|
+
end
|
176
|
+
|
177
|
+
def self.order
|
178
|
+
# If your module needs to run first, put 0, if last, put 100.
|
179
|
+
# Otherwise this can just be any number
|
180
|
+
end
|
181
|
+
end
|
182
|
+
```
|
183
|
+
|
162
184
|
# Reporting
|
163
185
|
Right now the default reporting mechanism prints out to
|
164
186
|
the console all the issues which were found. You can
|
data/changelog.txt
CHANGED
@@ -1,21 +1,23 @@
|
|
1
|
-
require 'api-tester/
|
2
|
-
require 'api-tester/util/supported_verbs'
|
1
|
+
require 'api-tester/util/supported_verbs'
|
3
2
|
|
4
3
|
module ApiTester
|
5
|
-
|
6
|
-
def go(endpoint, report)
|
7
|
-
|
8
|
-
|
4
|
+
module ExtraVerbs
|
5
|
+
def self.go(endpoint, report)
|
6
|
+
reports = []
|
9
7
|
extras = ApiTester::SupportedVerbs.all - endpoint.verbs
|
10
8
|
extras.each do |verb|
|
11
9
|
verb_case = BoundaryCase.new("Verb check with #{verb} for #{endpoint.name}", {}, {})
|
12
10
|
method = ApiTester::ApiMethod.new verb, ApiTester::Response.new, ApiTester::Request.new
|
13
11
|
response = endpoint.call method, verb_case.payload, verb_case.headers
|
14
12
|
test = VerbClass.new response, verb_case.payload, endpoint.not_allowed_response, endpoint.url, verb
|
15
|
-
reports
|
16
|
-
self.report.reports.concat reports
|
13
|
+
reports.concat test.check
|
17
14
|
end
|
18
|
-
|
15
|
+
report.reports.concat reports
|
16
|
+
reports == []
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.order
|
20
|
+
3
|
19
21
|
end
|
20
22
|
end
|
21
23
|
|
@@ -1,22 +1,25 @@
|
|
1
1
|
require 'api-tester/reporter/status_code_report'
|
2
|
-
require 'api-tester/modules/module'
|
3
2
|
require 'api-tester/method_case_test'
|
4
3
|
|
5
4
|
module ApiTester
|
6
|
-
class Format
|
7
|
-
def go definition, report
|
8
|
-
|
9
|
-
|
5
|
+
class Format
|
6
|
+
def self.go definition, report
|
7
|
+
reports = []
|
10
8
|
definition.methods.each do |method|
|
11
9
|
cases = method.request.cases
|
12
10
|
cases.each do |format_case|
|
13
11
|
response = definition.call method, format_case.payload, format_case.headers
|
14
12
|
test = FormatTest.new response, format_case.payload, definition.bad_request_response, definition.url, method.verb
|
15
|
-
|
13
|
+
reports.concat test.check
|
16
14
|
end
|
17
15
|
end
|
18
16
|
|
19
|
-
report.reports
|
17
|
+
report.reports.concat reports
|
18
|
+
reports == []
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.order
|
22
|
+
2
|
20
23
|
end
|
21
24
|
end
|
22
25
|
|
@@ -1,23 +1,22 @@
|
|
1
1
|
require 'api-tester/reporter/status_code_report'
|
2
|
-
require 'api-tester/modules/module'
|
3
2
|
require 'api-tester/method_case_test'
|
4
3
|
|
5
4
|
module ApiTester
|
6
|
-
class GoodCase
|
7
|
-
def go endpoint, report
|
8
|
-
|
9
|
-
|
5
|
+
class GoodCase
|
6
|
+
def self.go endpoint, report
|
7
|
+
reports = []
|
10
8
|
endpoint.methods.each do |method|
|
11
9
|
default_case = BoundaryCase.new endpoint.url, method.request.default_payload, method.request.default_headers
|
12
10
|
response = endpoint.call method, default_case.payload, default_case.headers
|
13
11
|
test = GoodCaseTest.new response, endpoint.url, method
|
14
|
-
|
12
|
+
reports.concat test.check
|
15
13
|
end
|
16
14
|
|
17
|
-
|
15
|
+
report.reports.concat reports
|
16
|
+
reports == []
|
18
17
|
end
|
19
18
|
|
20
|
-
def order
|
19
|
+
def self.order
|
21
20
|
1
|
22
21
|
end
|
23
22
|
end
|
@@ -1,20 +1,19 @@
|
|
1
1
|
require 'api-tester/reporter/status_code_report'
|
2
|
-
require 'api-tester/modules/module'
|
3
2
|
require 'api-tester/util/supported_verbs'
|
4
3
|
|
5
4
|
module ApiTester
|
6
|
-
class Typo
|
7
|
-
def go(endpoint, report)
|
8
|
-
|
9
|
-
|
5
|
+
class Typo
|
6
|
+
def self.go(endpoint, report)
|
7
|
+
reports = []
|
10
8
|
allowances(endpoint).each do |verbs|
|
11
|
-
check_typo_url
|
9
|
+
reports.concat check_typo_url(endpoint)
|
12
10
|
end
|
13
11
|
|
14
|
-
report.reports
|
12
|
+
report.reports.concat reports
|
13
|
+
reports == []
|
15
14
|
end
|
16
15
|
|
17
|
-
def check_typo_url endpoint
|
16
|
+
def self.check_typo_url endpoint
|
18
17
|
bad_url = "#{endpoint.url}gibberishadsfasdf"
|
19
18
|
bad_endpoint = ApiTester::Endpoint.new "Bad URL", bad_url
|
20
19
|
typo_case = BoundaryCase.new("Typo URL check", {}, {})
|
@@ -22,17 +21,20 @@ module ApiTester
|
|
22
21
|
response = bad_endpoint.call method, typo_case.payload, typo_case.headers
|
23
22
|
|
24
23
|
test = TypoClass.new response, typo_case.payload, endpoint.not_found_response, bad_url, ApiTester::SupportedVerbs::GET
|
25
|
-
|
26
|
-
self.report.reports.concat reports
|
24
|
+
test.check
|
27
25
|
end
|
28
26
|
|
29
|
-
def allowances(endpoint)
|
27
|
+
def self.allowances(endpoint)
|
30
28
|
allowances = []
|
31
29
|
endpoint.methods.each do |method|
|
32
30
|
allowances << method.verb
|
33
31
|
end
|
34
32
|
allowances.uniq
|
35
33
|
end
|
34
|
+
|
35
|
+
def self.order
|
36
|
+
4
|
37
|
+
end
|
36
38
|
end
|
37
39
|
|
38
40
|
class TypoClass < MethodCaseTest
|
@@ -1,23 +1,23 @@
|
|
1
1
|
require 'api-tester/reporter/missing_response_field_report'
|
2
|
-
require 'api-tester/modules/module'
|
3
2
|
|
4
3
|
module ApiTester
|
5
|
-
class UnusedFields
|
6
|
-
def go definition, report
|
7
|
-
|
4
|
+
class UnusedFields
|
5
|
+
def self.go definition, report
|
6
|
+
reports = []
|
8
7
|
|
9
8
|
definition.methods.each do |method|
|
10
9
|
method.expected_response.body.each do |field|
|
11
10
|
if field.is_seen == 0
|
12
|
-
|
11
|
+
reports << MissingResponseFieldReport.new(definition.url, method.verb, field.name, "UnusedFieldsModule")
|
13
12
|
end
|
14
13
|
end
|
15
14
|
end
|
16
15
|
|
17
|
-
report.reports
|
16
|
+
report.reports.concat reports
|
17
|
+
reports == []
|
18
18
|
end
|
19
19
|
|
20
|
-
def order
|
20
|
+
def self.order
|
21
21
|
99
|
22
22
|
end
|
23
23
|
end
|
data/lib/api-tester/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: api-tester
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- arane
|
@@ -118,7 +118,6 @@ files:
|
|
118
118
|
- lib/api-tester/modules/extra_verbs.rb
|
119
119
|
- lib/api-tester/modules/format.rb
|
120
120
|
- lib/api-tester/modules/good_case.rb
|
121
|
-
- lib/api-tester/modules/module.rb
|
122
121
|
- lib/api-tester/modules/typo.rb
|
123
122
|
- lib/api-tester/modules/unused_fields.rb
|
124
123
|
- lib/api-tester/reporter/api_report.rb
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'api-tester/reporter/status_code_report'
|
2
|
-
require 'api-tester/test_helper'
|
3
|
-
|
4
|
-
module ApiTester
|
5
|
-
class Module
|
6
|
-
attr_accessor :report
|
7
|
-
|
8
|
-
def set_report report
|
9
|
-
self.report = report
|
10
|
-
end
|
11
|
-
|
12
|
-
def go definition, report
|
13
|
-
set_report report
|
14
|
-
end
|
15
|
-
|
16
|
-
def order
|
17
|
-
5
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|