soaspec 0.0.83 → 0.0.84

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.
Files changed (59) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +15 -15
  3. data/.gitlab-ci.yml +31 -31
  4. data/.rspec +3 -3
  5. data/.rubocop.yml +2 -2
  6. data/.travis.yml +5 -5
  7. data/CODE_OF_CONDUCT.md +74 -74
  8. data/ChangeLog +354 -349
  9. data/Gemfile +6 -6
  10. data/LICENSE.txt +21 -21
  11. data/README.md +85 -85
  12. data/Rakefile +24 -24
  13. data/Todo.md +6 -6
  14. data/exe/soaspec +123 -123
  15. data/exe/soaspec-virtual-server +98 -98
  16. data/exe/xml_to_yaml_file +60 -60
  17. data/lib/soaspec.rb +73 -86
  18. data/lib/soaspec/core_ext/hash.rb +83 -83
  19. data/lib/soaspec/exchange.rb +234 -230
  20. data/lib/soaspec/exchange_handlers/exchange_handler.rb +103 -98
  21. data/lib/soaspec/exchange_handlers/handler_accessors.rb +106 -95
  22. data/lib/soaspec/exchange_handlers/rest_accessors.rb +84 -0
  23. data/lib/soaspec/exchange_handlers/rest_handler.rb +296 -367
  24. data/lib/soaspec/exchange_handlers/rest_methods.rb +44 -44
  25. data/lib/soaspec/exchange_handlers/soap_handler.rb +236 -231
  26. data/lib/soaspec/exe_helpers.rb +56 -56
  27. data/lib/soaspec/generator/.rspec.erb +5 -5
  28. data/lib/soaspec/generator/.travis.yml.erb +5 -5
  29. data/lib/soaspec/generator/Gemfile.erb +8 -8
  30. data/lib/soaspec/generator/README.md.erb +29 -29
  31. data/lib/soaspec/generator/Rakefile.erb +19 -19
  32. data/lib/soaspec/generator/config/data/default.yml.erb +1 -1
  33. data/lib/soaspec/generator/lib/blz_service.rb.erb +26 -24
  34. data/lib/soaspec/generator/lib/dynamic_class_content.rb.erb +12 -12
  35. data/lib/soaspec/generator/lib/shared_example.rb.erb +8 -8
  36. data/lib/soaspec/generator/spec/dynamic_soap_spec.rb.erb +12 -14
  37. data/lib/soaspec/generator/spec/soap_spec.rb.erb +51 -53
  38. data/lib/soaspec/generator/spec/spec_helper.rb.erb +20 -20
  39. data/lib/soaspec/generator/template/soap_template.xml +6 -6
  40. data/lib/soaspec/interpreter.rb +35 -35
  41. data/lib/soaspec/matchers.rb +65 -65
  42. data/lib/soaspec/not_found_errors.rb +13 -13
  43. data/lib/soaspec/soaspec_shared_examples.rb +24 -24
  44. data/lib/soaspec/spec_logger.rb +27 -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/invoices.rb +27 -27
  48. data/lib/soaspec/test_server/namespace.xml +14 -14
  49. data/lib/soaspec/test_server/note.xml +5 -5
  50. data/lib/soaspec/test_server/puppy_service.rb +20 -20
  51. data/lib/soaspec/test_server/test_attribute.rb +13 -13
  52. data/lib/soaspec/version.rb +2 -2
  53. data/lib/soaspec/wsdl_generator.rb +93 -93
  54. data/soaspec.gemspec +45 -45
  55. data/test.wsdl +116 -116
  56. data/test.xml +10 -10
  57. data/test_rest.rb +97 -97
  58. data/test_wsdl.rb +43 -43
  59. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 746ec3677b28a1890e266a9abaadaf2f0d8db1c107157d5900f5e18a48dd043a
4
- data.tar.gz: 79da33750c1c8228d61ab012c00c0134e26b1dec6a84f0dcb0dafa101951132f
2
+ SHA1:
3
+ metadata.gz: f3dedcc3300e3d12059fb4cdd2fc8b5a36eaaecb
4
+ data.tar.gz: a07961c4d184d8232097997af1a01ee17e99b226
5
5
  SHA512:
