soaspec 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +15 -15
  3. data/.gitlab-ci.yml +48 -48
  4. data/.rspec +3 -3
  5. data/.rubocop.yml +2 -2
  6. data/CODE_OF_CONDUCT.md +74 -74
  7. data/ChangeLog +408 -404
  8. data/Gemfile +6 -6
  9. data/LICENSE.txt +21 -21
  10. data/README.md +113 -113
  11. data/Rakefile +24 -24
  12. data/Todo.md +6 -6
  13. data/exe/soaspec +109 -109
  14. data/exe/soaspec-virtual-server +156 -156
  15. data/exe/xml_to_yaml_file +60 -60
  16. data/lib/soaspec.rb +107 -103
  17. data/lib/soaspec/core_ext/hash.rb +83 -83
  18. data/lib/soaspec/exchange.rb +235 -235
  19. data/lib/soaspec/exchange_handlers/exchange_handler.rb +103 -103
  20. data/lib/soaspec/exchange_handlers/handler_accessors.rb +106 -106
  21. data/lib/soaspec/exchange_handlers/rest_accessors.rb +54 -92
  22. data/lib/soaspec/exchange_handlers/rest_handler.rb +318 -314
  23. data/lib/soaspec/exchange_handlers/rest_methods.rb +44 -44
  24. data/lib/soaspec/exchange_handlers/soap_handler.rb +236 -236
  25. data/lib/soaspec/exe_helpers.rb +60 -60
  26. data/lib/soaspec/generator/.rspec.erb +5 -5
  27. data/lib/soaspec/generator/.travis.yml.erb +5 -5
  28. data/lib/soaspec/generator/Gemfile.erb +8 -8
  29. data/lib/soaspec/generator/README.md.erb +29 -29
  30. data/lib/soaspec/generator/Rakefile.erb +19 -19
  31. data/lib/soaspec/generator/config/data/default.yml.erb +1 -1
  32. data/lib/soaspec/generator/lib/blz_service.rb.erb +26 -26
  33. data/lib/soaspec/generator/lib/dynamic_class_content.rb.erb +12 -12
  34. data/lib/soaspec/generator/lib/shared_example.rb.erb +8 -8
  35. data/lib/soaspec/generator/spec/dynamic_soap_spec.rb.erb +12 -12
  36. data/lib/soaspec/generator/spec/soap_spec.rb.erb +51 -51
  37. data/lib/soaspec/generator/spec/spec_helper.rb.erb +20 -20
  38. data/lib/soaspec/generator/template/soap_template.xml +6 -6
  39. data/lib/soaspec/interpreter.rb +40 -40
  40. data/lib/soaspec/matchers.rb +65 -65
  41. data/lib/soaspec/not_found_errors.rb +13 -13
  42. data/lib/soaspec/o_auth2.rb +65 -0
  43. data/lib/soaspec/soaspec_shared_examples.rb +24 -24
  44. data/lib/soaspec/spec_logger.rb +34 -27
  45. data/lib/soaspec/test_server/bank.wsdl +90 -90
  46. data/lib/soaspec/test_server/get_bank.rb +160 -160
  47. data/lib/soaspec/test_server/id_manager.rb +31 -31
  48. data/lib/soaspec/test_server/invoices.rb +27 -27
  49. data/lib/soaspec/test_server/namespace.xml +14 -14
  50. data/lib/soaspec/test_server/note.xml +5 -5
  51. data/lib/soaspec/test_server/puppy_service.rb +20 -20
  52. data/lib/soaspec/test_server/test_attribute.rb +13 -13
  53. data/lib/soaspec/test_server/test_namespace.rb +12 -12
  54. data/lib/soaspec/version.rb +2 -2
  55. data/lib/soaspec/wsdl_generator.rb +144 -144
  56. data/soaspec.gemspec +46 -46
  57. data/test.wsdl +116 -116
  58. data/test.xml +10 -10
  59. data/test_wsdl.rb +43 -43
  60. metadata +4 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 1e6f5ddf18a44208e620f9c1e4c11721260af6e065dadc234cced8975c07d39e
4
- data.tar.gz: 521bc07ba5261761a53cd5d9e701af4a16768f3bcb0f0dbe4de039c7ba7e92f5
2
+ SHA1:
3
+ metadata.gz: b9b7d323882a354122a45f214d3e933468920297
4
+ data.tar.gz: b332de933ab672967e19d785b708c61ea5b6e91f
5
5
  SHA512:
