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 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