6
- metadata.gz: 90f61a58d94675f509b3e200c3f82194249d71289692d9677afd65e083beb923804562305ca3947a08a7700af5660490972649e6f091ada6462d530720bd28fe
7
- data.tar.gz: 907e7e378ee388825ba91d7fd7ccb905d2650e83bfb0de046867fcfb604757e9f80b0b70bc07dc7c06f9bc9d14c01c62d379f85fe3939de637c57dd608e5dfe6
6
+ metadata.gz: 0c8ac9c2cb6bdfb71316feb7dcf042d6e8c9491b1671da88fb185ecf4b64358ed5669e2af4440e2564952b04d621925717a3b732124fa3b08896800200683b21
7
+ data.tar.gz: 62d17f4785f5a5710d28d5b1718f52d46b0afb983446c43d66e27747416d58943db0c522f64363e596538cee96eb813b61f3b8c604cb28494387be37f0bd94f2
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,32 +1,32 @@
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
- pages:
22
- stage: deploy
23
- dependencies:
24
- - rspec
25
- script:
26
- - mv coverage/ public/
27
- artifacts:
28
- paths:
29
- - public
30
- expire_in: 30 days
31
- 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
+ pages:
22
+ stage: deploy
23
+ dependencies:
24
+ - rspec
25
+ script:
26
+ - mv coverage/ public/
27
+ artifacts:
28
+ paths:
29
+ - public
30
+ expire_in: 30 days
31
+ only:
32
32
  - 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,5 +1,5 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.3.4
