api-tester 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d7fd0c363094e175b8c3a28f0b208c6a5202f496
4
- data.tar.gz: fd8349e6d3f62ab34f34f95f6dd82c1c77dcd62a
3
+ metadata.gz: 52c7685df4c907ec1841e6b73414281b003670bb
4
+ data.tar.gz: 4d277569d088a704d840ad7e6c187bee4eeb0629
5
5
  SHA512:
6
- metadata.gz: 0f99743ce48fb7157e50d6cb2fac17ab7256a6dffb8c3abaf370ae85c6866385087684932899d973388a23758da73079f55eb87946fa39267783db19f533d77d
7
- data.tar.gz: c74c4a8c90395deeed9f2a3520a67e3a279f5e011a54fbcdad13be5aa1c799e81f70d519a9fe63e3e9bc4e0306ddc990ff8e9d5cb333a850bda303bc2fab5ffc
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
- tester = ApiTester.new(contract).with_module(Format.new)
109
- expect(tester.go).to be true
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
@@ -1,3 +1,7 @@
1
+ 0.3.0
2
+
3
+ - Making modules actually be modules
4
+
1
5
  0.2.0
2
6
 
3
7
  - Finally fixing the naming scheme
@@ -1,21 +1,23 @@
1
- require 'api-tester/modules/module'
2
- require 'api-tester/util/supported_verbs'
1
+ require 'api-tester/util/supported_verbs'
3
2
 
4
3
  module ApiTester
5
- class ExtraVerbs < Module
6
- def go(endpoint, report)
7
- super
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 = test.check
16
- self.report.reports.concat reports
13
+ reports.concat test.check
17
14
  end
18
- self.report.reports == []
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 < Module
7
- def go definition, report
8
- super
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
- self.report.reports.concat test.check
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 < Module
7
- def go endpoint, report
8
- super
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
- self.report.reports.concat test.check
12
+ reports.concat test.check
15
13
  end
16
14
 
17
- self.report.reports == []
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 < Module
7
- def go(endpoint, report)
8
- super
9
-
5
+ class Typo
6
+ def self.go(endpoint, report)
7
+ reports = []
10
8
  allowances(endpoint).each do |verbs|
11
- check_typo_url endpoint
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
- reports = test.check
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 < Module
6
- def go definition, report
7
- super
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
- report.add_new_report MissingResponseFieldReport.new(definition.url, method.verb, field.name, "UnusedFieldsModule")
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
@@ -1,3 +1,3 @@
1
1
  module ApiTester
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
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.2.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