api-tester 1.0.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +15 -0
  3. data/.github/workflows/push.yml +39 -0
  4. data/.github/workflows/test.yml +31 -0
  5. data/.rubocop.yml +61 -0
  6. data/Gemfile +2 -0
  7. data/Guardfile +70 -0
  8. data/README.md +65 -61
  9. data/Rakefile +8 -3
  10. data/api-tester.gemspec +29 -24
  11. data/changelog.txt +10 -0
  12. data/lib/api-tester.rb +6 -3
  13. data/lib/api-tester/config.rb +16 -13
  14. data/lib/api-tester/definition/boundary_case.rb +4 -1
  15. data/lib/api-tester/definition/contract.rb +8 -3
  16. data/lib/api-tester/definition/endpoint.rb +32 -23
  17. data/lib/api-tester/definition/fields/array_field.rb +20 -19
  18. data/lib/api-tester/definition/fields/boolean_field.rb +12 -9
  19. data/lib/api-tester/definition/fields/email_field.rb +14 -11
  20. data/lib/api-tester/definition/fields/enum_field.rb +14 -11
  21. data/lib/api-tester/definition/fields/field.rb +46 -45
  22. data/lib/api-tester/definition/fields/number_field.rb +11 -8
  23. data/lib/api-tester/definition/fields/object_field.rb +34 -31
  24. data/lib/api-tester/definition/fields/plain_array_field.rb +25 -0
  25. data/lib/api-tester/definition/method.rb +7 -2
  26. data/lib/api-tester/definition/request.rb +43 -16
  27. data/lib/api-tester/definition/response.rb +29 -26
  28. data/lib/api-tester/method_case_test.rb +67 -53
  29. data/lib/api-tester/modules/extra_verbs.rb +29 -9
  30. data/lib/api-tester/modules/format.rb +23 -7
  31. data/lib/api-tester/modules/good_case.rb +25 -10
  32. data/lib/api-tester/modules/injection_module.rb +32 -17
  33. data/lib/api-tester/modules/required_fields.rb +51 -0
  34. data/lib/api-tester/modules/server_information.rb +13 -10
  35. data/lib/api-tester/modules/typo.rb +36 -13
  36. data/lib/api-tester/modules/unexpected_fields.rb +61 -0
  37. data/lib/api-tester/modules/unused_fields.rb +12 -6
  38. data/lib/api-tester/reporter/api_report.rb +24 -16
  39. data/lib/api-tester/reporter/missing_field_report.rb +12 -13
  40. data/lib/api-tester/reporter/report.rb +11 -8
  41. data/lib/api-tester/reporter/status_code_report.rb +9 -2
  42. data/lib/api-tester/test_helper.rb +6 -6
  43. data/lib/api-tester/util/response_evaluator.rb +70 -57
  44. data/lib/api-tester/util/supported_verbs.rb +8 -5
  45. data/lib/api-tester/version.rb +3 -1
  46. metadata +99 -25
  47. data/.travis.yml +0 -6
  48. data/lib/api-tester/reporter/missing_response_field_report.rb +0 -21
@@ -1,19 +1,22 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ApiTester
4
+ # Class defining the verbs this tool supports
2
5
  class SupportedVerbs
3
- def SupportedVerbs.add_item(key, value)
6
+ def self.add_item(key, value)
4
7
  @hash ||= {}
5
8
  @hash[key] = value
6
9
  end
7
10
 
8
- def SupportedVerbs.const_missing(key)
11
+ def self.const_missing(key)
9
12
  @hash[key]
10
13
  end
11
14
 
12
- def SupportedVerbs.each
13
- @hash.each {|key,value| yield(key,value)}
15
+ def self.each
16
+ @hash.each { |key, value| yield(key, value) }
14
17
  end
15
18
 
16
- def SupportedVerbs.all
19
+ def self.all
17
20
  @hash.values
18
21
  end
19
22
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ApiTester
2
- VERSION = "1.0.0"
4
+ VERSION = '1.1.1'
3
5
  end
