api-tester 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Build Status](https://travis-ci.org/araneforseti/api-tester.svg?branch=master)](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
|