api-tester 0.0.4 → 0.0.5

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: 173ab496b5c0a3a43c1e445cabc382335b475730
4
- data.tar.gz: 52325c92e2e3296593dd4f281098b3b84b417f92
3
+ metadata.gz: 2b11d2e3d6f78a6a867a7a205bcd271d1d62b7e8
4
+ data.tar.gz: fa0a9eec8bda1701b28bdcb7bd00d8632c74b650
5
5
  SHA512:
6
- metadata.gz: c7accb0f928261574018b33e9d1fca93dd41a919bb8ce888a4c3e26add1cb2f8e3fab0532c125e5e9a43c8cacabef1b696ecdf06cb456013b660e31ca712531e
7
- data.tar.gz: aac95b14b2c0170d5c4841a846e8ba7b54fc36f3ab763ca1d64f8a949af69daeb59bff2e58c41c371ab3f3a0687871348c345c4a9dfb63b044cbdf3afee54d26
6
+ metadata.gz: 138abc36857193eeeb73fe634b6e72bee33be1d9734a522d55ff5ecea80667a8d230e9d9b083990eb8c4eb72ad83f9f1bf2f867859164e8b5722b3e4fd18eb02
7
+ data.tar.gz: 9dd329012286578853c53ad87197e36a9c61ab9be04b244d3855e58357888586deca8e7f746d518e2263c1481467767c629f6866dcfe07190eac7fd62748247f
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  # Api::Tester
2
+ [![Gem Version](https://badge.fury.io/rb/api-tester.svg)](https://badge.fury.io/rb/api-tester)
2
3
  [![Build Status](https://travis-ci.org/araneforseti/api-tester.svg?branch=master)](https://travis-ci.org/araneforseti/api-tester)
3
4
 
4
5
  Work in Progress! Use at own risk, definitely not ready
data/api-tester.gemspec CHANGED
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
33
33
  spec.add_development_dependency "bundler", "~> 1.13"
34
34
  spec.add_development_dependency "rake", "~> 10.0"
35
35
  spec.add_development_dependency "rspec", "~> 3.0"
36
- spec.add_development_dependency "webmock"
36
+ spec.add_development_dependency "webmock", "~> 3.4"
37
37
 
38
- spec.add_runtime_dependency "rest-client"
38
+ spec.add_runtime_dependency "rest-client", "~> 2.0"
39
39
  end
data/changelog.txt CHANGED
@@ -1,3 +1,16 @@
1
+ 0.0.5
2
+
3
+ - Adding support for delete, put, head, options, copy, mkcol, move, propfind, proppatch, trace, lock, unlock, and patch verbs
4
+ - Fixing test output to be more readable
5
+
6
+ 0.0.4
7
+
8
+ - Moving test_helper from tester level to endpoint level in preparation for moving to full definition
9
+
10
+ 0.0.3
11
+
12
+ - Fixing Problem with 0.0.2
13
+
1
14
  0.0.2
2
15
 
3
16
  - Moving url from methods to endpoints
@@ -3,6 +3,7 @@ require 'tester/modules/good_case'
3
3
  require 'tester/modules/unused_fields'
4
4
  require 'tester/modules/typo'
5
5
  require 'rest-client'
6
+ require 'tester/reporter/api_report'
6
7
  require 'json'
7
8
 
8
9
  class ApiTester
@@ -0,0 +1,13 @@
1
+ require 'tester/util/supported_verbs'
2
+ require 'rest-client'
3
+ require 'tester/definition/methods/api_method'
4
+
5
+ class ApiCopy < ApiMethod
6
+ def call url, params={}, headers={}
7
+ RestClient::Request.execute(method: :copy, url: url, headers: headers)
8
+ end
9
+
10
+ def verb
11
+ SupportedVerbs::COPY
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ require 'tester/util/supported_verbs'
2
+ require 'rest-client'
3
+ require 'tester/definition/methods/api_method'
4
+
5
+ class ApiDelete < ApiMethod
6
+ def call url, params={}, headers={}
7
+ RestClient::Request.execute(method: :delete, url: url, headers: headers)
8
+ end
9
+
10
+ def verb
11
+ SupportedVerbs::DELETE
12
+ end
13
+ end
@@ -1,9 +1,4 @@
1
- require 'tester/definition/request'
2
- require 'tester/definition/response'
3
- require "tester/version"
4
- require 'tester/util/supported_verbs'
5
1
  require 'rest-client'
6
- require 'json'
7
2
  require 'tester/definition/methods/api_method'
8
3
 
9
4
  class ApiGet < ApiMethod
@@ -0,0 +1,16 @@
1
+ require 'rest-client'
2
+ require 'tester/definition/methods/api_method'
3
+
4
+ class ApiHead < ApiMethod
5
+ def call url, params={}, headers={}
6
+ headers[:params] = params
7
+
8
+ RestClient.head(url, headers) { |real_response, request, result|
9
+ real_response
10
+ }
11
+ end
12
+
13
+ def verb
14
+ SupportedVerbs::HEAD
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ require 'tester/util/supported_verbs'
2
+ require 'rest-client'
3
+ require 'tester/definition/methods/api_method'
4
+
5
+ class ApiLock < ApiMethod
6
+ def call url, params={}, headers={}
7
+ RestClient::Request.execute(method: :lock, url: url, headers: headers)
8
+ end
9
+
10
+ def verb
11
+ SupportedVerbs::LOCK
12
+ end
13
+ end
@@ -1,8 +1,5 @@
1
1
  require 'tester/definition/request'
2
2
  require 'tester/definition/response'
3
- require 'tester/reporter/status_code_report'
4
- require 'tester/reporter/missing_field_report'
5
- require 'tester/reporter/api_report'
6
3
  require 'json'
7
4
 
8
5
  class ApiMethod
@@ -14,6 +11,10 @@ class ApiMethod
14
11
  self.expected_response = Response.new 200
15
12
  end
16
13
 
14
+ def call
15
+ throw "Not implemented"
16
+ end
17
+
17
18
  def verb
18
19
  "None"
19
20
  end
@@ -0,0 +1,13 @@
1
+ require 'tester/util/supported_verbs'
2
+ require 'rest-client'
3
+ require 'tester/definition/methods/api_method'
4
+
5
+ class ApiMkcol < ApiMethod
6
+ def call url, params={}, headers={}
7
+ RestClient::Request.execute(method: :mkcol, url: url, headers: headers)
8
+ end
9
+
10
+ def verb
11
+ SupportedVerbs::MKCOL
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ require 'tester/util/supported_verbs'
2
+ require 'rest-client'
3
+ require 'tester/definition/methods/api_method'
4
+
5
+ class ApiMove < ApiMethod
6
+ def call url, params={}, headers={}
7
+ RestClient::Request.execute(method: :move, url: url, headers: headers)
8
+ end
9
+
10
+ def verb
11
+ SupportedVerbs::MOVE
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ require 'rest-client'
2
+ require 'tester/definition/methods/api_method'
3
+
4
+ class ApiOptions < ApiMethod
5
+ def call url, params={}, headers={}
6
+ headers[:params] = params
7
+
8
+ RestClient.options(url, headers) { |real_response, request, result|
9
+ real_response
10
+ }
11
+ end
12
+
13
+ def verb
14
+ SupportedVerbs::OPTIONS
15
+ end
16
+ end
@@ -0,0 +1,18 @@
1
+ require 'rest-client'
2
+ require 'tester/definition/methods/api_method'
3
+
4
+ class ApiPatch < ApiMethod
5
+ def patch url, json_payload, headers
6
+ RestClient.patch(url, json_payload, headers) { |real_response, request, result|
7
+ real_response
8
+ }
9
+ end
10
+
11
+ def call url, body_params={}, request_params={}
12
+ patch url, body_params.to_json, request_params
13
+ end
14
+
15
+ def verb
16
+ SupportedVerbs::PATCH
17
+ end
18
+ end
@@ -1,15 +1,7 @@
1
- require 'tester/definition/request'
2
- require 'tester/definition/response'
3
- require "tester/version"
4
1
  require 'rest-client'
5
- require 'json'
6
2
  require 'tester/definition/methods/api_method'
7
- require 'tester/reporter/api_report'
8
- require 'tester/reporter/status_code_report'
9
3
 
10
4
  class ApiPost < ApiMethod
11
- attr_accessor :syntax_error_response
12
-
13
5
  def post url, json_payload, headers
14
6
  RestClient.post(url, json_payload, headers) { |real_response, request, result|
15
7
  real_response
@@ -0,0 +1,13 @@
1
+ require 'tester/util/supported_verbs'
2
+ require 'rest-client'
3
+ require 'tester/definition/methods/api_method'
4
+
5
+ class ApiPropfind < ApiMethod
6
+ def call url, params={}, headers={}
7
+ RestClient::Request.execute(method: :propfind, url: url, headers: headers)
8
+ end
9
+
10
+ def verb
11
+ SupportedVerbs::PROPFIND
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ require 'tester/util/supported_verbs'
2
+ require 'rest-client'
3
+ require 'tester/definition/methods/api_method'
4
+
5
+ class ApiProppatch < ApiMethod
6
+ def call url, params={}, headers={}
7
+ RestClient::Request.execute(method: :proppatch, url: url, headers: headers)
8
+ end
9
+
10
+ def verb
11
+ SupportedVerbs::PROPPATCH
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+ require 'rest-client'
2
+ require 'tester/definition/methods/api_method'
3
+
4
+ class ApiPut < ApiMethod
5
+ def put url, json_payload, headers
6
+ RestClient.put(url, json_payload, headers) { |real_response, request, result|
7
+ real_response
8
+ }
9
+ end
10
+
11
+ def call url, body_params={}, request_params={}
12
+ self.put url, body_params.to_json, request_params
13
+ end
14
+
15
+ def verb
16
+ SupportedVerbs::PUT
17
+ end
18
+ end
@@ -0,0 +1,13 @@
1
+ require 'tester/util/supported_verbs'
2
+ require 'rest-client'
3
+ require 'tester/definition/methods/api_method'
4
+
5
+ class ApiTrace < ApiMethod
6
+ def call url, params={}, headers={}
7
+ RestClient::Request.execute(method: :trace, url: url, headers: headers)
8
+ end
9
+
10
+ def verb
11
+ SupportedVerbs::TRACE
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ require 'tester/util/supported_verbs'
2
+ require 'rest-client'
3
+ require 'tester/definition/methods/api_method'
4
+
5
+ class ApiUnlock < ApiMethod
6
+ def call url, params={}, headers={}
7
+ RestClient::Request.execute(method: :unlock, url: url, headers: headers)
8
+ end
9
+
10
+ def verb
11
+ SupportedVerbs::UNLOCK
12
+ end
13
+ end
@@ -13,17 +13,22 @@ class Response
13
13
  end
14
14
 
15
15
  def to_s
16
+ des = {}
16
17
  s = self.body.map do |f|
17
- field_display f
18
+ des[f.name] = field_display f
18
19
  end
19
- s.to_s
20
+ des.to_json
20
21
  end
21
22
 
22
23
  def field_display field
24
+ des = field.display_class
23
25
  if field.has_subfields?
24
- "#{field.name}:#{field.fields.map{|f| field_display(f)}}"
25
- else
26
- "#{field.name}:#{field.display_class}"
26
+ des = {}
27
+ s = field.fields.map do |f|
28
+ des[f.name] = field_display f
29
+ end
30
+ des.to_json
27
31
  end
32
+ des
28
33
  end
29
34
  end
@@ -26,7 +26,11 @@ class Module
26
26
 
27
27
  def call method, definition, format_case
28
28
  self.before definition
29
- response = method.call definition.url, format_case.payload, format_case.headers
29
+ begin
30
+ response = method.call definition.url, format_case.payload, format_case.headers
31
+ rescue RestClient::ExceptionWithResponse => e
32
+ response = e.response
33
+ end
30
34
  self.after definition
31
35
  response
32
36
  end
@@ -18,7 +18,7 @@ class Report
18
18
  puts " Requested #{self.url} with payload:"
19
19
  puts " #{self.request.to_json}"
20
20
  puts " Expecting: "
21
- puts " #{self.expected_response}"
21
+ puts " " + self.expected_response.to_s
22
22
  puts " Receiving: "
23
23
  puts " #{self.actual_response}"
24
24
  end
@@ -1,3 +1,19 @@
1
+ require 'tester/definition/methods/api_copy'
2
+ require 'tester/definition/methods/api_delete'
3
+ require 'tester/definition/methods/api_get'
4
+ require 'tester/definition/methods/api_head'
5
+ require 'tester/definition/methods/api_lock'
6
+ require 'tester/definition/methods/api_mkcol'
7
+ require 'tester/definition/methods/api_move'
8
+ require 'tester/definition/methods/api_options'
9
+ require 'tester/definition/methods/api_patch'
10
+ require 'tester/definition/methods/api_post'
11
+ require 'tester/definition/methods/api_propfind'
12
+ require 'tester/definition/methods/api_proppatch'
13
+ require 'tester/definition/methods/api_put'
14
+ require 'tester/definition/methods/api_trace'
15
+ require 'tester/definition/methods/api_unlock'
16
+
1
17
  class SupportedVerbs
2
18
  def SupportedVerbs.add_item(key, value)
3
19
  @hash ||= {}
@@ -17,9 +33,38 @@ class SupportedVerbs
17
33
  end
18
34
 
19
35
  def SupportedVerbs.get_method_for(verb)
20
- {:get => ApiGet, :post => ApiPost}[verb]
36
+ {
37
+ :copy => ApiCopy,
38
+ :delete => ApiDelete,
39
+ :get => ApiGet,
40
+ :head => ApiHead,
41
+ :lock => ApiLock,
42
+ :mkcol => ApiMkcol,
43
+ :move => ApiMove,
44
+ :options => ApiOptions,
45
+ :patch => ApiPatch,
46
+ :post => ApiPost,
47
+ :propfind => ApiPropfind,
48
+ :proppatch => ApiProppatch,
49
+ :put => ApiPut,
50
+ :unlock => ApiUnlock,
51
+ :trace => ApiTrace
52
+ }[verb]
21
53
  end
22
54
 
55
+ SupportedVerbs.add_item :COPY, :copy
56
+ SupportedVerbs.add_item :DELETE, :delete
23
57
  SupportedVerbs.add_item :GET, :get
58
+ SupportedVerbs.add_item :HEAD, :head
59
+ SupportedVerbs.add_item :LOCK, :lock
60
+ SupportedVerbs.add_item :MKCOL, :mkcol
61
+ SupportedVerbs.add_item :MOVE, :move
62
+ SupportedVerbs.add_item :OPTIONS, :options
63
+ SupportedVerbs.add_item :PATCH, :patch
24
64
  SupportedVerbs.add_item :POST, :post
65
+ SupportedVerbs.add_item :PROPFIND, :propfind
66
+ SupportedVerbs.add_item :PROPPATCH, :proppatch
67
+ SupportedVerbs.add_item :PUT, :put
68
+ SupportedVerbs.add_item :TRACE, :trace
69
+ SupportedVerbs.add_item :UNLOCK, :unlock
25
70
  end
@@ -1,3 +1,3 @@
1
1
  module Tester
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
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.4
4
+ version: 0.0.5
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-09 00:00:00.000000000 Z
11
+ date: 2018-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -56,30 +56,30 @@ dependencies:
56
56
  name: webmock
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '3.4'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: '3.4'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rest-client
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '2.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: '2.0'
83
83
  description: Tool to test APIs which will eventually do boundary testing and other
84
84
  sorts of testing automatically given a contract
85
85
  email:
@@ -110,9 +110,22 @@ files:
110
110
  - lib/tester/definition/fields/field.rb
111
111
  - lib/tester/definition/fields/number_field.rb
112
112
  - lib/tester/definition/fields/object_field.rb
113
+ - lib/tester/definition/methods/api_copy.rb
114
+ - lib/tester/definition/methods/api_delete.rb
113
115
  - lib/tester/definition/methods/api_get.rb
116
+ - lib/tester/definition/methods/api_head.rb
117
+ - lib/tester/definition/methods/api_lock.rb
114
118
  - lib/tester/definition/methods/api_method.rb
119
+ - lib/tester/definition/methods/api_mkcol.rb
120
+ - lib/tester/definition/methods/api_move.rb
121
+ - lib/tester/definition/methods/api_options.rb
122
+ - lib/tester/definition/methods/api_patch.rb
115
123
  - lib/tester/definition/methods/api_post.rb
124
+ - lib/tester/definition/methods/api_propfind.rb
125
+ - lib/tester/definition/methods/api_proppatch.rb
126
+ - lib/tester/definition/methods/api_put.rb
127
+ - lib/tester/definition/methods/api_trace.rb
128
+ - lib/tester/definition/methods/api_unlock.rb
116
129
  - lib/tester/definition/request.rb
117
130
  - lib/tester/definition/response.rb
118
131
  - lib/tester/method_case_test.rb