automation-test 1.22 → 1.23

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
  SHA256:
3
- metadata.gz: 520fec49cedbf70a61f8ce1e676189dbc5f69ed398f2390829bb2d52e3f0ed1e
4
- data.tar.gz: 42683733d7cc66efacc2f10527397dc93c58d58ca40c14a6b45233e616522c4a
3
+ metadata.gz: 0bbadee38c26e33d07680d66d9c3178bd21a397ef63e0faf86c34d5843a3dafa
4
+ data.tar.gz: 672fe6cfd2fb6eb91cbdf43f7ac2a7aae08ce313affe47f1a7a4d83df574654d
5
5
  SHA512:
6
- metadata.gz: 005a1677b6b011b4ec5f095ac1572e3d68855252bcf085cbf89a521aea9d44affeeb79db690171f580c4c4f5add95c17a4c95e557747e9ef0c5b087a8225bd9b
7
- data.tar.gz: 108ad6cc9e65d2600ae53fd0937e077e35e0559bc03b37519ff63f6c06541fb62a336160f3189f13d0e2fcae4616f1307780453ce8892a9c32c1f01966508115
6
+ metadata.gz: 516ad91a9ee37dd7f62598b46b1eebdd9820ebfda1dedabc6a12869c942b46e526dd6e48ff9c2b856ed189c25172c35b43599595930f0e4d8b869c7079cc41e0
7
+ data.tar.gz: 384ce20df710cb5421fe1b1d3caf6cee82b42fbf2646dbce657f84cc81ce980e702157a7265919877d9b50625eaedc531a50176f48c76bee342ea598dc70a29b
data/README.md CHANGED
@@ -3,23 +3,31 @@
3
3
 
4
4
  ## Introduction
5
5
 
6
- Simple calculator API hosted on APIMATIC for APIAddicts demo
6
+ Simple calculator API hosted on APIMATIC
7
7
 
8
8
  ## Install the Package
9
9
 
10
10
  Install the gem from the command line:
11
11
 
12
12
  ```ruby
13
- gem install automation-test -v 1.22
13
+ gem install automation-test -v 1.23
14
14
  ```
15
15
 
16
16
  Or add the gem to your Gemfile and run `bundle`:
17
17
 
18
18
  ```ruby
19
- gem 'automation-test', '1.22'
19
+ gem 'automation-test', '1.23'
20
20
  ```
21
21
 
