soaspec 0.0.28 → 0.0.29

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: 18f0661c8b343eccfa911819e895b4a971f18e91
4
- data.tar.gz: 6b9f9aa4d5a318efa2c0c71962fbc93ec3198dcb
3
+ metadata.gz: 175c61fcf50ffcad25f8cfaf8ffcc508de469607
4
+ data.tar.gz: 6753d697bea4c8058cf005964a100b6edb7f809a
5
5
  SHA512:
6
- metadata.gz: c4ec79ab87e48032d3a142f7643484d7731b33d36d2d10d6a7640668ead69107c0e5032c7a8a5bdc87e65dad3948b9a0c9c3a773ab78baf7c639cee0e1582ad0
7
- data.tar.gz: ab95079660cf8df4190137987b15b31bb0cbd0906ca8c44a28fc843fca6e921dfb01988e3f4bcbad02dfa9a79fd3975f4b9955aab52f64aa782dc320b1f27bd3
6
+ metadata.gz: fe07fbc0e1a63944070b2d4842527b1071005c8f61913a79de5990f943c2e4009de1c2f5ef28eadb9527ea8467f928be9f2189ee8cb18cf12d2b71c81f5b6875
7
+ data.tar.gz: db8b5cdac6ca0c6fafdaf1be2380984a354f3f25c0654225a3306606a136b1d38a600b41c9072ee363026aa9090ed0bd489c8d3964157693f20a11e7934bf6ce
data/ChangeLog CHANGED
@@ -1,3 +1,8 @@
1
+ Version 0.0.29 / 2018-3-6
2
+ * Refactorings
3
+ * Base 'test' class from 'Tester' to 'ExhangeHandler'
4
+ * Made default Soap Handler class 'SoapHandler' and making use of 'BasicSoapHandler' deprecated
5
+
1
6
  Version 0.0.28 / 2018-3-6
2
7
  * Enhancements
3
8
  * Added not_found matcher and used in spec example
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- soaspec (0.0.28)
4
+ soaspec (0.0.29)
5
5
  rest-client (>= 2.0)
6
6
  rspec (~> 3.0)
7
7
  rspec-its (>= 1.2.0)
data/exe/soaspec-generate CHANGED
@@ -100,7 +100,7 @@ end
100
100
 
101
101
  require 'soaspec'
102
102
 
103
- class <%= @name %> < Soaspec::BasicSoapHandler
103
+ class <%= @name %> < Soaspec::SoapHandler
104
104
  # Add to or override default Savon client options
105
105
  def savon_options