metadata CHANGED
@@ -1,43 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api-tester
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - arane
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-06-08 00:00:00.000000000 Z
11
+ date: 2020-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler-audit
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.7.0
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.7.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: guard-rspec
15
43
  requirement: !ruby/object:Gem::Requirement
16
44
  requirements:
17
45
  - - "~>"
18
46
  - !ruby/object:Gem::Version
19
- version: '1.13'
47
+ version: 4.7.3
20
48
  type: :development
21
49
  prerelease: false
22
50
  version_requirements: !ruby/object:Gem::Requirement
23
51
  requirements:
24
52
  - - "~>"
25
53
  - !ruby/object:Gem::Version
26
- version: '1.13'
54
+ version: 4.7.3
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.11'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.11'
27
69
  - !ruby/object:Gem::Dependency
28
70
  name: rake
29
71
  requirement: !ruby/object:Gem::Requirement
30
72
  requirements:
31
73
  - - "~>"
32
74
  - !ruby/object:Gem::Version
33
- version: '10.0'
75
+ version: 13.0.1
34
76
  type: :development
35
77
  prerelease: false
36
78
  version_requirements: !ruby/object:Gem::Requirement
37
79
  requirements:
38
80
  - - "~>"
39
81
  - !ruby/object:Gem::Version
40
- version: '10.0'
82
+ version: 13.0.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: require_all
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 3.0.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 3.0.0
41
97
  - !ruby/object:Gem::Dependency
42
98
  name: rspec
43
99
  requirement: !ruby/object:Gem::Requirement
@@ -53,61 +109,61 @@ dependencies:
53
109
  - !ruby/object:Gem::Version
54
110
  version: '3.0'
55
111
  - !ruby/object:Gem::Dependency
56
- name: webmock
112
+ name: rubocop
57
113
  requirement: !ruby/object:Gem::Requirement
58
114
  requirements:
59
115
  - - "~>"
60
116
  - !ruby/object:Gem::Version
61
- version: '3.4'
117
+ version: 0.93.0
62
118
  type: :development
63
119
  prerelease: false
64
120
  version_requirements: !ruby/object:Gem::Requirement
65
121
  requirements:
66
122
  - - "~>"
67
123
  - !ruby/object:Gem::Version
68
- version: '3.4'
124
+ version: 0.93.0
69
125
  - !ruby/object:Gem::Dependency
70
- name: pry
126
+ name: terminal-notifier
71
127
  requirement: !ruby/object:Gem::Requirement
72
128
  requirements:
73
129
  - - "~>"
74
130
  - !ruby/object:Gem::Version
75
- version: '0.11'
131
+ version: 2.0.0
76
132
  type: :development
77
133
  prerelease: false
78
134
  version_requirements: !ruby/object:Gem::Requirement
79
135
  requirements:
80
136
  - - "~>"
81
137
  - !ruby/object:Gem::Version
82
- version: '0.11'
138
+ version: 2.0.0
83
139
  - !ruby/object:Gem::Dependency
84
- name: require_all
140
+ name: terminal-notifier-guard
85
141
  requirement: !ruby/object:Gem::Requirement
86
142
  requirements:
87
143
  - - "~>"
88
144
  - !ruby/object:Gem::Version
89
- version: 2.0.0
145
+ version: 1.7.0
90
146
  type: :development
91
147
  prerelease: false
92
148
  version_requirements: !ruby/object:Gem::Requirement
93
149
  requirements:
94
150
  - - "~>"
95
151
  - !ruby/object:Gem::Version
96
- version: 2.0.0
152
+ version: 1.7.0
97
153
  - !ruby/object:Gem::Dependency
98
- name: rest-client
154
+ name: webmock
99
155
  requirement: !ruby/object:Gem::Requirement
100
156
  requirements:
101
157
  - - "~>"
102
158
  - !ruby/object:Gem::Version
103
- version: '2.0'
104
- type: :runtime
159
+ version: '3.4'
160
+ type: :development
105
161
  prerelease: false
106
162
  version_requirements: !ruby/object:Gem::Requirement
107
163
  requirements:
108
164
  - - "~>"