6
- metadata.gz: 27e4cbfd225fb28720df84062cc232443bcd4cae64e45d361cd5104c24083f40452272f1d558bf71a11ff4ac39a6efcb356a4138c7ad92a93e4af8d58c665f15
7
- data.tar.gz: 606453ce3a72c8c8e3e7d8cd84bb88b75b6c7ce4f537ebb47fd5f82e6dd0187f0f31a0cb0b6b4936ef0e7587c3b292779072efdf52b31442db6bcb1665e0cbc5
6
+ metadata.gz: f783041404eae4e10ab366832f8648914da04cc2dbe642bb7250c3ff442c29aa17758ba6244532bc1c41f7dd194c8b22fff548e16bc7089ef1966cf01b2511d3
7
+ data.tar.gz: 921aab3a147c364f5dfd06e62a194dcb36d5b64827e7211575238cbdfef41344d06d6cb37b33d89511f9c2cd018e1ec280d9c4377950384965b5af9cd2e15a3e
data/.gitignore CHANGED
@@ -1,15 +1,15 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /logs/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- /.idea/
11
- Gemfile.lock
12
- coverage
13
-
14
- # rspec failure tracking
15
- .rspec_status
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /logs/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ /.idea/
11
+ Gemfile.lock
12
+ coverage
13
+
14
+ # rspec failure tracking
15
+ .rspec_status
@@ -1,49 +1,49 @@
1
- before_script:
2
- - apt-get update -qq && apt-get install -y -qq sqlite3 libsqlite3-dev nodejs
3
- - ruby -v
4
- - which ruby
5
- - gem install bundler rake --no-ri --no-rdoc
6
- - bundle install --jobs $(nproc) "${FLAGS[@]}"
7
-
8
- rspec:
9
- stage: test
10
- script:
11
- - bundle exec rake spec
12
- artifacts:
13
- paths:
14
- - coverage/
15
-
16
- cucumber:
17
- stage: test
18
- script:
19
- - bundle exec cucumber
20
-
21
- code_quality:
22
- image: docker:stable
23
- variables:
24
- DOCKER_DRIVER: overlay2
25
- allow_failure: true
26
- services:
27
- - docker:stable-dind
28
- script:
29
- - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
30
- - docker run
31
- --env SOURCE_CODE="$PWD"
32
- --volume "$PWD":/code
33
- --volume /var/run/docker.sock:/var/run/docker.sock
34
- "registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
35
- artifacts:
36
- paths: [gl-code-quality-report.json]
37
-
38
- pages:
39
- stage: deploy
40
- dependencies:
41
- - rspec
42
- script:
43
- - mv coverage/ public/
44
- artifacts:
45
- paths:
46
- - public
47
- expire_in: 30 days
48
- only:
1
+ before_script:
2
+ - apt-get update -qq && apt-get install -y -qq sqlite3 libsqlite3-dev nodejs
3
+ - ruby -v
4
+ - which ruby
5
+ - gem install bundler rake --no-ri --no-rdoc
6
+ - bundle install --jobs $(nproc) "${FLAGS[@]}"
7
+
8
+ rspec:
9
+ stage: test
10
+ script:
11
+ - bundle exec rake spec
12
+ artifacts:
13
+ paths:
14
+ - coverage/
15
+
16
+ cucumber:
17
+ stage: test
18
+ script:
19
+ - bundle exec cucumber
20
+
21
+ code_quality:
22
+ image: docker:stable
23
+ variables:
24
+ DOCKER_DRIVER: overlay2
25
+ allow_failure: true
26
+ services:
27
+ - docker:stable-dind
28
+ script:
29
+ - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
30
+ - docker run
31
+ --env SOURCE_CODE="$PWD"
32
+ --volume "$PWD":/code
33
+ --volume /var/run/docker.sock:/var/run/docker.sock
34
+ "registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
35
+ artifacts:
36
+ paths: [gl-code-quality-report.json]
37
+
38
+ pages:
39
+ stage: deploy
40
+ dependencies:
41
+ - rspec
42
+ script:
43
+ - mv coverage/ public/
44
+ artifacts:
45
+ paths:
46
+ - public
47
+ expire_in: 30 days
48
+ only:
49
49
  - master
