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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 83ee0d9e20fbd649a77f024ef5c59374598defdb
4
- data.tar.gz: e940bd076054a3a8fef1d64cdeac36692622dec8
3
+ metadata.gz: 4c2d7d376e7fabf9e5d3b6d3dcfc46fed51769c4
4
+ data.tar.gz: bec8bec10284f71f2ac319a341cce60f305ed04f
5
5
  SHA512:
6
- metadata.gz: 1917a357518a7d848197699e4ef169b409668954f3054c1259835a5424270d815cceae899c841d994eccf8fdb28dfe48d2e7c6955fad2649d4a1c994e933a81b
7
- data.tar.gz: f791aa624ebbcd765073765a3949714ad851ffac7a8fd3f50df5bd66ad5c0f82588fca83e86bdd0c446d3f5bd793c5c7b8dd5f08a38ef53aaa1382f975238864
6
+ metadata.gz: 51849f3cbee0fe669116ec6bd9b1d9ff2c19a4e345d9f9ea2c1fc47e059bf00283a95dcbf5c754bd81ae9697c4db01f17067532d238a58bc85702d0e8e0f176e
7
+ data.tar.gz: 1fdc1be1f412a64596c58b2c652a69b63b822d18c8b51f889097317375418a14ec7ee0fcd3de40a23454e85f604ce593203e320f2c4af97b0390ceda8b39154e
data/.gitignore CHANGED
@@ -9,3 +9,4 @@
9
9
  /tmp/
10
10
  .idea
11
11
  *.swp
12
+ *.gem
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 "http://yourbase.com/api/method"
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 "http://yourbase.com/api/method"
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 Sorry"
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
@@ -0,0 +1,3 @@
1
+ 0.0.2
2
+
3
+ - Moving url from methods to endpoints
@@ -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(self.url, headers) { |real_response, request, result|
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 url
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(self.url, json_payload, headers) { |real_response, request, result|
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, method.url, method.verb
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 method.url, method.request.default_payload, method.request.default_headers
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, method.url, method.verb, "GoodCaseModule"
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
@@ -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 url, verb
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 bad_url, SupportedVerbs::GET
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 url, verb
44
+ def create_api_method verb
45
45
  method = SupportedVerbs.get_method_for(verb)
46
- method.new url
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 = method.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(method.url, method.verb, field.name, "UnusedFieldsModule")
11
+ report.add_new_report MissingResponseFieldReport.new(definition.url, method.verb, field.name, "UnusedFieldsModule")
12
12
  end
13
13
  end
14
14
  end
@@ -1,3 +1,3 @@
1
1
  module Tester
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.3"
3
3
  end
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.1
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-07 00:00:00.000000000 Z
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