109
165
  - !ruby/object:Gem::Version
110
- version: '2.0'
166
+ version: '3.4'
111
167
  - !ruby/object:Gem::Dependency
112
168
  name: injection_vulnerability_library
113
169
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +178,20 @@ dependencies:
122
178
  - - '='
123
179
  - !ruby/object:Gem::Version
124
180
  version: 0.0.2
181
+ - !ruby/object:Gem::Dependency
182
+ name: rest-client
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '2.0'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '2.0'
125
195
  description: Tool to test APIs which will eventually do boundary testing and other
126
196
  sorts of testing automatically given a contract
127
197
  email:
@@ -130,10 +200,14 @@ executables: []
130
200
  extensions: []
131
201
  extra_rdoc_files: []
132
202
  files:
203
+ - ".github/dependabot.yml"
204
+ - ".github/workflows/push.yml"
205
+ - ".github/workflows/test.yml"
133
206
  - ".gitignore"
134
207
  - ".rspec"
135
- - ".travis.yml"
208
+ - ".rubocop.yml"
136
209
  - Gemfile
210
+ - Guardfile
137
211
  - LICENSE.txt
138
212
  - README.md
139
213
  - Rakefile
@@ -153,6 +227,7 @@ files:
153
227
  - lib/api-tester/definition/fields/field.rb
154
228
  - lib/api-tester/definition/fields/number_field.rb
155
229
  - lib/api-tester/definition/fields/object_field.rb
230
+ - lib/api-tester/definition/fields/plain_array_field.rb
156
231
  - lib/api-tester/definition/method.rb
157
232
  - lib/api-tester/definition/request.rb
158
233
  - lib/api-tester/definition/response.rb
@@ -161,12 +236,13 @@ files:
161
236
  - lib/api-tester/modules/format.rb
162
237
  - lib/api-tester/modules/good_case.rb
163
238
  - lib/api-tester/modules/injection_module.rb
239
+ - lib/api-tester/modules/required_fields.rb
164
240
  - lib/api-tester/modules/server_information.rb
165
241
  - lib/api-tester/modules/typo.rb
242
+ - lib/api-tester/modules/unexpected_fields.rb
166
243
  - lib/api-tester/modules/unused_fields.rb
167
244
  - lib/api-tester/reporter/api_report.rb
168
245
  - lib/api-tester/reporter/missing_field_report.rb
169
- - lib/api-tester/reporter/missing_response_field_report.rb
170
246
  - lib/api-tester/reporter/report.rb
171
247
  - lib/api-tester/reporter/status_code_report.rb
172
248
  - lib/api-tester/test_helper.rb
@@ -176,8 +252,7 @@ files:
176
252
  homepage: https://github.com/araneforseti/api-tester
177
253
  licenses:
178
254
  - MIT
179
- metadata:
180
- allowed_push_host: https://rubygems.org/
255
+ metadata: {}
181
256
  post_install_message:
182
257
  rdoc_options: []
183
258
  require_paths:
@@ -193,8 +268,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
268
  - !ruby/object:Gem::Version
194
269
  version: '0'
195
270
  requirements: []
196
- rubyforge_project:
197
- rubygems_version: 2.6.12
271
+ rubygems_version: 3.0.3
198
272
  signing_key:
199
273
  specification_version: 4
200
274
  summary: Tool to help test APIs
@@ -1,6 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - 2.2.1
5
-
6
- before_install: gem install bundler -v 1.13.6
@@ -1,21 +0,0 @@
1
- module ApiTester
2
- class MissingResponseFieldReport
3
- attr_accessor :url
4
- attr_accessor :verb
5
- attr_accessor :expected_field
6
- attr_accessor :description
7
-
8
- def initialize(url, verb, expected_field, description)
9
- self.url = url
10
- self.verb = verb
11
- self.expected_field = expected_field
12
- self.description = description
13
- end
14
-
15
- def print
16
- puts "#{self.description}:"
17
- puts " #{self.verb} #{self.url} is missing response field:"
18
- puts " #{self.expected_field}"
19
- end
20
- end
21
- end