22
- For additional gem details, see the [RubyGems page for the automation-test gem](https://rubygems.org/gems/automation-test/versions/1.22).
22
+ For additional gem details, see the [RubyGems page for the automation-test gem](https://rubygems.org/gems/automation-test/versions/1.23).
23
+
24
+ ## Test the SDK
25
+
26
+ To run the tests, navigate to the root directory of the SDK in your terminal and execute the following command:
27
+
28
+ ```
29
+ rake
30
+ ```
23
31
 
24
32
  ## Initialize the API Client
25
33
 
@@ -29,6 +37,7 @@ The following parameters are configurable for the API Client:
29
37
 
30
38
  | Parameter | Type | Description |
31
39
  | --- | --- | --- |
40
+ | `environment` | Environment | The API environment. <br> **Default: `Environment.PRODUCTION`** |
32
41
  | `timeout` | `Float` | The value to use for connection timeout. <br> **Default: 60** |
33
42
  | `max_retries` | `Integer` | The number of times to retry an endpoint call if it fails. <br> **Default: 0** |
34
43
  | `retry_interval` | `Float` | Pause in seconds between retries. <br> **Default: 1** |
@@ -39,7 +48,8 @@ The following parameters are configurable for the API Client:
39
48
  The API client can be initialized as follows:
40
49
 
41
50
  ```ruby
42
- client = ApimaticCalculator::Client.new(
51
+ client = ApimaticCalculator::Client.new(
52
+ environment: Environment::PRODUCTION,
43
53
  )
44
54
  ```
45
55
 
@@ -15,7 +15,7 @@ module ApimaticCalculator
15
15
  # An enum for API servers.
16
16
  class Server
17
17
  SERVER = [
18
- DEFAULT = 'default'.freeze
18
+ CALCULATOR = 'Calculator'.freeze
19
19
  ].freeze
20
20
  end
21
21
 
@@ -96,7 +96,7 @@ module ApimaticCalculator
96
96
  # All the environments the SDK can run in.
97
97
  ENVIRONMENTS = {
98
98
  Environment::PRODUCTION => {
99
- Server::DEFAULT => 'http://examples.apimatic.io/apps/calculator'
99
+ Server::CALCULATOR => 'https://examples.apimatic.io/apps/calculator'
100
100
  }
101
101
  }.freeze
102
102
 
@@ -104,7 +104,7 @@ module ApimaticCalculator
104
104
  # @param [Configuration::Server] The server enum for which the base URI is
105
105
  # required.
106
106
  # @return [String] The base URI.
107
- def get_base_uri(server = Server::DEFAULT)
107
+ def get_base_uri(server = Server::CALCULATOR)
108
108
  ENVIRONMENTS[environment][server].clone
109
109
  end
110
110
  end
@@ -11,31 +11,23 @@ module ApimaticCalculator
11
11
  end
12
12
 
13
13
  # Calculates the expression using the specified operation.
14
- #
15
- #
16
- # | Table Column 1 | Table Column 2 | Table Column 3 |
17
- # | -------------- | -------------- | -------------- |
18
- # | Row 1x1 | Row 1x2 | Row 1x3 |
19
- # | Row 2x1 | Row 2x2 | Row 2x3 |
20
14
  # @param [OperationTypeEnum] operation Required parameter: The operator to
21
15
  # apply on the variables
22
16
  # @param [Float] x Required parameter: The LHS value
23
17
  # @param [Float] y Required parameter: The RHS value
24
18
  # @return [Float] response from the API call
25
- def calculate(operation,
26
- x,
27
- y)
19
+ def get_calculate(options = {})
28
20
  # Prepare query url.
29
21
  _query_builder = config.get_base_uri
30
22
  _query_builder << '/{operation}'
31
23
  _query_builder = APIHelper.append_url_with_template_parameters(
32
24
  _query_builder,
33
- 'operation' => { 'value' => operation, 'encode' => true }
25
+ 'operation' => { 'value' => options['operation'], 'encode' => true }
34
26
  )
35
27
  _query_builder = APIHelper.append_url_with_query_parameters(
36
28
  _query_builder,
37
- 'x' => x,
38
- 'y' => y
29
+ 'x' => options['x'],
30
+ 'y' => options['y']
39
31
  )
40
32
  _query_url = APIHelper.clean_url _query_builder
41
33
 
@@ -7,16 +7,16 @@ module ApimaticCalculator
7
7
  # Possible operators are sum, subtract, multiply, divide
8
8
  class OperationTypeEnum
9
9
  OPERATION_TYPE_ENUM = [
10
- # TODO: Write general description for SUM
10
+ # Represents the sum operator
11
11
  SUM = 'SUM'.freeze,
12
12
 
13
- # TODO: Write general description for SUBTRACT
13
+ # Represents the subtract operator
14
14
  SUBTRACT = 'SUBTRACT'.freeze,
15
15
 
16
- # TODO: Write general description for MULTIPLY
16
+ # Represents the multiply operator
17
17
  MULTIPLY = 'MULTIPLY'.freeze,
18
18
 
19
- # TODO: Write general description for DIVIDE
19
+ # Represents the divide operator
20
20
  DIVIDE = 'DIVIDE'.freeze
21
21
  ].freeze
22
22
  end
@@ -0,0 +1,21 @@
1
+ # apimatic_calculator
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ require 'json'
7
+ require 'minitest/autorun'
8
+ require 'minitest/hell'
9
+ require 'minitest/pride'
10
+ require 'minitest/proveit'
11
+ require 'apimatic_calculator'
12
+ require_relative '../test_helper'
13
+ require_relative '../http_response_catcher'
14
+
15
+ class ControllerTestBase < Minitest::Test
16
+ parallelize_me!
17
+ include ApimaticCalculator
18
+
19
+ # Create configuration and set any test parameters
20
+ CONFIG = Configuration.new
21
+ end
@@ -0,0 +1,34 @@
1
+ # apimatic_calculator
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ require_relative 'controller_test_base'
7
+
8
+ class SimpleCalculatorControllerTests < ControllerTestBase
9
+ # Called only once for the class before any test has executed
10
+ def setup
11
+ @response_catcher = HttpResponseCatcher.new
12
+ @controller = SimpleCalculatorController.new CONFIG, http_call_back: @response_catcher
13
+ end
14
+
15
+ # Check if multiplication works
16
+ def test_multiply()
17
+ # Parameters for the API call
18
+ options = {}
19
+ options['operation'] = 'MULTIPLY'
20
+ options['x'] = 4
21
+ options['y'] = 5
22
+
23
+ # Perform the API call through the SDK function
24
+ result = @controller.get_calculate(options)
25
+
26
+ # Test response code
27
+ assert_equal(200, @response_catcher.response.status_code)
28
+
29
+ # Test whether the captured response is as we expected
30
+ refute_nil(result)
31
+ assert_equal('20', @response_catcher.response.raw_body)
32
+ end
33
+
34
+ end
@@ -0,0 +1,19 @@
1
+ # apimatic_calculator
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ class HttpResponseCatcher < ApimaticCalculator::HttpCallBack
7
+ attr_accessor :response
8
+
9
+ def on_before_request(request)
10
+ end
11
+
12
+ # Catching the response
13
+ def on_after_response(response)
14
+ @response = response
15
+ end
16
+ end
17
+
18
+
19
+
@@ -0,0 +1,94 @@
1
+ # apimatic_calculator
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ require 'tempfile'
7
+ require 'open-uri'
8
+
9
+ class TestHelper
10
+
11
+ @cache = Hash.new
12
+
13
+ # Class method to compare the received headers with the expected headers.
14
+ # @param [Hash] A hash of expected headers (keys in lower case).
15
+ # @param [Hash] A hash of received headers.
16
+ # @param [Boolean, optional] A flag which determines if we allow extra headers.
17
+ def self.match_headers(expected_headers,
18
+ received_headers,
19
+ allow_extra: true)
20
+ return false if ((received_headers.length < expected_headers.length) ||
21
+ ((allow_extra == false) && (received_headers.length > expected_headers.length)))
22
+
23
+ received_headers = Hash[received_headers.map{|k, v| [k.to_s.downcase, v]}]
24
+ expected_headers.each do |e_key, e_value|
25
+ return false unless received_headers.key?(e_key)
26
+ return false if ((e_value != nil) &&
27
+ (e_value != received_headers[e_key]))
28
+ end
29
+
30
+ return true
31
+ end
32
+
33
+ # Class method to compare the received body with the expected body.
34
+ # @param [Dynamic] The expected body.
35
+ # @param [Dynamic] The received body.
36
+ # @param [Boolean, optional] A flag which determines if we check values in dictionaries.
37
+ # @param [Boolean, optional] A flag which determines if we check the order of array elements.
38
+ # @param [Boolean, optional] A flag which determines if we check the count of array elements.
39
+ def self.match_body(expected_body,
40
+ received_body,
41
+ check_values: false,
42
+ check_order: false,
43
+ check_count: false)
44
+ if expected_body.instance_of? Hash
45
+ return false unless received_body.instance_of? Hash
46
+ for key in expected_body.keys
47
+ return false unless received_body.keys.include? key
48
+ if check_values or expected_body[key].instance_of? Hash
49
+ return false unless TestHelper.match_body(expected_body[key],
50
+ received_body[key],
51
+ check_values: check_values,
52
+ check_order: check_order,
53
+ check_count: check_count)
54
+ end
55
+ end
56
+ elsif expected_body.instance_of? Array
57
+ return False unless received_body.instance_of? Array
58
+ if check_count == true && (expected_body.length != received_body.length)
59
+ return false
60
+ else
61
+ previous_matches = Array.new
62
+ expected_body.each.with_index do |expected_element, i|
63
+ matches = (received_body.map.with_index do |received_element, j|
64
+ j if TestHelper.match_body(expected_element,
65
+ received_element,
66
+ check_values: check_values,
67
+ check_order: check_order,
68
+ check_count: check_count)
69
+ end).compact
70
+ return false if matches.length == 0
71
+ if check_order == true
72
+ return false if (i != 0 && matches.map{|x| previous_matches.map{|y| y > x}.all?}.all?)
73
+ previous_matches = matches
74
+ end
75
+ end
76
+ end
77
+ elsif expected_body != received_body
78
+ return false
79
+ end
80
+ return true
81
+ end
82
+
83
+ # Class method which takes a URL, downloads the file (if not already downloaded
84
+ # for this test session) and returns the path of the file.
85
+ # @param [String] The URL of the required file.
86
+ def self.get_file(url)
87
+ unless @cache.keys.include? url
88
+ @cache[url] = Tempfile.new('APIMatic')
89
+ @cache[url].binmode
90
+ @cache[url].write(open(url, {ssl_ca_cert: Certifi.where}).read)
91
+ end
92
+ return @cache[url].path
93
+ end
94
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: automation-test
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.22'
4
+ version: '1.23'
5
5
  platform: ruby
6
6
  authors:
7
7
  - APIMatic SDK Generator
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-14 00:00:00.000000000 Z
11
+ date: 2021-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logging
@@ -92,7 +92,41 @@ dependencies:
92
92
  - - "~>"
93
93
  - !ruby/object:Gem::Version
94
94
  version: '2.2'
95
- description: Simple calculator API hosted on APIMATIC for APIAddicts demo
95
+ - !ruby/object:Gem::Dependency
96
+ name: minitest
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '5.14'
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 5.14.1
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '5.14'
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: 5.14.1
115
+ - !ruby/object:Gem::Dependency
116
+ name: minitest-proveit
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: '1.0'
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - "~>"
127
+ - !ruby/object:Gem::Version
128
+ version: '1.0'
129
+ description: Simple calculator API hosted on APIMATIC
96
130
  email: support@apimatic.io
97
131
  executables: []
98
132
  extensions: []
@@ -117,6 +151,10 @@ files:
117
151
  - lib/apimatic_calculator/models/operation_type_enum.rb
118
152
  - lib/apimatic_calculator/utilities/date_time_helper.rb
119
153
  - lib/apimatic_calculator/utilities/file_wrapper.rb
154
+ - test/controllers/controller_test_base.rb
155
+ - test/controllers/test_simple_calculator_controller.rb
156
+ - test/http_response_catcher.rb
157
+ - test/test_helper.rb
120
158
  homepage: https://apimatic.io
121
159
  licenses:
122
160
  - MIT