106
106
  {
@@ -145,6 +145,7 @@ create_file filename: 'Rakefile', content: rake_content, ignore_if_present: true
145
145
  create_file filename: 'Gemfile', content: gem_content, ignore_if_present: true
146
146
  create_folder 'spec'
147
147
  create_file filename: 'spec/spec_helper.rb', content: spec_helper_content
148
+ create_file filename: 'README.md', content: readme_content, ignore_if_present: true
148
149
 
149
150
  create_folder 'logs'
150
151
  create_folder 'config'
data/exe/soaspec-init CHANGED
@@ -9,18 +9,6 @@ include Soaspec::ExeHelpers
9
9
 
10
10
  puts 'Creating files for soaspec'
11
11
 
12
- gem_content = <<-EOF
13
-
14
- source 'https://rubygems.org'
15
-
16
- gem 'data_magic'
17
- gem 'require_all'
18
- gem 'rspec_junit_formatter'
19
- gem 'rake'
20
- gem 'soaspec'
21
-
22
- EOF
23
-
24
12
  weather_web_service = <<-EOF
25
13
 
26
14
  require 'soaspec'
@@ -28,7 +16,7 @@ require 'soaspec'
28
16
  # This class is not part of the gem. It's an example of a class you can make
29
17
  # to describe your APIs. Usually this would exist in the 'lib' directory
30
18
  # Common configuration for the Savon client should go here
31
- class WeatherWebService < Soaspec::BasicSoapHandler
19
+ class WeatherWebService < Soaspec::SoapHandler
32
20
  # Add to or override default Savon client options
33
21
  def savon_options
34
22
  {
@@ -84,9 +72,11 @@ soap_example.default_hash = { city_name: 'Sydney', country_name: 'Australia' }
84
72
 
85
73
  end
86
74
 
87
- soap_example.default_hash = { city_name: 'Washington' }
75
+ error_example = WeatherWebService.new('Get Weather')
76
+ error_example.operation = :get_weather
77
+ error_example.default_hash = { city_name: 'Washington' }
88
78
  context 'error scenarios' do
89
- context soap_example do
79
+ context error_example do
90
80
  describe Exchange.new(:error) do
91
81
  it_behaves_like 'error scenario'
92
82
  end
@@ -128,43 +118,6 @@ japan:
128
118
 
129
119
  EOF
130
120
 
131
- readme_content = <<-EOF
132
-
133
- # Prerequisites
134
- This creates files within an existing folder. It could add onto an existing project.
135
- For a new project create a folder and be at it's location on the command line
136
-
137
- ```
138
- mkdir soaspec_test
139
- cd soaspec_test
140
- ```
141
-
142
- Run `bundle install` to install the gems mentioned in the Gemfile.
143
-
144
- To avoid conflict with gems on the machine globally it may be better to specify gem location with:
145
-
146
- `bundle install --path ~/.gem`
147
-
148
- # Running tests
149
- On the command line type:
150
- `bundle exec rake spec` or simply `bundle exec rake`
151
-
152
- # Structure
153
-
154
- ## Tests
155
- Tests are within the 'spec' folder and end in '_spec'. Setup and teardown for tests is in 'spec/spec_helper'
156
-
157
- ## Templates
158
- These are the base requests with ERB inside them to create smartly changing requests accoring to the test.yml
159
-
160
- ## Libaries
161
- Libaries to be installed are in 'Gemfile'. Specific gem versions can be specified here and enforeced with `bundle exec rake`
162
-
163
- ## Reports
164
- Reports are shown in the 'logs' folder. By default Rake produces a junit, an html report, and a traffic.log file with the API request and responses in it
165
-
166
- EOF
167
-
168
121
  create_file(filename: 'Gemfile', content: gem_content)
169
122
  create_file(filename: 'Rakefile', content: rake_content)
170
123
  create_file(filename: 'README.md', content: readme_content)
data/lib/soaspec.rb CHANGED
@@ -9,7 +9,7 @@ require 'date'
9
9
 
10
10
  require 'soaspec/version'
11
11
  require 'soaspec/basic_soap_handler'
12
- require 'soaspec/tester'
12
+ require 'soaspec/exchange_handler'
13
13
  require 'soaspec/exchange'
14
14
  require 'soaspec/matchers'
15
15
  require 'soaspec/soaspec_shared_examples'
@@ -1,5 +1,5 @@
1
1
 
2
- require_relative 'tester'
2
+ require_relative 'exchange_handler'
3
3
  require_relative 'hash_methods'
4
4
  require_relative 'xpath_not_found'
5
5
  require_relative 'accessors'
@@ -17,7 +17,7 @@ module Soaspec
17
17
  end
18
18
 
19
19
  # Wraps around Savon client defining default values dependent on the soap request
20
- class BasicSoapHandler < Tester
20
+ class SoapHandler < ExchangeHandler
21
21
  extend Soaspec::Accessors
22
22
  extend Soaspec::SoapAccessors
23
23
 
@@ -106,6 +106,19 @@ module Soaspec
106
106
  @default_hash = Soaspec::Environment.always_use_keys? ? hash.transform_keys_to_symbols : hash
107
107
  end
108
108
 
109
+ # @param [Hash] format Format of expected result
110
+ # @return [Object] Generic body to be displayed in error messages
111
+ def response_body(response, format: :hash)
112
+ case format
113
+ when :hash
114
+ response.body
115
+ when :xml
116
+ response.body.to_xml
117
+ else
118
+ response.body
119
+ end
120
+ end
121
+
109
122
  def status_code_for(response)
110
123
  response.http.code
111
124
  end
@@ -139,4 +152,12 @@ module Soaspec
139
152
  end
140
153
 
141
154
  end
155
+
156
+ class BasicSoapHandler < SoapHandler
157
+
158
+ def initialize(name, specific_options = {})
159
+ super
160
+ warn "'BasicSoapHandler' class is Deprecated. Please use 'SoapHandler' instead"
161
+ end
162
+ end
142
163
  end
@@ -1,7 +1,8 @@
1
1
 
2
2
  module Soaspec
3
+ # Inherit this for a class describing how to implement a particular exchange.
3
4
  # Has basic methods common for methods defining RSpec tests in YAML
4
- class Tester
5
+ class ExchangeHandler
5
6
 
6
7
  # Retrieve the name of the template file to be used in the API request
7
8
  attr_reader :template_name
@@ -83,6 +83,46 @@ end
83
83
  EOF
84
84
  end
85
85
 
86
+ # @return [String] Content of README.md to aid someone getting started with this using this gem
87
+ def readme_content
88
+ <<-EOF
89
+
90
+ # Prerequisites
91
+ This creates files within an existing folder. It could add onto an existing project.
92
+ For a new project create a folder and be at it's location on the command line
93
+
94
+ ```
95
+ mkdir soaspec_test
96
+ cd soaspec_test
97
+ ```
98
+
99
+ Run `bundle install` to install the gems mentioned in the Gemfile.
100
+
101
+ To avoid conflict with gems on the machine globally it may be better to specify gem location with:
102
+
103
+ `bundle install --path ~/.gem`
104
+
105
+ # Running tests
106
+ On the command line type:
107
+ `bundle exec rake spec` or simply `bundle exec rake`
108
+
109
+ # Structure
110
+
111
+ ## Tests
112
+ Tests are within the 'spec' folder and end in '_spec'. Setup and teardown for tests is in 'spec/spec_helper'
113
+
114
+ ## Templates
115
+ These are the base requests with ERB inside them to create smartly changing requests accoring to the test.yml
116
+
117
+ ## Libaries
118
+ Libaries to be installed are in 'Gemfile'. Specific gem versions can be specified here and enforeced with `bundle exec rake`
119
+
120
+ ## Reports
121
+ Reports are shown in the 'logs' folder. By default Rake produces a junit, an html report, and a traffic.log file with the API request and responses in it
122
+
123
+ EOF
124
+ end
125
+
86
126
  # Convert key in camelcase to underscore separated (snakecase)
87
127
  def underscore_key(key)
88
128
  key.to_s.gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
@@ -1,5 +1,5 @@
1
1
 
2
- require_relative 'tester'
2
+ require_relative 'exchange_handler'
3
3
  require_relative 'hash_methods'
4
4
  require_relative 'xpath_not_found'
5
5
  require_relative 'accessors'
@@ -21,7 +21,7 @@ module Soaspec
21
21
  end
22
22
 
23
23
  # Wraps around Savon client defining default values dependent on the soap request
24
- class RestHandler < Tester
24
+ class RestHandler < ExchangeHandler
25
25
  extend Soaspec::RestAccessors
26
26
  extend Soaspec::Accessors
27
27
 
@@ -93,6 +93,12 @@ module Soaspec
93
93
  response
94
94
  end
95
95
 
96
+ # @param [Hash] format Format of expected result. Ignored for this
97
+ # @return [Object] Generic body to be displayed in error messages
98
+ def response_body(response, format: :hash)
99
+ extract_hash response
100
+ end
101
+
96
102
  def include_in_body?(response, expected)
97
103
  response.body.include? expected
98
104
  end
@@ -1,3 +1,3 @@
1
1
  module Soaspec
2
- VERSION = '0.0.28'
2
+ VERSION = '0.0.29'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: soaspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.28
4
+ version: 0.0.29
5
5
  platform: ruby
6
6
  authors:
7
7
  - SamuelGarrattIQA
@@ -154,13 +154,13 @@ files:
154
154
  - lib/soaspec/accessors.rb
155
155
  - lib/soaspec/basic_soap_handler.rb
156
156
  - lib/soaspec/exchange.rb
157
+ - lib/soaspec/exchange_handler.rb
157
158
  - lib/soaspec/exe_helpers.rb
158
159
  - lib/soaspec/hash_methods.rb
159
160
  - lib/soaspec/matchers.rb
160
161
  - lib/soaspec/rest_handler.rb
161
162
  - lib/soaspec/soaspec_shared_examples.rb
162
163
  - lib/soaspec/spec_logger.rb
163
- - lib/soaspec/tester.rb
164
164
  - lib/soaspec/version.rb
165
165
  - lib/soaspec/xpath_not_found.rb
166
166
  - soaspec.gemspec