5
- before_install: gem install bundler -v 1.16.0
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.4
5
+ before_install: gem install bundler -v 1.16.0
@@ -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,350 +1,355 @@
1
- Version 0.0.83
2
- * Enhancements
3
- * Handle BOM or other characters that could be at start of xml of json response string
4
-
5
- Version 0.0.82
6
- * Enhancements
7
- * Fixed namespace handling for REST
8
-
9
- Version 0.0.81
10
- * Enhancements
11
- * SoapHandler - define exchange method for each SOAP operation. See `one_off_spec` for example
12
-
13
- Version 0.0.80
14
- * Enhancements
15
- * `values_from_path` method on `RestHandler` to easily extract multiple values for an xpath or json path
16
- * Bug fix
17
- * Support response that has white space surrounding message
18
-
19
- Version 0.0.79
20
- * Enhancements
21
- * `values_from_path` method on `SoapHandler` to easily extract multiple values for an xpath
22
- * If `id` is specified on associated factory, FactoryBot will populate the primary factory with that id. See `rest/factory_spec` for eg
23
-
24
- Version 0.0.78
25
- * Enhancements
26
- * Use 'thor' for `soaspec generate`, allowing less prompt and more options through command line. Added tests for it
27
-
28
- Version 0.0.77
29
- * Enhancements
30
- * Use 'thor' for soaspec-init binary changing it to be `soaspec init`. Will update `soaspec-generate` in next version
31
- * Put pause of 1/2 a second for each API retry. Often retry is too quick otherwise
32
-
33
- Version 0.0.76
34
- * Bug fix
35
- * Fixed BLZService scenario on soaspec-virtual-server
36
- * Fixed return value for retry_for_success failure
37
- * Enhancements
38
- * Added method to indicate a factory create should actually return a failure status
39
-
40
- Version 0.0.75
41
- * Enhancements
42
- * For Factory created methods, set retry_for_success to true. Allow for this to be set at Exchange class level
43
-
44
- Version 0.0.74
45
- * Enhancements
46
- * RestHandler, enable api username to be set upon initialisation
47
-
48
- Version 0.0.73
49
- * Enhancements
50
- * Added 'default_handler' method with which define an exchange_handler to be created when an exchange is initialized
51
- * Refactoring
52
- * Use `@exchange_handler` instead of `@api_class` which is more consistent
53
-
54
- Version 0.0.72
55
- * Enhancements
56
- * Add ability to convert XML response to lower case for simpler xpath searching
57
-
58
- Version 0.0.71
59
- * Bug fix
60
- * Got exe 'soaspec-virtual-server' working
61
-
62
- Version 0.0.70
63
- * Enhancements
64
- * Added api_username method to REST handler to change user for an API during runtime
65
-
66
- Version 0.0.69
67
- * Enhancements
68
- * Calculate base_url ERB at time of handler's first request (Rather than when initialised).
69
- - Important for where base url uses ERB and so does oauth whose user may change
70
- * Demonstrate using oauth via spec
71
- * Demonstrate using basic auth via spec
72
-
73
- Version 0.0.68
74
- * Enhancements
75
- * Use ERB to calculate base_url for dynamic bases
76
-
77
- Version 0.0.67
78
- * Enhancements
79
- * Handle scenario where Request key is unconventional and not PascalCase key snakecase convert would break it
80
- - if first character of key is captial, PascalCase conversion is ignored
81
-
82
- Version 0.0.66
83
- * Enhancements
84
- * Added method to convert REST request keys to 'PascalCase' if 'pascal_keys' is set to true
85
- * This also converts paths obtaining elements to 'PascalCase' if they're simple and have no starting '//' or '$..'
86
-
87
- Version 0.0.65
88
- * Enhancements
89
- * Added ability to set 'suburl' and 'method' in Exchange accessor. Will be used in FactoryBot later
90
-
91
- Version 0.0.64
92
- * Enhancements
93
- * Got FactoryBot working for RestHandler. See specs for example
94
- * Add element? method to exchange to make it easier to check element is at path
95
- * Define 'element_name?' created when element is defined on ExchangeHandler
96
-
97
- Version 0.0.63
98
- * Enhancements
99
- * Interpret ERB for oauth credentials within oauth response. Needed for when params like 'username' can change in runtime
100
-
101
- Version 0.0.62
102
- * Enhancements
103
- * Use q parameter to simply to query parameters on REST requests
104
-
105
- Version 0.0.61
106
- * Enhancements
107
- * Retrieving oauth response try 3 times (to bypass intermittent errors)
108
-
109
- Version 0.0.60
110
- * Enhancements
111
- * Allow for factory_bot with automatic setting of missing setter methods
112
-
113
- Version 0.0.59
114
- * Enhancements
115
- * Perform ERB in headers to make using access_token using 'headers' possible
116
- * Try better way of testing `soaspec-init`.
117
-
118
- Version 0.0.58
119
- * Enhancements
120
- * Add method to set parts of the request body through `exchange[key]= 'value'`
121
- * Added example of Cucumber feature demonstrating this
122
-
123
- Version 0.0.56
124
- * Bug fix
125
- * Handle creating of traffic.log file within lib properly
126
-
127
- Version 0.0.55
128
- * Enhancements
129
- * Made `soaspec-virtual-server` exe to handle self served test server. Will be used in wiki tutorial
130
-
131
- Version 0.0.54
132
- * Enhancements
133
- * Make 'headers' accessor for setting headers on RestHandler easier
134
-
135
- Version 0.0.53
136
- * Enhancements
137
- * Make attribute possible for REST methods as well (as they can use XML too)
138
- * For non XML, non JSON responses, handle with regex or key for a Hash
139
-
140
- Version 0.0.52
141
- * Enhancements
142
- * Now have 'attribute' accessor making it easy to access an attribute from a response
143
-
144
- Version 0.0.51
145
- * Enhancements
146
- * Allow for 'default_hash=' method to be used in RestHandler. See 'many_calls_one_method_spec' for example
147
- * Got 'element' accessor working correctly (See soap/hash_spec.rb + 'blz_service' for example)
148
-
149
- Version 0.0.50
150
- * Enhancements
151
- * Able to use ERB in oauth parameters and extract oauth hash with 'oauth_response' method defined by 'oauth_file'
152
-
153
- Version 0.0.47
154
- * Bug Fix
155
- * Using 'Strip namespace' handle both namespace or not dependent if used
156
-
157
- Version 0.0.47
158
- * Enhancements
159
- * 'success scenarios' shared eg and 'retry_for_success' exchange method's status codes include 200..299, not just 200.
160
-
161
- Version 0.0.46
162
- * Enhancements
163
- * '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
164
-
165
- Version 0.0.45
166
- * Enhancements
167
- * No need to use 'name' when creating SoapHandler and RestHandler. Default is ClassName
168
-
169
- Version 0.0.44
170
- * Enhancements
171
- * Test Server log to logs/test_server.log
172
- * Simplify ExchangeHandler storing and retrieving values (see soap/hash_spec.rb)
173
- * Make setting SoapHandler operation and other params possible through object instantiation. Less code needed
174
-
175
- Version 0.0.43
176
- * Bug fix
177
- * Remove Environment namespace from 'soaspec-generate'
178
- * Enhancements
179
- * 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
180
-
181
- Version 0.0.42
182
- * Enhancements
183
- * Set Soaspec.api_handler work class is created. No need to call '.to_s' method
184
-
185
- Version 0.0.41
186
- * Bug fix
187
- * soaspec-generate not designed to work with virtual service. Rakefile not try to set that up
188
-
189
- Version 0.0.40
190
- * Enhancements
191
- * soaspec-generate now handle a wsdl without parameters in the operation and rather look up input element type
192
- * test_server virtual service now handle scenario where bank is not found and test made for that
193
-
194
- Version 0.0.39
195
- * Spec
196
- * Create task to use soaspec-init to create test structure and test it.
197
- * Enhancements
198
- * Take away need to use Environment namespace
199
- * Added response headers to REST response log
200
- * Now using virtual Web Service for SOAP
201
-
202
- Version 0.0.38
203
- * Bug fix
204
- * Fixed error in soaspec-generate. TODO: Test this in CI
205
-
206
- Version 0.0.37 / 2018-3-16
207
- * Enhancements
208
- * Made retry_for_success method to keep making request until 200 status code if set on exchange
209
- * If '$' not included for json_path, by default a '$..' is added for convenience
210
-
211
- Version 0.0.36 / 2018-3-15
212
- * Bug fix
213
- * Make test name log in correct place
214
- * Enhancements
215
- * Made accessor 'mandatory_json_values' to make it easier to share mandatory json path - value pairs
216
- * Created 'store' method for handler through which one can store a value and use it later on it in the same context
217
- * Deprecated
218
- * Removed old 'mandatory_elements', 'mandatory_xpath_values' overridden way of handling data for favor of new way of it setting 'expected_mandatory_elements'
219
-
220
- Version 0.0.35 / 2018-3-13
221
- * Enhancements
222
- * Handle array of JSON hashes starting with '['
223
- * Handle patch and put methods with data for REST
224
-
225
- Version 0.0.34 / 2018-3-12
226
- * Enhancements
227
- * Add oauth2 and oauth2_file methods to make it easy to load oauth2 parameters. Still a work in progress to handle all oauth2 variations
228
-
229
- Version 0.0.33 / 2018-3-9
230
- * Enhancements
231
- * Use 'jsonpath' instead of dig to check JSON responses. Much better for finding complex paths
232
-
233
- Version 0.0.32 / 2018-3-9
234
- * Enhancements
235
- * Made :body key in hash that can be used to use JSON.generate for a payload when using rest_handler exchanges
236
-
237
- Version 0.0.31 / 2018-3-8
238
- * Enhancements
239
- * Compacted unit tests for exchange handler
240
- * Implemented include_key? and find via xpath for REST handler. See specs
241
-
242
- Version 0.0.30 / 2018-3-6
243
- * Bug fix
244
- * Made generated class file name in soaspec-generate snakecase (was CamelCase)
245
-
246
- Version 0.0.29 / 2018-3-6
247
- * Refactorings
248
- * Base 'test' class from 'Tester' to 'ExhangeHandler'
249
- * Made default Soap Handler class 'SoapHandler' and making use of 'BasicSoapHandler' deprecated
250
-
251
- Version 0.0.28 / 2018-3-6
252
- * Enhancements
253
- * Added not_found matcher and used in spec example
254
- * Only call request upon first need of an Exchange response. This means test request is made as part of 'it' rather than in describe
255
-
256
- Version 0.0.27 / 2018-3-5
257
- * Bug fix
258
- * Fixed log file not present error
259
- * Updated exe binaries to use latest format
260
-
261
- Version 0.0.26 / 2018-3-5
262
- * Refactorings
263
- * Using methods to define mandatory_elements, mandatory_xpath_values, root_attributes, base_url. Please see specs. This is shorter to type and clearer
264
-
265
- Version 0.0.25 / 2018-2-25
266
- * Enhancements
267
- * Updated rest_handler to convert JSON and XML into Hash and use it in 'contain_value'. This still needs work.
268
- * Showed example of workflow using 'pet' url
269
-
270
- Version 0.0.24 / 2018-2-25
271
- * Enhancements
272
- * Added to soaspec-generate more types when creating YAML with data (int, boolean, double and custom enumeration).
273
- * Binaries use common module (exe-helper) to reduce repeatability
274
- * TODO: soaspec-generate read xsd's mentioned to import in WSDL schema
275
-
276
- Version 0.0.23 / 2018-2-23
277
- * Enhancements
278
- * Created RestHandler class (Very messy and ugly still) to handle REST requests using style used for SOAP using Rest Client resource
279
-
280
- Version 0.0.22 / 2018-2-15
281
- * Enhancements
282
- * Created new 'include_in_body' matcher to find value anywhere in response body (which could be a substring of an element)
283
-
284
- Version 0.0.21 / 2018-1-29
285
- * Enhancements
286
- * Added soaspec-generate - still in POC mode to generate files from a WSDL.
287
- * Added test_wsdl to start at validating xml according to WSDL. Still needs polishing
288
-
289
- Version 0.0.20 / 2018-1-26
290
- * Enhancements
291
- * Added ability to strip namespaces 'Soaspec::Environment.strip_namespaces = true'. See spec for example
292
- * Fixes
293
- * Made custom error and used it to make 'have_element_at_xpath' work when negated
294
-
295
- Version 0.0.19 / 2018-1-25
296
- * Enhancements
297
- * Added own shared examples to init script and to in built specs
298
-
299
- Version 0.0.18 / 2018-1-25
300
- * Fixes
301
- * Updated 'soaspec-init' so that it works again.
302
- * Enhancements
303
- * Added example showing representing data for request in YAML
304
-
305
- Version 0.0.17 / 2018-1-25
306
- * Fixes
307
- * Updated hash search so that it handles Array
308
-
309
- Version 0.0.16 / 2018-1-23
310
- * Fixes
311
- * Corrected logic of auto convert to hash. Previous version did not handle test specific values correctly
312
-
313
- Version 0.0.15 / 2018-1-23
314
- * Fixes
315
- * Updated code to convert string key in Savon request to key automatically by default before passing to Savon. This saves
316
- the user doing the conversion themselves.
317
-
318
- Version 0.0.14 / 2018-1-23
319
- * Fixes
320
- * Updated 'xml_to_yaml_file' exe to clean up YAML more. No more array for Hash value. Indenting needs work though.
321
- Now it's more like something you can read and pass into Savon request.
322
-
323
- Version 0.0.13 / 2018-1-23
324
- * Enhancements
325
- * Executable to create xml file from yaml
326
-
327
- Version 0.0.12 / 2018/1-22
328
- * Enhancements
329
- * Example name added to log file
330
-
331
- Version 0.0.10 / 2018-1-21
332
- * Enhancements
333
- * Added [] method to perform xpath assertion
334
- * Using Savon xpath. No need to explicitly provide namespace for xpath
335
-
336
- Version 0.0.9 / 2018-1-20
337
- * Refactoring
338
- * class_options -> savon_options - More specific
339
- * default_operation -> operation - Not default anymore so better not in name
340
- * Enhancements
341
- * Made mandatory_xpath_values method to add to 'success scenarios' shared example
342
-
343
- Version 0.0.8 / 2018-1-19
344
- * Enhancements
345
- * Added root_attributes method to add attribute to the root class
346
-
347
- Version 0.0.7 / 2018-1-19
348
- * Enhancements
349
- * Added contain_key matcher
1
+ Version 0.0.84
2
+ * Enhancements
3
+ * 'strip_namespaces' defined in exchange handlers not globally which makes more sense
4
+ * Created 'to_hash' method for Exchange that returns a Hash of XML or JSON response (primarily for REST)
5
+
6
+ Version 0.0.83
7
+ * Enhancements
8
+ * Handle BOM or other characters that could be at start of xml of json response string
9
+
10
+ Version 0.0.82
11
+ * Enhancements
12
+ * Fixed namespace handling for REST
13
+
14
+ Version 0.0.81
15
+ * Enhancements
16
+ * SoapHandler - define exchange method for each SOAP operation. See `one_off_spec` for example
17
+
18
+ Version 0.0.80
19
+ * Enhancements
20
+ * `values_from_path` method on `RestHandler` to easily extract multiple values for an xpath or json path
21
+ * Bug fix
22
+ * Support response that has white space surrounding message
23
+
24
+ Version 0.0.79
25
+ * Enhancements
26
+ * `values_from_path` method on `SoapHandler` to easily extract multiple values for an xpath
27
+ * If `id` is specified on associated factory, FactoryBot will populate the primary factory with that id. See `rest/factory_spec` for eg
28
+
29
+ Version 0.0.78
30
+ * Enhancements
31
+ * Use 'thor' for `soaspec generate`, allowing less prompt and more options through command line. Added tests for it
32
+
33
+ Version 0.0.77
34
+ * Enhancements
35
+ * Use 'thor' for soaspec-init binary changing it to be `soaspec init`. Will update `soaspec-generate` in next version
36
+ * Put pause of 1/2 a second for each API retry. Often retry is too quick otherwise
37
+
38
+ Version 0.0.76
39
+ * Bug fix
40
+ * Fixed BLZService scenario on soaspec-virtual-server
41
+ * Fixed return value for retry_for_success failure
42
+ * Enhancements
43
+ * Added method to indicate a factory create should actually return a failure status
44
+
45
+ Version 0.0.75
46
+ * Enhancements
47
+ * For Factory created methods, set retry_for_success to true. Allow for this to be set at Exchange class level
48
+
49
+ Version 0.0.74
50
+ * Enhancements
51
+ * RestHandler, enable api username to be set upon initialisation
52
+
53
+ Version 0.0.73
54
+ * Enhancements
55
+ * Added 'default_handler' method with which define an exchange_handler to be created when an exchange is initialized
56
+ * Refactoring
57
+ * Use `@exchange_handler` instead of `@api_class` which is more consistent
58
+
59
+ Version 0.0.72
60
+ * Enhancements
61
+ * Add ability to convert XML response to lower case for simpler xpath searching
62
+
63
+ Version 0.0.71
64
+ * Bug fix
65
+ * Got exe 'soaspec-virtual-server' working
66
+
67
+ Version 0.0.70
68
+ * Enhancements
69
+ * Added api_username method to REST handler to change user for an API during runtime
70
+
71
+ Version 0.0.69
72
+ * Enhancements
73
+ * Calculate base_url ERB at time of handler's first request (Rather than when initialised).
74
+ - Important for where base url uses ERB and so does oauth whose user may change
75
+ * Demonstrate using oauth via spec
76
+ * Demonstrate using basic auth via spec
77
+
78
+ Version 0.0.68
79
+ * Enhancements
80
+ * Use ERB to calculate base_url for dynamic bases
81
+
82
+ Version 0.0.67
83
+ * Enhancements
84
+ * Handle scenario where Request key is unconventional and not PascalCase key snakecase convert would break it
85
+ - if first character of key is captial, PascalCase conversion is ignored
86
+
87
+ Version 0.0.66
88
+ * Enhancements
89
+ * Added method to convert REST request keys to 'PascalCase' if 'pascal_keys' is set to true
90
+ * This also converts paths obtaining elements to 'PascalCase' if they're simple and have no starting '//' or '$..'
91
+
92
+ Version 0.0.65
93
+ * Enhancements
94
+ * Added ability to set 'suburl' and 'method' in Exchange accessor. Will be used in FactoryBot later
95
+
96
+ Version 0.0.64
97
+ * Enhancements
98
+ * Got FactoryBot working for RestHandler. See specs for example
99
+ * Add element? method to exchange to make it easier to check element is at path
100
+ * Define 'element_name?' created when element is defined on ExchangeHandler
101
+
102
+ Version 0.0.63
103
+ * Enhancements
104
+ * Interpret ERB for oauth credentials within oauth response. Needed for when params like 'username' can change in runtime
105
+
106
+ Version 0.0.62
107
+ * Enhancements
108
+ * Use q parameter to simply to query parameters on REST requests
109
+
110
+ Version 0.0.61
111
+ * Enhancements
112
+ * Retrieving oauth response try 3 times (to bypass intermittent errors)
113
+
114
+ Version 0.0.60
115
+ * Enhancements
116
+ * Allow for factory_bot with automatic setting of missing setter methods
117
+
118
+ Version 0.0.59
119
+ * Enhancements
120
+ * Perform ERB in headers to make using access_token using 'headers' possible
121
+ * Try better way of testing `soaspec-init`.
122
+
123
+ Version 0.0.58
124
+ * Enhancements
125
+ * Add method to set parts of the request body through `exchange[key]= 'value'`
126
+ * Added example of Cucumber feature demonstrating this
127
+
128
+ Version 0.0.56
129
+ * Bug fix
130
+ * Handle creating of traffic.log file within lib properly
131
+
132
+ Version 0.0.55
133
+ * Enhancements
134
+ * Made `soaspec-virtual-server` exe to handle self served test server. Will be used in wiki tutorial
135
+
136
+ Version 0.0.54
137
+ * Enhancements
138
+ * Make 'headers' accessor for setting headers on RestHandler easier
139
+
140
+ Version 0.0.53
141
+ * Enhancements
142
+ * Make attribute possible for REST methods as well (as they can use XML too)
143
+ * For non XML, non JSON responses, handle with regex or key for a Hash
144
+
145
+ Version 0.0.52
146
+ * Enhancements
147
+ * Now have 'attribute' accessor making it easy to access an attribute from a response
148
+
149
+ Version 0.0.51
150
+ * Enhancements
151
+ * Allow for 'default_hash=' method to be used in RestHandler. See 'many_calls_one_method_spec' for example
152
+ * Got 'element' accessor working correctly (See soap/hash_spec.rb + 'blz_service' for example)
153
+
154
+ Version 0.0.50
155
+ * Enhancements
156
+ * Able to use ERB in oauth parameters and extract oauth hash with 'oauth_response' method defined by 'oauth_file'
157
+
158
+ Version 0.0.47
159
+ * Bug Fix
160
+ * Using 'Strip namespace' handle both namespace or not dependent if used
161
+
162
+ Version 0.0.47
163
+ * Enhancements
164
+ * 'success scenarios' shared eg and 'retry_for_success' exchange method's status codes include 200..299, not just 200.
165
+
166
+ Version 0.0.46
167
+ * Enhancements
168
+ * '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
169
+
170
+ Version 0.0.45
171
+ * Enhancements
172
+ * No need to use 'name' when creating SoapHandler and RestHandler. Default is ClassName
173
+
174
+ Version 0.0.44
175
+ * Enhancements
176
+ * Test Server log to logs/test_server.log
177
+ * Simplify ExchangeHandler storing and retrieving values (see soap/hash_spec.rb)
178
+ * Make setting SoapHandler operation and other params possible through object instantiation. Less code needed
179
+
180
+ Version 0.0.43
181
+ * Bug fix
182
+ * Remove Environment namespace from 'soaspec-generate'
183
+ * Enhancements
184
+ * 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
185
+
186
+ Version 0.0.42
187
+ * Enhancements
188
+ * Set Soaspec.api_handler work class is created. No need to call '.to_s' method
189
+
190
+ Version 0.0.41
191
+ * Bug fix
192
+ * soaspec-generate not designed to work with virtual service. Rakefile not try to set that up
193
+
194
+ Version 0.0.40
195
+ * Enhancements
196
+ * soaspec-generate now handle a wsdl without parameters in the operation and rather look up input element type
197
+ * test_server virtual service now handle scenario where bank is not found and test made for that
198
+
199
+ Version 0.0.39
200
+ * Spec
201
+ * Create task to use soaspec-init to create test structure and test it.
202
+ * Enhancements
203
+ * Take away need to use Environment namespace
204
+ * Added response headers to REST response log
205
+ * Now using virtual Web Service for SOAP
206
+
207
+ Version 0.0.38
208
+ * Bug fix
209
+ * Fixed error in soaspec-generate. TODO: Test this in CI
210
+
211
+ Version 0.0.37 / 2018-3-16
212
+ * Enhancements
213
+ * Made retry_for_success method to keep making request until 200 status code if set on exchange
214
+ * If '$' not included for json_path, by default a '$..' is added for convenience
215
+
216
+ Version 0.0.36 / 2018-3-15
217
+ * Bug fix
218
+ * Make test name log in correct place
219
+ * Enhancements
220
+ * Made accessor 'mandatory_json_values' to make it easier to share mandatory json path - value pairs
221
+ * Created 'store' method for handler through which one can store a value and use it later on it in the same context
222
+ * Deprecated
223
+ * Removed old 'mandatory_elements', 'mandatory_xpath_values' overridden way of handling data for favor of new way of it setting 'expected_mandatory_elements'
224
+
225
+ Version 0.0.35 / 2018-3-13
226
+ * Enhancements
227
+ * Handle array of JSON hashes starting with '['
228
+ * Handle patch and put methods with data for REST
229
+
230
+ Version 0.0.34 / 2018-3-12
231
+ * Enhancements
232
+ * Add oauth2 and oauth2_file methods to make it easy to load oauth2 parameters. Still a work in progress to handle all oauth2 variations
233
+
234
+ Version 0.0.33 / 2018-3-9
235
+ * Enhancements
236
+ * Use 'jsonpath' instead of dig to check JSON responses. Much better for finding complex paths
237
+
238
+ Version 0.0.32 / 2018-3-9
239
+ * Enhancements
240
+ * Made :body key in hash that can be used to use JSON.generate for a payload when using rest_handler exchanges
241
+
242
+ Version 0.0.31 / 2018-3-8
243
+ * Enhancements
244
+ * Compacted unit tests for exchange handler
245
+ * Implemented include_key? and find via xpath for REST handler. See specs
246
+
247
+ Version 0.0.30 / 2018-3-6
248
+ * Bug fix
249
+ * Made generated class file name in soaspec-generate snakecase (was CamelCase)
250
+
251
+ Version 0.0.29 / 2018-3-6
252
+ * Refactorings
253
+ * Base 'test' class from 'Tester' to 'ExhangeHandler'
254
+ * Made default Soap Handler class 'SoapHandler' and making use of 'BasicSoapHandler' deprecated
255
+
256
+ Version 0.0.28 / 2018-3-6
257
+ * Enhancements
258
+ * Added not_found matcher and used in spec example
259
+ * Only call request upon first need of an Exchange response. This means test request is made as part of 'it' rather than in describe
260
+
261
+ Version 0.0.27 / 2018-3-5
262
+ * Bug fix
263
+ * Fixed log file not present error
264
+ * Updated exe binaries to use latest format
265
+
266
+ Version 0.0.26 / 2018-3-5
267
+ * Refactorings
268
+ * Using methods to define mandatory_elements, mandatory_xpath_values, root_attributes, base_url. Please see specs. This is shorter to type and clearer
269
+
270
+ Version 0.0.25 / 2018-2-25
271
+ * Enhancements
272
+ * Updated rest_handler to convert JSON and XML into Hash and use it in 'contain_value'. This still needs work.
273
+ * Showed example of workflow using 'pet' url
274
+
275
+ Version 0.0.24 / 2018-2-25
276
+ * Enhancements
277
+ * Added to soaspec-generate more types when creating YAML with data (int, boolean, double and custom enumeration).
278
+ * Binaries use common module (exe-helper) to reduce repeatability
279
+ * TODO: soaspec-generate read xsd's mentioned to import in WSDL schema
280
+
281
+ Version 0.0.23 / 2018-2-23
282
+ * Enhancements
283
+ * Created RestHandler class (Very messy and ugly still) to handle REST requests using style used for SOAP using Rest Client resource
284
+
285
+ Version 0.0.22 / 2018-2-15
286
+ * Enhancements
287
+ * Created new 'include_in_body' matcher to find value anywhere in response body (which could be a substring of an element)
288
+
289
+ Version 0.0.21 / 2018-1-29
290
+ * Enhancements
291
+ * Added soaspec-generate - still in POC mode to generate files from a WSDL.
292
+ * Added test_wsdl to start at validating xml according to WSDL. Still needs polishing
293
+
294
+ Version 0.0.20 / 2018-1-26
295
+ * Enhancements
296
+ * Added ability to strip namespaces 'Soaspec::Environment.strip_namespaces = true'. See spec for example
297
+ * Fixes
298
+ * Made custom error and used it to make 'have_element_at_xpath' work when negated
299
+
300
+ Version 0.0.19 / 2018-1-25
301
+ * Enhancements
302
+ * Added own shared examples to init script and to in built specs
303
+
304
+ Version 0.0.18 / 2018-1-25
305
+ * Fixes
306
+ * Updated 'soaspec-init' so that it works again.
307
+ * Enhancements
308
+ * Added example showing representing data for request in YAML
309
+
310
+ Version 0.0.17 / 2018-1-25
311
+ * Fixes
312
+ * Updated hash search so that it handles Array
313
+
314
+ Version 0.0.16 / 2018-1-23
315
+ * Fixes
316
+ * Corrected logic of auto convert to hash. Previous version did not handle test specific values correctly
317
+
318
+ Version 0.0.15 / 2018-1-23
319
+ * Fixes
320
+ * Updated code to convert string key in Savon request to key automatically by default before passing to Savon. This saves
321
+ the user doing the conversion themselves.
322
+
323
+ Version 0.0.14 / 2018-1-23
324
+ * Fixes
325
+ * Updated 'xml_to_yaml_file' exe to clean up YAML more. No more array for Hash value. Indenting needs work though.
326
+ Now it's more like something you can read and pass into Savon request.
327
+
328
+ Version 0.0.13 / 2018-1-23
329
+ * Enhancements
330
+ * Executable to create xml file from yaml
331
+
332
+ Version 0.0.12 / 2018/1-22
333
+ * Enhancements
334
+ * Example name added to log file
335
+
336
+ Version 0.0.10 / 2018-1-21
337
+ * Enhancements
338
+ * Added [] method to perform xpath assertion
339
+ * Using Savon xpath. No need to explicitly provide namespace for xpath
340
+
341
+ Version 0.0.9 / 2018-1-20
342
+ * Refactoring
343
+ * class_options -> savon_options - More specific
344
+ * default_operation -> operation - Not default anymore so better not in name
345
+ * Enhancements
346
+ * Made mandatory_xpath_values method to add to 'success scenarios' shared example
347
+
348
+ Version 0.0.8 / 2018-1-19
349
+ * Enhancements
350
+ * Added root_attributes method to add attribute to the root class
351
+
352
+ Version 0.0.7 / 2018-1-19
353
+ * Enhancements
354
+ * Added contain_key matcher
350
355
  * mandatory_elements method created for SoapHandler - can be used to add tests to success scenarios (see example get_weather_web_service class for details)