data/.rspec CHANGED
@@ -1,3 +1,3 @@
1
- --require spec_helper
2
- --format documentation
3
- --color
1
+ --require spec_helper
2
+ --format documentation
3
+ --color
@@ -1,2 +1,2 @@
1
- Metrics/LineLength:
2
- Max: 154
1
+ Metrics/LineLength:
2
+ Max: 154
@@ -1,74 +1,74 @@
1
- # Contributor Covenant Code of Conduct
2
-
3
- ## Our Pledge
4
-
5
- In the interest of fostering an open and welcoming environment, we as
6
- contributors and maintainers pledge to making participation in our project and
7
- our community a harassment-free experience for everyone, regardless of age, body
8
- size, disability, ethnicity, gender identity and expression, level of experience,
9
- nationality, personal appearance, race, religion, or sexual identity and
10
- orientation.
11
-
12
- ## Our Standards
13
-
14
- Examples of behavior that contributes to creating a positive environment
15
- include:
16
-
17
- * Using welcoming and inclusive language
18
- * Being respectful of differing viewpoints and experiences
19
- * Gracefully accepting constructive criticism
20
- * Focusing on what is best for the community
21
- * Showing empathy towards other community members
22
-
23
- Examples of unacceptable behavior by participants include:
24
-
25
- * The use of sexualized language or imagery and unwelcome sexual attention or
26
- advances
27
- * Trolling, insulting/derogatory comments, and personal or political attacks
28
- * Public or private harassment
29
- * Publishing others' private information, such as a physical or electronic
30
- address, without explicit permission
31
- * Other conduct which could reasonably be considered inappropriate in a
32
- professional setting
33
-
34
- ## Our Responsibilities
35
-
36
- Project maintainers are responsible for clarifying the standards of acceptable
37
- behavior and are expected to take appropriate and fair corrective action in
38
- response to any instances of unacceptable behavior.
39
-
40
- Project maintainers have the right and responsibility to remove, edit, or
41
- reject comments, commits, code, wiki edits, issues, and other contributions
42
- that are not aligned to this Code of Conduct, or to ban temporarily or
43
- permanently any contributor for other behaviors that they deem inappropriate,
44
- threatening, offensive, or harmful.
45
-
46
- ## Scope
47
-
48
- This Code of Conduct applies both within project spaces and in public spaces
49
- when an individual is representing the project or its community. Examples of
50
- representing a project or community include using an official project e-mail
51
- address, posting via an official social media account, or acting as an appointed
52
- representative at an online or offline event. Representation of a project may be
53
- further defined and clarified by project maintainers.
54
-
55
- ## Enforcement
56
-
57
- Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
- reported by contacting the project team at samuel.garratt@integrationqa.com. All
59
- complaints will be reviewed and investigated and will result in a response that
60
- is deemed necessary and appropriate to the circumstances. The project team is
61
- obligated to maintain confidentiality with regard to the reporter of an incident.
62
- Further details of specific enforcement policies may be posted separately.
63
-
64
- Project maintainers who do not follow or enforce the Code of Conduct in good
65
- faith may face temporary or permanent repercussions as determined by other
66
- members of the project's leadership.
67
-
68
- ## Attribution
69
-
70
- This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
- available at [http://contributor-covenant.org/version/1/4][version]
72
-
73
- [homepage]: http://contributor-covenant.org
74
- [version]: http://contributor-covenant.org/version/1/4/
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, gender identity and expression, level of experience,
9
+ nationality, personal appearance, race, religion, or sexual identity and
10
+ orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at samuel.garratt@integrationqa.com. All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at [http://contributor-covenant.org/version/1/4][version]
72
+
73
+ [homepage]: http://contributor-covenant.org
74
+ [version]: http://contributor-covenant.org/version/1/4/
data/ChangeLog CHANGED
@@ -1,405 +1,409 @@
1
- Version 0.1.6
2
- * Enhancements
3
- * Bind localhost to 0.0.0.0 so service is accessible outside localhost
4
-
5
- Version 0.1.5
6
- * Enhancements
7
- * Package spec changes status after a post is made. Help to illustrate scenario where status changes
8
- * Record last exchange made for debugging purposes in 'last_exchange'
9
-
10
- Version 0.1.4
11
- * Enhancements
12
- * create_file method create folders automatically if necessary
13
- * Package spec to help learn testing for items in a list
14
- * Added docs for soaspec-virtual-server
15
-
16
- Version 0.1.3
17
- * Enhancements
18
- * Ability to set template folder
19
- * Json Path handle multiple paths separated by commas
20
-
21
- Version 0.1.1
22
- * Enhancements
23
- * Added ability to turn off logs (helpful if making a lot of API calls)
24
-
25
- Version 0.1.0
26
- * Enhancements
27
- * Cleaned up unit tests for WSDL generator. Won't bother for SOAP ComplexType for now as I'm not needing this and it looks like Savon 3 will create example requests anyway
28
- * Put SOAP Basic Auth in Example
29
- * Added template handling for REST handler
30
-
31
- Version 0.0.89
32
- * Enhancements
33
- * Move more functionality out of soaspec exe and into WsdlGenerator. Started unit tests for it
34
-
35
- Version 0.0.88
36
- * Bug Fix
37
- * Corrected '_format' variable name that was breaking failing to find rest element
38
-
39
- Version 0.0.87
40
- * Bug Fix
41
- * Fixed incorrect logging for when 'debug_oauth' is off
42
-
43
- Version 0.0.86
44
- * Enhancements
45
- * 'debug_oauth' attribute used to toggle showing params used in retrieving access token
46
-
47
- Version 0.0.85
48
- * Enhancements
49
- * Interpret XML and JSON better so that JSON with XML in it's tags is catered for
50
-
51
- Version 0.0.84
52
- * Enhancements
53
- * 'strip_namespaces' defined in exchange handlers not globally which makes more sense
54
- * Created 'to_hash' method for Exchange that returns a Hash of XML or JSON response (primarily for REST)
55
-
56
- Version 0.0.83
57
- * Enhancements
58
- * Handle BOM or other characters that could be at start of xml of json response string
59
-
60
- Version 0.0.82
61
- * Enhancements
62
- * Fixed namespace handling for REST
63
-
64
- Version 0.0.81
65
- * Enhancements
66
- * SoapHandler - define exchange method for each SOAP operation. See `one_off_spec` for example
67
-
68
- Version 0.0.80
69
- * Enhancements
70
- * `values_from_path` method on `RestHandler` to easily extract multiple values for an xpath or json path
71
- * Bug fix
72
- * Support response that has white space surrounding message
73
-
74
- Version 0.0.79
75
- * Enhancements
76
- * `values_from_path` method on `SoapHandler` to easily extract multiple values for an xpath
77
- * If `id` is specified on associated factory, FactoryBot will populate the primary factory with that id. See `rest/factory_spec` for eg
78
-
79
- Version 0.0.78
80
- * Enhancements
81
- * Use 'thor' for `soaspec generate`, allowing less prompt and more options through command line. Added tests for it
82
-
83
- Version 0.0.77
84
- * Enhancements
85
- * Use 'thor' for soaspec-init binary changing it to be `soaspec init`. Will update `soaspec-generate` in next version
86
- * Put pause of 1/2 a second for each API retry. Often retry is too quick otherwise
87
-
88
- Version 0.0.76
89
- * Bug fix
90
- * Fixed BLZService scenario on soaspec-virtual-server
91
- * Fixed return value for retry_for_success failure
92
- * Enhancements
93
- * Added method to indicate a factory create should actually return a failure status
94
-
95
- Version 0.0.75
96
- * Enhancements
97
- * For Factory created methods, set retry_for_success to true. Allow for this to be set at Exchange class level
98
-
99
- Version 0.0.74
100
- * Enhancements
101
- * RestHandler, enable api username to be set upon initialisation
102
-
103
- Version 0.0.73
104
- * Enhancements
105
- * Added 'default_handler' method with which define an exchange_handler to be created when an exchange is initialized
106
- * Refactoring
107
- * Use `@exchange_handler` instead of `@api_class` which is more consistent
108
-
109
- Version 0.0.72
110
- * Enhancements
111
- * Add ability to convert XML response to lower case for simpler xpath searching
112
-
113
- Version 0.0.71
114
- * Bug fix
115
- * Got exe 'soaspec-virtual-server' working
116
-
117
- Version 0.0.70
118
- * Enhancements
119
- * Added api_username method to REST handler to change user for an API during runtime
120
-
121
- Version 0.0.69
122
- * Enhancements
123
- * Calculate base_url ERB at time of handler's first request (Rather than when initialised).
124
- - Important for where base url uses ERB and so does oauth whose user may change
125
- * Demonstrate using oauth via spec
126
- * Demonstrate using basic auth via spec
127
-
128
- Version 0.0.68
129
- * Enhancements
130
- * Use ERB to calculate base_url for dynamic bases
131
-
132
- Version 0.0.67
133
- * Enhancements
134
- * Handle scenario where Request key is unconventional and not PascalCase key snakecase convert would break it
135
- - if first character of key is captial, PascalCase conversion is ignored
136
-
137
- Version 0.0.66
138
- * Enhancements
139
- * Added method to convert REST request keys to 'PascalCase' if 'pascal_keys' is set to true
140
- * This also converts paths obtaining elements to 'PascalCase' if they're simple and have no starting '//' or '$..'
141
-
142
- Version 0.0.65
143
- * Enhancements
144
- * Added ability to set 'suburl' and 'method' in Exchange accessor. Will be used in FactoryBot later
145
-
146
- Version 0.0.64
147
- * Enhancements
148
- * Got FactoryBot working for RestHandler. See specs for example
149
- * Add element? method to exchange to make it easier to check element is at path
150
- * Define 'element_name?' created when element is defined on ExchangeHandler
151
-
152
- Version 0.0.63
153
- * Enhancements
154
- * Interpret ERB for oauth credentials within oauth response. Needed for when params like 'username' can change in runtime
155
-
156
- Version 0.0.62
157
- * Enhancements
158
- * Use q parameter to simply to query parameters on REST requests
159
-
160
- Version 0.0.61
161
- * Enhancements
162
- * Retrieving oauth response try 3 times (to bypass intermittent errors)
163
-
164
- Version 0.0.60
165
- * Enhancements
166
- * Allow for factory_bot with automatic setting of missing setter methods
167
-
168
- Version 0.0.59
169
- * Enhancements
170
- * Perform ERB in headers to make using access_token using 'headers' possible
171
- * Try better way of testing `soaspec-init`.
172
-
173
- Version 0.0.58
174
- * Enhancements
175
- * Add method to set parts of the request body through `exchange[key]= 'value'`
176
- * Added example of Cucumber feature demonstrating this
177
-
178
- Version 0.0.56
179
- * Bug fix
180
- * Handle creating of traffic.log file within lib properly
181
-
182
- Version 0.0.55
183
- * Enhancements
184
- * Made `soaspec-virtual-server` exe to handle self served test server. Will be used in wiki tutorial
185
-
186
- Version 0.0.54
187
- * Enhancements
188
- * Make 'headers' accessor for setting headers on RestHandler easier
189
-
190
- Version 0.0.53
191
- * Enhancements
192
- * Make attribute possible for REST methods as well (as they can use XML too)
193
- * For non XML, non JSON responses, handle with regex or key for a Hash
194
-
195
- Version 0.0.52
196
- * Enhancements
197
- * Now have 'attribute' accessor making it easy to access an attribute from a response
198
-
199
- Version 0.0.51
200
- * Enhancements
201
- * Allow for 'default_hash=' method to be used in RestHandler. See 'many_calls_one_method_spec' for example
202
- * Got 'element' accessor working correctly (See soap/hash_spec.rb + 'blz_service' for example)
203
-
204
- Version 0.0.50
205
- * Enhancements
206
- * Able to use ERB in oauth parameters and extract oauth hash with 'oauth_response' method defined by 'oauth_file'
207
-
208
- Version 0.0.47
209
- * Bug Fix
210
- * Using 'Strip namespace' handle both namespace or not dependent if used
211
-
212
- Version 0.0.47
213
- * Enhancements
214
- * 'success scenarios' shared eg and 'retry_for_success' exchange method's status codes include 200..299, not just 200.
215
-
216
- Version 0.0.46
217
- * Enhancements
218
- * 'include_key?' method use 'value_from_path'. Iterating through Hashes with 'include_key?' wouldn't work as expected with some JSON bodies with my current implementation
219
-
220
- Version 0.0.45
221
- * Enhancements
222
- * No need to use 'name' when creating SoapHandler and RestHandler. Default is ClassName
223
-
224
- Version 0.0.44
225
- * Enhancements
226
- * Test Server log to logs/test_server.log
227
- * Simplify ExchangeHandler storing and retrieving values (see soap/hash_spec.rb)
228
- * Make setting SoapHandler operation and other params possible through object instantiation. Less code needed
229
-
230
- Version 0.0.43
231
- * Bug fix
232
- * Remove Environment namespace from 'soaspec-generate'
233
- * Enhancements
234
- * Convenience methods for REST calls in which you can call something like 'ClassInheritingRestHandler.get(params)' See 'spec/soaspec/rest/one_off_spec.rb' for details
235
-
236
- Version 0.0.42
237
- * Enhancements
238
- * Set Soaspec.api_handler work class is created. No need to call '.to_s' method
239
-
240
- Version 0.0.41
241
- * Bug fix
242
- * soaspec-generate not designed to work with virtual service. Rakefile not try to set that up
243
-
244
- Version 0.0.40
245
- * Enhancements
246
- * soaspec-generate now handle a wsdl without parameters in the operation and rather look up input element type
247
- * test_server virtual service now handle scenario where bank is not found and test made for that
248
-
249
- Version 0.0.39
250
- * Spec
251
- * Create task to use soaspec-init to create test structure and test it.
252
- * Enhancements
253
- * Take away need to use Environment namespace
254
- * Added response headers to REST response log
255
- * Now using virtual Web Service for SOAP
256
-
257
- Version 0.0.38
258
- * Bug fix
259
- * Fixed error in soaspec-generate. TODO: Test this in CI
260
-
261
- Version 0.0.37 / 2018-3-16
262
- * Enhancements
263
- * Made retry_for_success method to keep making request until 200 status code if set on exchange
264
- * If '$' not included for json_path, by default a '$..' is added for convenience
265
-
266
- Version 0.0.36 / 2018-3-15
267
- * Bug fix
268
- * Make test name log in correct place
269
- * Enhancements
270
- * Made accessor 'mandatory_json_values' to make it easier to share mandatory json path - value pairs
271
- * Created 'store' method for handler through which one can store a value and use it later on it in the same context
272
- * Deprecated
273
- * Removed old 'mandatory_elements', 'mandatory_xpath_values' overridden way of handling data for favor of new way of it setting 'expected_mandatory_elements'
274
-
275
- Version 0.0.35 / 2018-3-13
276
- * Enhancements
277
- * Handle array of JSON hashes starting with '['
278
- * Handle patch and put methods with data for REST
279
-
280
- Version 0.0.34 / 2018-3-12
281
- * Enhancements
282
- * Add oauth2 and oauth2_file methods to make it easy to load oauth2 parameters. Still a work in progress to handle all oauth2 variations
283
-
284
- Version 0.0.33 / 2018-3-9
285
- * Enhancements
286
- * Use 'jsonpath' instead of dig to check JSON responses. Much better for finding complex paths
287
-
288
- Version 0.0.32 / 2018-3-9
289
- * Enhancements
290
- * Made :body key in hash that can be used to use JSON.generate for a payload when using rest_handler exchanges
291
-
292
- Version 0.0.31 / 2018-3-8
293
- * Enhancements
294
- * Compacted unit tests for exchange handler
295
- * Implemented include_key? and find via xpath for REST handler. See specs
296
-
297
- Version 0.0.30 / 2018-3-6
298
- * Bug fix
299
- * Made generated class file name in soaspec-generate snakecase (was CamelCase)
300
-
301
- Version 0.0.29 / 2018-3-6
302
- * Refactorings
303
- * Base 'test' class from 'Tester' to 'ExhangeHandler'
304
- * Made default Soap Handler class 'SoapHandler' and making use of 'BasicSoapHandler' deprecated
305
-
306
- Version 0.0.28 / 2018-3-6
307
- * Enhancements
308
- * Added not_found matcher and used in spec example
309
- * Only call request upon first need of an Exchange response. This means test request is made as part of 'it' rather than in describe
310
-
311
- Version 0.0.27 / 2018-3-5
312
- * Bug fix
313
- * Fixed log file not present error
314
- * Updated exe binaries to use latest format
315
-
316
- Version 0.0.26 / 2018-3-5
317
- * Refactorings
318
- * Using methods to define mandatory_elements, mandatory_xpath_values, root_attributes, base_url. Please see specs. This is shorter to type and clearer
319
-
320
- Version 0.0.25 / 2018-2-25
321
- * Enhancements
322
- * Updated rest_handler to convert JSON and XML into Hash and use it in 'contain_value'. This still needs work.
323
- * Showed example of workflow using 'pet' url
324
-
325
- Version 0.0.24 / 2018-2-25
326
- * Enhancements
327
- * Added to soaspec-generate more types when creating YAML with data (int, boolean, double and custom enumeration).
328
- * Binaries use common module (exe-helper) to reduce repeatability
329
- * TODO: soaspec-generate read xsd's mentioned to import in WSDL schema
330
-
331
- Version 0.0.23 / 2018-2-23
332
- * Enhancements
333
- * Created RestHandler class (Very messy and ugly still) to handle REST requests using style used for SOAP using Rest Client resource
334
-
335
- Version 0.0.22 / 2018-2-15
336
- * Enhancements
337
- * Created new 'include_in_body' matcher to find value anywhere in response body (which could be a substring of an element)
338
-
339
- Version 0.0.21 / 2018-1-29
340
- * Enhancements
341
- * Added soaspec-generate - still in POC mode to generate files from a WSDL.
342
- * Added test_wsdl to start at validating xml according to WSDL. Still needs polishing
343
-
344
- Version 0.0.20 / 2018-1-26
345
- * Enhancements
346
- * Added ability to strip namespaces 'Soaspec::Environment.strip_namespaces = true'. See spec for example
347
- * Fixes
348
- * Made custom error and used it to make 'have_element_at_xpath' work when negated
349
-
350
- Version 0.0.19 / 2018-1-25
351
- * Enhancements
352
- * Added own shared examples to init script and to in built specs
353
-
354
- Version 0.0.18 / 2018-1-25
355
- * Fixes
356
- * Updated 'soaspec-init' so that it works again.
357
- * Enhancements
358
- * Added example showing representing data for request in YAML
359
-
360
- Version 0.0.17 / 2018-1-25
361
- * Fixes
362
- * Updated hash search so that it handles Array
363
-
364
- Version 0.0.16 / 2018-1-23
365
- * Fixes
366
- * Corrected logic of auto convert to hash. Previous version did not handle test specific values correctly
367
-
368
- Version 0.0.15 / 2018-1-23
369
- * Fixes
370
- * Updated code to convert string key in Savon request to key automatically by default before passing to Savon. This saves
371
- the user doing the conversion themselves.
372
-
373
- Version 0.0.14 / 2018-1-23
374
- * Fixes
375
- * Updated 'xml_to_yaml_file' exe to clean up YAML more. No more array for Hash value. Indenting needs work though.
376
- Now it's more like something you can read and pass into Savon request.
377
-
378
- Version 0.0.13 / 2018-1-23
379
- * Enhancements
380
- * Executable to create xml file from yaml
381
-
382
- Version 0.0.12 / 2018/1-22
383
- * Enhancements
384
- * Example name added to log file
385
-
386
- Version 0.0.10 / 2018-1-21
387
- * Enhancements
388
- * Added [] method to perform xpath assertion
389
- * Using Savon xpath. No need to explicitly provide namespace for xpath
390
-
391
- Version 0.0.9 / 2018-1-20
392
- * Refactoring
393
- * class_options -> savon_options - More specific
394
- * default_operation -> operation - Not default anymore so better not in name
395
- * Enhancements
396
- * Made mandatory_xpath_values method to add to 'success scenarios' shared example
397
-
398
- Version 0.0.8 / 2018-1-19
399
- * Enhancements
400
- * Added root_attributes method to add attribute to the root class
401
-
402
- Version 0.0.7 / 2018-1-19
403
- * Enhancements
404
- * Added contain_key matcher
1
+ Version 0.1.7
2
+ * Enhancements
3
+ * Include access token header automatically if 'authorization' is not set. Turn off with `Soaspec.auto_oauth = false`
4
+
5
+ Version 0.1.6
6
+ * Enhancements
7
+ * Bind localhost to 0.0.0.0 so service is accessible outside localhost
8
+
9
+ Version 0.1.5
10
+ * Enhancements
11
+ * Package spec changes status after a post is made. Help to illustrate scenario where status changes
12
+ * Record last exchange made for debugging purposes in 'last_exchange'
13
+
14
+ Version 0.1.4
15
+ * Enhancements
16
+ * create_file method create folders automatically if necessary
17
+ * Package spec to help learn testing for items in a list
18
+ * Added docs for soaspec-virtual-server
19
+
20
+ Version 0.1.3
21
+ * Enhancements
22
+ * Ability to set template folder
23
+ * Json Path handle multiple paths separated by commas
24
+
25
+ Version 0.1.1
26
+ * Enhancements
27
+ * Added ability to turn off logs (helpful if making a lot of API calls)
28
+
29
+ Version 0.1.0
30
+ * Enhancements
31
+ * Cleaned up unit tests for WSDL generator. Won't bother for SOAP ComplexType for now as I'm not needing this and it looks like Savon 3 will create example requests anyway
32
+ * Put SOAP Basic Auth in Example
33
+ * Added template handling for REST handler
34
+
35
+ Version 0.0.89
36
+ * Enhancements
37
+ * Move more functionality out of soaspec exe and into WsdlGenerator. Started unit tests for it
38
+
39
+ Version 0.0.88
40
+ * Bug Fix
41
+ * Corrected '_format' variable name that was breaking failing to find rest element
42
+
43
+ Version 0.0.87
44
+ * Bug Fix
45
+ * Fixed incorrect logging for when 'debug_oauth' is off
46
+
47
+ Version 0.0.86
48
+ * Enhancements
49
+ * 'debug_oauth' attribute used to toggle showing params used in retrieving access token
50
+
51
+ Version 0.0.85
52
+ * Enhancements
53
+ * Interpret XML and JSON better so that JSON with XML in it's tags is catered for
54
+
55
+ Version 0.0.84
56
+ * Enhancements
57
+ * 'strip_namespaces' defined in exchange handlers not globally which makes more sense
58
+ * Created 'to_hash' method for Exchange that returns a Hash of XML or JSON response (primarily for REST)
59
+
60
+ Version 0.0.83
61
+ * Enhancements
62
+ * Handle BOM or other characters that could be at start of xml of json response string
63
+
64
+ Version 0.0.82
65
+ * Enhancements
66
+ * Fixed namespace handling for REST
67
+
68
+ Version 0.0.81
69
+ * Enhancements
70
+ * SoapHandler - define exchange method for each SOAP operation. See `one_off_spec` for example
71
+
72
+ Version 0.0.80
73
+ * Enhancements
74
+ * `values_from_path` method on `RestHandler` to easily extract multiple values for an xpath or json path
75
+ * Bug fix
76
+ * Support response that has white space surrounding message
77
+
78
+ Version 0.0.79
79
+ * Enhancements
80
+ * `values_from_path` method on `SoapHandler` to easily extract multiple values for an xpath
81
+ * If `id` is specified on associated factory, FactoryBot will populate the primary factory with that id. See `rest/factory_spec` for eg
82
+
83
+ Version 0.0.78
84
+ * Enhancements
85
+ * Use 'thor' for `soaspec generate`, allowing less prompt and more options through command line. Added tests for it
86
+
87
+ Version 0.0.77
88
+ * Enhancements
89
+ * Use 'thor' for soaspec-init binary changing it to be `soaspec init`. Will update `soaspec-generate` in next version
90
+ * Put pause of 1/2 a second for each API retry. Often retry is too quick otherwise
91
+
92
+ Version 0.0.76
93
+ * Bug fix
94
+ * Fixed BLZService scenario on soaspec-virtual-server
95
+ * Fixed return value for retry_for_success failure
96
+ * Enhancements
97
+ * Added method to indicate a factory create should actually return a failure status
98
+
99
+ Version 0.0.75
100
+ * Enhancements
101
+ * For Factory created methods, set retry_for_success to true. Allow for this to be set at Exchange class level
102
+
103
+ Version 0.0.74
104
+ * Enhancements
105
+ * RestHandler, enable api username to be set upon initialisation
106
+
107
+ Version 0.0.73
108
+ * Enhancements
109
+ * Added 'default_handler' method with which define an exchange_handler to be created when an exchange is initialized
110
+ * Refactoring
111
+ * Use `@exchange_handler` instead of `@api_class` which is more consistent
112
+
113
+ Version 0.0.72
114
+ * Enhancements
115
+ * Add ability to convert XML response to lower case for simpler xpath searching
116
+
117
+ Version 0.0.71
118
+ * Bug fix
119
+ * Got exe 'soaspec-virtual-server' working
120
+
121
+ Version 0.0.70
122
+ * Enhancements
123
+ * Added api_username method to REST handler to change user for an API during runtime
124
+
125
+ Version 0.0.69
126
+ * Enhancements
127
+ * Calculate base_url ERB at time of handler's first request (Rather than when initialised).
128
+ - Important for where base url uses ERB and so does oauth whose user may change
129
+ * Demonstrate using oauth via spec
130
+ * Demonstrate using basic auth via spec
131
+
132
+ Version 0.0.68
133
+ * Enhancements
134
+ * Use ERB to calculate base_url for dynamic bases
135
+
136
+ Version 0.0.67
137
+ * Enhancements
138
+ * Handle scenario where Request key is unconventional and not PascalCase key snakecase convert would break it
139
+ - if first character of key is captial, PascalCase conversion is ignored
140
+
141
+ Version 0.0.66
142
+ * Enhancements
143
+ * Added method to convert REST request keys to 'PascalCase' if 'pascal_keys' is set to true
144
+ * This also converts paths obtaining elements to 'PascalCase' if they're simple and have no starting '//' or '$..'
145
+
146
+ Version 0.0.65
147
+ * Enhancements
148
+ * Added ability to set 'suburl' and 'method' in Exchange accessor. Will be used in FactoryBot later
149
+
150
+ Version 0.0.64
151
+ * Enhancements
152
+ * Got FactoryBot working for RestHandler. See specs for example
153
+ * Add element? method to exchange to make it easier to check element is at path
154
+ * Define 'element_name?' created when element is defined on ExchangeHandler
155
+
156
+ Version 0.0.63
157
+ * Enhancements
158
+ * Interpret ERB for oauth credentials within oauth response. Needed for when params like 'username' can change in runtime
159
+
160
+ Version 0.0.62
161
+ * Enhancements
162
+ * Use q parameter to simply to query parameters on REST requests
163
+
164
+ Version 0.0.61
165
+ * Enhancements
166
+ * Retrieving oauth response try 3 times (to bypass intermittent errors)
167
+
168
+ Version 0.0.60
169
+ * Enhancements
170
+ * Allow for factory_bot with automatic setting of missing setter methods
171
+
172
+ Version 0.0.59
173
+ * Enhancements
174
+ * Perform ERB in headers to make using access_token using 'headers' possible
175
+ * Try better way of testing `soaspec-init`.
176
+
177
+ Version 0.0.58
178
+ * Enhancements
179
+ * Add method to set parts of the request body through `exchange[key]= 'value'`
180
+ * Added example of Cucumber feature demonstrating this
181
+
182
+ Version 0.0.56
183
+ * Bug fix
184
+ * Handle creating of traffic.log file within lib properly
185
+
186
+ Version 0.0.55
187
+ * Enhancements
188
+ * Made `soaspec-virtual-server` exe to handle self served test server. Will be used in wiki tutorial
189
+
190
+ Version 0.0.54
191
+ * Enhancements
192
+ * Make 'headers' accessor for setting headers on RestHandler easier
193
+
194
+ Version 0.0.53
195
+ * Enhancements
196
+ * Make attribute possible for REST methods as well (as they can use XML too)
197
+ * For non XML, non JSON responses, handle with regex or key for a Hash
198
+
199
+ Version 0.0.52
200
+ * Enhancements
201
+ * Now have 'attribute' accessor making it easy to access an attribute from a response
202
+
203
+ Version 0.0.51
204
+ * Enhancements
205
+ * Allow for 'default_hash=' method to be used in RestHandler. See 'many_calls_one_method_spec' for example
206
+ * Got 'element' accessor working correctly (See soap/hash_spec.rb + 'blz_service' for example)
207
+
208
+ Version 0.0.50
209
+ * Enhancements
210
+ * Able to use ERB in oauth parameters and extract oauth hash with 'oauth_response' method defined by 'oauth_file'
211
+
212
+ Version 0.0.47
213
+ * Bug Fix
214
+ * Using 'Strip namespace' handle both namespace or not dependent if used
215
+
216
+ Version 0.0.47
217
+ * Enhancements
218
+ * 'success scenarios' shared eg and 'retry_for_success' exchange method's status codes include 200..299, not just 200.
219
+
220
+ Version 0.0.46
221
+ * Enhancements
222
+ * 'include_key?' method use 'value_from_path'. Iterating through Hashes with 'include_key?' wouldn't work as expected with some JSON bodies with my current implementation
223
+
224
+ Version 0.0.45
225
+ * Enhancements
226
+ * No need to use 'name' when creating SoapHandler and RestHandler. Default is ClassName
227
+
228
+ Version 0.0.44
229
+ * Enhancements
230
+ * Test Server log to logs/test_server.log
231
+ * Simplify ExchangeHandler storing and retrieving values (see soap/hash_spec.rb)
232
+ * Make setting SoapHandler operation and other params possible through object instantiation. Less code needed
233
+
234
+ Version 0.0.43
235
+ * Bug fix
236
+ * Remove Environment namespace from 'soaspec-generate'
237
+ * Enhancements
238
+ * Convenience methods for REST calls in which you can call something like 'ClassInheritingRestHandler.get(params)' See 'spec/soaspec/rest/one_off_spec.rb' for details
239
+
240
+ Version 0.0.42
241
+ * Enhancements
242
+ * Set Soaspec.api_handler work class is created. No need to call '.to_s' method
243
+
244
+ Version 0.0.41
245
+ * Bug fix
246
+ * soaspec-generate not designed to work with virtual service. Rakefile not try to set that up
247
+
248
+ Version 0.0.40
249
+ * Enhancements
250
+ * soaspec-generate now handle a wsdl without parameters in the operation and rather look up input element type
251
+ * test_server virtual service now handle scenario where bank is not found and test made for that
252
+
253
+ Version 0.0.39
254
+ * Spec
255
+ * Create task to use soaspec-init to create test structure and test it.
256
+ * Enhancements
257
+ * Take away need to use Environment namespace
258
+ * Added response headers to REST response log
259
+ * Now using virtual Web Service for SOAP
260
+
261
+ Version 0.0.38
262
+ * Bug fix
263
+ * Fixed error in soaspec-generate. TODO: Test this in CI
264
+
265
+ Version 0.0.37 / 2018-3-16
266
+ * Enhancements
267
+ * Made retry_for_success method to keep making request until 200 status code if set on exchange
268
+ * If '$' not included for json_path, by default a '$..' is added for convenience
269
+
270
+ Version 0.0.36 / 2018-3-15
271
+ * Bug fix
272
+ * Make test name log in correct place
273
+ * Enhancements
274
+ * Made accessor 'mandatory_json_values' to make it easier to share mandatory json path - value pairs
275
+ * Created 'store' method for handler through which one can store a value and use it later on it in the same context
276
+ * Deprecated
277
+ * Removed old 'mandatory_elements', 'mandatory_xpath_values' overridden way of handling data for favor of new way of it setting 'expected_mandatory_elements'
278
+
279
+ Version 0.0.35 / 2018-3-13
280
+ * Enhancements
281
+ * Handle array of JSON hashes starting with '['
282
+ * Handle patch and put methods with data for REST
283
+
284
+ Version 0.0.34 / 2018-3-12
285
+ * Enhancements
286
+ * Add oauth2 and oauth2_file methods to make it easy to load oauth2 parameters. Still a work in progress to handle all oauth2 variations
287
+
288
+ Version 0.0.33 / 2018-3-9
289
+ * Enhancements
290
+ * Use 'jsonpath' instead of dig to check JSON responses. Much better for finding complex paths
291
+
292
+ Version 0.0.32 / 2018-3-9
293
+ * Enhancements
294
+ * Made :body key in hash that can be used to use JSON.generate for a payload when using rest_handler exchanges
295
+
296
+ Version 0.0.31 / 2018-3-8
297
+ * Enhancements
298
+ * Compacted unit tests for exchange handler
299
+ * Implemented include_key? and find via xpath for REST handler. See specs
300
+
301
+ Version 0.0.30 / 2018-3-6
302
+ * Bug fix
303
+ * Made generated class file name in soaspec-generate snakecase (was CamelCase)
304
+
305
+ Version 0.0.29 / 2018-3-6
306
+ * Refactorings
307
+ * Base 'test' class from 'Tester' to 'ExhangeHandler'
308
+ * Made default Soap Handler class 'SoapHandler' and making use of 'BasicSoapHandler' deprecated
309
+
310
+ Version 0.0.28 / 2018-3-6
311
+ * Enhancements
312
+ * Added not_found matcher and used in spec example
313
+ * Only call request upon first need of an Exchange response. This means test request is made as part of 'it' rather than in describe
314
+
315
+ Version 0.0.27 / 2018-3-5
316
+ * Bug fix
317
+ * Fixed log file not present error
318
+ * Updated exe binaries to use latest format
319
+
320
+ Version 0.0.26 / 2018-3-5
321
+ * Refactorings
322
+ * Using methods to define mandatory_elements, mandatory_xpath_values, root_attributes, base_url. Please see specs. This is shorter to type and clearer
323
+
324
+ Version 0.0.25 / 2018-2-25
325
+ * Enhancements
326
+ * Updated rest_handler to convert JSON and XML into Hash and use it in 'contain_value'. This still needs work.
327
+ * Showed example of workflow using 'pet' url
328
+
329
+ Version 0.0.24 / 2018-2-25
330
+ * Enhancements
331
+ * Added to soaspec-generate more types when creating YAML with data (int, boolean, double and custom enumeration).
332
+ * Binaries use common module (exe-helper) to reduce repeatability
333
+ * TODO: soaspec-generate read xsd's mentioned to import in WSDL schema
334
+
335
+ Version 0.0.23 / 2018-2-23
336
+ * Enhancements
337
+ * Created RestHandler class (Very messy and ugly still) to handle REST requests using style used for SOAP using Rest Client resource
338
+
339
+ Version 0.0.22 / 2018-2-15
340
+ * Enhancements
341
+ * Created new 'include_in_body' matcher to find value anywhere in response body (which could be a substring of an element)
342
+
343
+ Version 0.0.21 / 2018-1-29
344
+ * Enhancements
345
+ * Added soaspec-generate - still in POC mode to generate files from a WSDL.
346
+ * Added test_wsdl to start at validating xml according to WSDL. Still needs polishing
347
+
348
+ Version 0.0.20 / 2018-1-26
349
+ * Enhancements
350
+ * Added ability to strip namespaces 'Soaspec::Environment.strip_namespaces = true'. See spec for example
351
+ * Fixes
352
+ * Made custom error and used it to make 'have_element_at_xpath' work when negated
353
+
354
+ Version 0.0.19 / 2018-1-25
355
+ * Enhancements
356
+ * Added own shared examples to init script and to in built specs
357
+
358
+ Version 0.0.18 / 2018-1-25
359
+ * Fixes
360
+ * Updated 'soaspec-init' so that it works again.
361
+ * Enhancements
362
+ * Added example showing representing data for request in YAML
363
+
364
+ Version 0.0.17 / 2018-1-25
365
+ * Fixes
366
+ * Updated hash search so that it handles Array
367
+
368
+ Version 0.0.16 / 2018-1-23
369
+ * Fixes
370
+ * Corrected logic of auto convert to hash. Previous version did not handle test specific values correctly
371
+
372
+ Version 0.0.15 / 2018-1-23
373
+ * Fixes
374
+ * Updated code to convert string key in Savon request to key automatically by default before passing to Savon. This saves
375
+ the user doing the conversion themselves.
376
+
377
+ Version 0.0.14 / 2018-1-23
378
+ * Fixes
379
+ * Updated 'xml_to_yaml_file' exe to clean up YAML more. No more array for Hash value. Indenting needs work though.
380
+ Now it's more like something you can read and pass into Savon request.
381
+
382
+ Version 0.0.13 / 2018-1-23
383
+ * Enhancements
384
+ * Executable to create xml file from yaml
385
+
386
+ Version 0.0.12 / 2018/1-22
387
+ * Enhancements
388
+ * Example name added to log file
389
+
390
+ Version 0.0.10 / 2018-1-21
391
+ * Enhancements
392
+ * Added [] method to perform xpath assertion
393
+ * Using Savon xpath. No need to explicitly provide namespace for xpath
394
+
395
+ Version 0.0.9 / 2018-1-20
396
+ * Refactoring
397
+ * class_options -> savon_options - More specific
398
+ * default_operation -> operation - Not default anymore so better not in name
399
+ * Enhancements
400
+ * Made mandatory_xpath_values method to add to 'success scenarios' shared example
401
+
402
+ Version 0.0.8 / 2018-1-19
403
+ * Enhancements
404
+ * Added root_attributes method to add attribute to the root class
405
+
406
+ Version 0.0.7 / 2018-1-19
407
+ * Enhancements
408
+ * Added contain_key matcher
405
409
  * mandatory_elements method created for SoapHandler - can be used to add tests to success scenarios (see example get_weather_web_service class for details)