soaspec 0.2.33 → 0.3.1

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 (86) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +15 -15
  3. data/.gitlab-ci.yml +62 -62
  4. data/.rspec +3 -3
  5. data/.rubocop.yml +2 -2
  6. data/CODE_OF_CONDUCT.md +74 -74
  7. data/ChangeLog +643 -632
  8. data/Dockerfile +7 -7
  9. data/Gemfile +8 -8
  10. data/LICENSE.txt +21 -21
  11. data/README.md +253 -231
  12. data/Rakefile +52 -52
  13. data/Todo.md +16 -16
  14. data/exe/soaspec +140 -138
  15. data/exe/xml_to_yaml_file +43 -43
  16. data/lib/soaspec.rb +118 -106
  17. data/lib/soaspec/baseline.rb +82 -22
  18. data/lib/soaspec/core_ext/hash.rb +44 -44
  19. data/lib/soaspec/cucumber/generic_steps.rb +94 -94
  20. data/lib/soaspec/demo.rb +6 -6
  21. data/lib/soaspec/errors.rb +24 -24
  22. data/lib/soaspec/exchange/exchange.rb +131 -129
  23. data/lib/soaspec/exchange/exchange_extractor.rb +105 -90
  24. data/lib/soaspec/exchange/exchange_properties.rb +28 -28
  25. data/lib/soaspec/exchange/exchange_repeater.rb +21 -21
  26. data/lib/soaspec/exchange/request_builder.rb +108 -70
  27. data/lib/soaspec/exchange/variable_storer.rb +24 -24
  28. data/lib/soaspec/exchange_handlers/exchange_handler.rb +98 -98
  29. data/lib/soaspec/exchange_handlers/exchange_handler_defaults.rb +61 -61
  30. data/lib/soaspec/exchange_handlers/handler_accessors.rb +132 -132
  31. data/lib/soaspec/exchange_handlers/request/rest_request.rb +77 -59
  32. data/lib/soaspec/exchange_handlers/request/soap_request.rb +41 -41
  33. data/lib/soaspec/exchange_handlers/response_extractor.rb +84 -84
  34. data/lib/soaspec/exchange_handlers/rest_exchanger_factory.rb +111 -111
  35. data/lib/soaspec/exchange_handlers/rest_handler.rb +307 -307
  36. data/lib/soaspec/exchange_handlers/rest_methods.rb +65 -65
  37. data/lib/soaspec/exchange_handlers/rest_parameters.rb +112 -112
  38. data/lib/soaspec/exchange_handlers/rest_parameters_defaults.rb +42 -42
  39. data/lib/soaspec/exchange_handlers/soap_handler.rb +241 -241
  40. data/lib/soaspec/exe_helpers.rb +94 -94
  41. data/lib/soaspec/generate_server.rb +48 -48
  42. data/lib/soaspec/generator/.rspec.erb +5 -5
  43. data/lib/soaspec/generator/.travis.yml.erb +5 -5
  44. data/lib/soaspec/generator/Gemfile.erb +8 -8
  45. data/lib/soaspec/generator/README.md.erb +29 -29
  46. data/lib/soaspec/generator/Rakefile.erb +20 -19
  47. data/lib/soaspec/generator/config/data/default.yml.erb +2 -2
  48. data/lib/soaspec/generator/css/bootstrap.css +6833 -6833
  49. data/lib/soaspec/generator/features/support/env.rb.erb +3 -3
  50. data/lib/soaspec/generator/generate_exchange.html.erb +47 -47
  51. data/lib/soaspec/generator/lib/blz_service.rb.erb +26 -26
  52. data/lib/soaspec/generator/lib/dynamic_class_content.rb.erb +12 -12
  53. data/lib/soaspec/generator/lib/new_rest_service.rb.erb +56 -56
  54. data/lib/soaspec/generator/lib/new_soap_service.rb.erb +29 -29
  55. data/lib/soaspec/generator/lib/package_service.rb.erb +2 -2
  56. data/lib/soaspec/generator/lib/shared_example.rb.erb +8 -8
  57. data/lib/soaspec/generator/spec/dynamic_soap_spec.rb.erb +12 -12
  58. data/lib/soaspec/generator/spec/rest_spec.rb.erb +9 -9
  59. data/lib/soaspec/generator/spec/soap_spec.rb.erb +51 -51
  60. data/lib/soaspec/generator/spec/spec_helper.rb.erb +23 -23
  61. data/lib/soaspec/generator/template/soap_template.xml +6 -6
  62. data/lib/soaspec/indifferent_hash.rb +9 -9
  63. data/lib/soaspec/interpreter.rb +70 -70
  64. data/lib/soaspec/matchers.rb +136 -140
  65. data/lib/soaspec/o_auth2.rb +142 -142
  66. data/lib/soaspec/soaspec_shared_examples.rb +26 -26
  67. data/lib/soaspec/spec_logger.rb +143 -143
  68. data/lib/soaspec/template_reader.rb +30 -30
  69. data/lib/soaspec/test_server/bank.wsdl +90 -90
  70. data/lib/soaspec/test_server/get_bank.rb +166 -166
  71. data/lib/soaspec/test_server/id_manager.rb +41 -41
  72. data/lib/soaspec/test_server/invoices.rb +29 -29
  73. data/lib/soaspec/test_server/namespace.xml +14 -14
  74. data/lib/soaspec/test_server/note.xml +5 -5
  75. data/lib/soaspec/test_server/puppy_service.rb +21 -21
  76. data/lib/soaspec/test_server/test_attribute.rb +14 -14
  77. data/lib/soaspec/test_server/test_namespace.rb +14 -14
  78. data/lib/soaspec/version.rb +6 -6
  79. data/lib/soaspec/virtual_server.rb +193 -190
  80. data/lib/soaspec/wait.rb +43 -43
  81. data/lib/soaspec/wsdl_generator.rb +215 -215
  82. data/soaspec.gemspec +58 -58
  83. data/test.wsdl +116 -116
  84. data/test.xml +10 -10
  85. data/test_wsdl.rb +43 -43
  86. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 70d31ba4f6e998b854b97b62ea253d61bd16f03bd8e1304250ae313c18a9d812
4
- data.tar.gz: 1039626936821748f31edc0f684f4e73b8f82c2536168670bfdea7b746a97450
3
+ metadata.gz: 3dc517686970c428dfdc01fbd10939e89a051e4b1748167341d2f7c276416f88
4
+ data.tar.gz: '08359bd7b82c35d4e4559f182a8968c8dc7e79b5a4d44270edcf21f56f249623'
5
5
  SHA512:
6
- metadata.gz: 3d2579570edf53795ac827e395872c17f190360c3095d45716333ee6803374593b543339d75ce6bf486fb7f93da97857c962fd336c5120a4ffcdfffda9e6fc25
7
- data.tar.gz: ae83c191f93592a65704863924e95739e6b32e9e1c2c231122f4af1e1aea7a3e10a36580480e261348bd490044c9d0851c09ab67fab2bb68d3f129f0a3cebde7
6
+ metadata.gz: 82578194b7b967d3f9eefa3e0b0646568be998a346cf5579e95de904dadf2ba0c7b2b55816a15319ca2c0ca4353747c1628ddfe78d47dfd798d8a797d0d02fc9
7
+ data.tar.gz: 0d28e2326ca767e0670eae5b3ec2fe61a46376bd45f48b53d4980746d11f292211563929641decadf198888f2e2ab5b83bb3f88ad69b7e1e370900c75d2782e7
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
- /vendor/
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
+ /vendor/
13
+
14
+ # rspec failure tracking
15
+ .rspec_status
@@ -1,63 +1,63 @@
1
- image: ruby:2.5
2
-
3
- before_script:
4
- - ruby -v
5
- - which ruby
6
- - gem install bundler rake
7
- - bundle install --jobs $(nproc) --path vendor # Install dependencies into ./vendor/ruby
8
-
9
- cache:
10
- key: ${CI_COMMIT_REF_SLUG}
11
- paths:
12
- - vendor/ruby
13
-
14
- ruby_2.3:
15
- stage: test
16
- image: ruby:2.3
17
- script:
18
- - bundle exec rake
19
-
20
- ruby_2.4:
21
- stage: test
22
- image: ruby:2.4
23
- script:
24
- - bundle exec rake
25
-
26
- ruby_2.5:
27
- stage: test
28
- image: ruby:2.5
29
- script:
30
- - bundle exec rake
31
- artifacts:
32
- paths:
33
- - coverage/
34
-
35
- ruby_2.6:
36
- stage: test
37
- image: ruby:2.6
38
- script:
39
- - bundle exec rake
40
-
41
- cucumber:
42
- stage: test
43
- script:
44
- - bundle exec cucumber
45
-
46
- doctest:
47
- stage: test
48
- script:
49
- - bundle exec rake yard:doctest
50
-
51
- pages:
52
- stage: deploy
53
- dependencies:
54
- - ruby_2.5
55
- script:
56
- - mv demo/ public/
57
- - mv coverage/ public/coverage
58
- artifacts:
59
- paths:
60
- - public
61
- expire_in: 30 days
62
- only:
1
+ image: ruby:2.5
2
+
3
+ before_script:
4
+ - ruby -v
5
+ - which ruby
6
+ - gem install bundler rake
7
+ - bundle install --jobs $(nproc) --path vendor # Install dependencies into ./vendor/ruby
8
+
9
+ cache:
10
+ key: ${CI_COMMIT_REF_SLUG}
11
+ paths:
12
+ - vendor/ruby
13
+
14
+ ruby_2.3:
15
+ stage: test
16
+ image: ruby:2.3
17
+ script:
18
+ - bundle exec rake
19
+
20
+ ruby_2.4:
21
+ stage: test
22
+ image: ruby:2.4
23
+ script:
24
+ - bundle exec rake
25
+
26
+ ruby_2.5:
27
+ stage: test
28
+ image: ruby:2.5
29
+ script:
30
+ - bundle exec rake
31
+ artifacts:
32
+ paths:
33
+ - coverage/
34
+
35
+ ruby_2.6:
36
+ stage: test
37
+ image: ruby:2.6
38
+ script:
39
+ - bundle exec rake
40
+
41
+ cucumber:
42
+ stage: test
43
+ script:
44
+ - bundle exec cucumber
45
+
46
+ doctest:
47
+ stage: test
48
+ script:
49
+ - bundle exec rake yard:doctest
50
+
51
+ pages:
52
+ stage: deploy
53
+ dependencies:
54
+ - ruby_2.5
55
+ script:
56
+ - mv demo/ public/
57
+ - mv coverage/ public/coverage
58
+ artifacts:
59
+ paths:
60
+ - public
61
+ expire_in: 30 days
62
+ only:
63
63
  - 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,633 +1,644 @@
1
- Version 0.2.33
2
- * Enhancement
3
- * Ability to pass an array to 'suburl' which will be joined via '/' for
4
- building a request via loops
5
- * Matcher to record a baseline response for a set of parameters and
6
- ensure it matches it in the future
7
-
8
- Version 0.2.32
9
- * Enhancement
10
- * Added a cucumber generic step for a subpath
11
-
12
- Version 0.2.31
13
- * Bug fix
14
- * `soaspec generate` was always creating basic auth even when not specified
15
-
16
- Version 0.2.30
17
- * Enhancement
18
- * New method `retry_on_exceptions` on `exchange_handler` where one can specify
19
- exceptions to retry on for all exchanges using that Handler
20
- * 'exception' method on handler that stores exception of last exchange
21
-
22
- Version 0.2.29
23
- * Enhancement
24
- * SpecLogger - change:
25
- * Programe name
26
- * Date and time format
27
- * Accessor internal logger object
28
- * Removed unnecessarily severity as it's always INFO
29
- * For REST calls log Response under 1 log with headers and body indented on new lines
30
-
31
- Version 0.2.28
32
- * Enhancement
33
- * Ability to change OAuth2 retry limit as retrying too many times can cause a lock out
34
-
35
- Version 0.2.27
36
- * Enhancement
37
- * Enable ability to perform action right after response is retrieved. This could be used to
38
- specify condition to fail straight away for a particular response
39
-
40
- Version 0.2.26
41
- * Enhancement
42
- * Method `successful_status_code?` to return whether status code is 200..299
43
- * Ability to turn off OAuth request message
44
-
45
- Version 0.2.25
46
- * Enhancement
47
- * Started running yard-doctest to check yard examples are correct
48
- * Make it easy to inherit urls for subclasses of handlers through 'parent_url'
49
- * `soaspec generate`
50
- * Run on random port as it only makes sense it context of where it runs
51
- * Add support for basic_auth
52
- * `soaspec cucumber` create initial Gemfile and support/env if not present for getting started quickly
53
- * Bug Fix
54
- * Fixed issue with turning off log part way through test suite not turning off RestClient's logs
55
-
56
- Version 0.2.24
57
- * Bug Fix
58
- * Be explicit about where shared_examples_for is from (RSpec) as it can cause loading issues
59
-
60
- Version 0.2.23
61
- * Enhancement
62
- * Interpreter handles XML Doc
63
- * Get document_type_for complex element working. Hopefully should be able to handle WSDL with large response now
64
-
65
- Version 0.2.22
66
- * Bug Fix
67
- * Allow negated version of 'be_successful' to work
68
- * Fix `Exchange.retry_count` so that it retries after first try the correct number of times
69
- * Enhancement
70
- * Make 'value_from_path' and 'values_from_path' methods accessible from 'response' object
71
- * Get extracting text via RegEx actually working
72
-
73
- Version 0.2.21
74
- * Enhancement
75
- * Enable deprecation warnings to be removed so that they're not annoying with `Soaspec.log_warnings`
76
-
77
- Version 0.2.20
78
- * Enhancement
79
- * 'soaspec pry' command to open pry, loading test API classes
80
-
81
- Version 0.2.19
82
- * Enhancement
83
- * Create 'soaspec generate' (without wsdl) as a way to create an ExchangeHandler from a Web Page
84
-
85
- Version 0.2.18
86
- * Enhancement
87
- * Hash of body returned via 'to_hash' can be accessed through Symbol or String
88
-
89
- Version 0.2.17
90
- * Bug Fix
91
- * Correct Output where does not show the conversion happening by JSONPath and PascalCase conversion
92
-
93
- Version 0.2.16
94
- * Enhancement
95
- * Move debug oauth into OAuth2 class
96
-
97
- Version 0.2.14
98
- * Bug Fix
99
- * Remove default log file being created before it is changed to a custom location
100
-
101
- Version 0.2.13
102
- * Enhancements
103
- * Allow terminal logging color to be changed through a `terminal_color` attribute
104
-
105
- Version 0.2.12
106
- * Enhancements
107
- * Make it easier to set 'traffic_file' location with `Soaspec::SpecLogger.traffic_file = ''`
108
-
109
- Version 0.2.11
110
- * Bug Fix
111
- * Cache 'Soaspec::OAuth2.instance_url' so Access token server not called everytime it's needed
112
-
113
- Version 0.2.10
114
- * Enhancements
115
- * Added 'soaspec/demo' to be required to simplify demoing
116
- * Bug Fix
117
- * Logging wasn't handling Rest log properly
118
-
119
- Version 0.2.9
120
- * Enhancements
121
- * More documentation in README.md
122
- * Started breaking up massive RestHandler more
123
- * Allow one output logs to STDOUT through Soaspec::SpecLogger.output_to_terminal = true
124
-
125
- Version 0.2.8
126
- * Bug Fix
127
- * RSpec-its dependency produces a conflict. Remove specific version reference
128
-
129
- Version 0.2.7
130
- * Bug Fix
131
- * Fix log issue that was failing in Windows
132
-
133
- Version 0.2.6
134
- * Enhancements
135
- * New log file created with time stamp each time tests are run
136
-
137
- Version 0.2.5
138
- * Bug fix
139
- * Error wasn't throw if checking for element with empty response
140
- * Default hash set on Exchange without example overriding value not setting request body
141
-
142
- Version 0.2.4
143
- * Enhancements
144
- * Enable block to be used when creating exchange with Handler.exchange
145
-
146
- Version 0.2.3
147
- * Enhancements
148
- * Exchange.until itself method returns itself making it easier to reuse last result in assertions
149
- * Added parameters to Exchange.until so that timeout, message and interval can be specified
150
- * Soaspec cucumber exe to add generic steps to step_definitions folder
151
-
152
- Version 0.2.2
153
- * Enhancements
154
- * Make accessing test_values from template using indifferent access
155
-
156
- Version 0.2.1
157
- * Enhancements
158
- * Make method to access 'client_id' within a class after specifying 'oauth2_file' to remove unnecessarily loading file twice
159
-
160
- Version 0.2.0
161
- * Exception handling
162
- * Raise meaningful exception if REST header value passed is null
163
- * Enhancements
164
- * `soaspec add` exe to create basic 'rest' or 'soap' service
165
- * Add another matcher to check response is successful
166
- * Default hash and template_name can now be defined within a class rather than just at an instance of it
167
- * Stubs making it clearer what parameters are when looking at code from RubyMine
168
- * Basic auth file method on RestHandler for clearer defining of basic auth
169
- * Handle ERB in 'base_url' method
170
-
171
- Version 0.1.18
172
- * Enhancements
173
- * Define 'exchange' method on response object so original exchange can be accessed
174
- * Make simply approach for setting body of request with just a string passed `ExchangeHandler.post(message_body)` where message_body is not
175
- a `Hash` but a `String`
176
-
177
- Version 0.1.17
178
- * Enhancements
179
- * Added Wait class to easily wait for an expected condition to be true, either using global Soaspec::Wait or `exchange.until { true }`
180
- See spec/unit/wait_spec for example
181
- * Made shorter way to `get` a REST url with `RestHandler.get 'id'` setting the suburl to 'id' automatically
182
-
183
- Version 0.1.16
184
- * Bug fix
185
- * Retry was not working for OAuth access_token
186
-
187
- Version 0.1.15
188
- * Enhancements
189
- * Added more unit test coverage and a few more comments
190
-
191
- Version 0.1.14
192
- * Enhancements
193
- * Got `rest` soaspec new working
194
-
195
- Version 0.1.13
196
- * Enhancements
197
- * Cleaned up comments (mainly OAuth2 related)
198
- * Cleaned up REST handler code, adding more comments on usage
199
- * Added 'soaspec/cucumber/generic_steps' to simplify reusing code and also demonstrate how gem can be used
200
-
201
- Version 0.1.12
202
- * Enhancements
203
- * Add 'refresh_token' attribute to Soaspec::OAuth2 class so that token can be retrieved once and then stored
204
-
205
- Version 0.1.11
206
- * Enhancements
207
- * OAuth2 class can be initialized with strings as keys
208
- * Global attribute, 'Soaspec::OAuth2.token_url' for setting common value
209
-
210
- Version 0.1.10
211
- * Enhancements
212
- * Rename default template folder from to 'template' to 'templates'
213
- * Use TemplateReader to simplify and add error handling to extracting templates
214
- * Got convenience Rest Methods able to handle taking in template_name
215
- * Started making a 'request' method to access request of API actually sent
216
-
217
- Version 0.1.9
218
- * Enhancements
219
- * Finally move `soaspec-virtual-server` into same binary as `soaspec` utilising Thor
220
-
221
- Version 0.1.8
222
- * Bug fix
223
- * Could not see OAuth parameters sent in logs when setting oauth debugging to true
224
-
225
- Version 0.1.7
226
- * Enhancements
227
- * Include access token header automatically if 'authorization' is not set. Turn off with `Soaspec.auto_oauth = false`
228
-
229
- Version 0.1.6
230
- * Enhancements
231
- * Bind localhost to 0.0.0.0 so service is accessible outside localhost
232
-
233
- Version 0.1.5
234
- * Enhancements
235
- * Package spec changes status after a post is made. Help to illustrate scenario where status changes
236
- * Record last exchange made for debugging purposes in 'last_exchange'
237
-
238
- Version 0.1.4
239
- * Enhancements
240
- * create_file method create folders automatically if necessary
241
- * Package spec to help learn testing for items in a list
242
- * Added docs for soaspec-virtual-server
243
-
244
- Version 0.1.3
245
- * Enhancements
246
- * Ability to set template folder
247
- * Json Path handle multiple paths separated by commas
248
-
249
- Version 0.1.1
250
- * Enhancements
251
- * Added ability to turn off logs (helpful if making a lot of API calls)
252
-
253
- Version 0.1.0
254
- * Enhancements
255
- * 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
256
- * Put SOAP Basic Auth in Example
257
- * Added template handling for REST handler
258
-
259
- Version 0.0.89
260
- * Enhancements
261
- * Move more functionality out of soaspec exe and into WsdlGenerator. Started unit tests for it
262
-
263
- Version 0.0.88
264
- * Bug Fix
265
- * Corrected '_format' variable name that was breaking failing to find rest element
266
-
267
- Version 0.0.87
268
- * Bug Fix
269
- * Fixed incorrect logging for when 'debug_oauth' is off
270
-
271
- Version 0.0.86
272
- * Enhancements
273
- * 'debug_oauth' attribute used to toggle showing params used in retrieving access token
274
-
275
- Version 0.0.85
276
- * Enhancements
277
- * Interpret XML and JSON better so that JSON with XML in it's tags is catered for
278
-
279
- Version 0.0.84
280
- * Enhancements
281
- * 'strip_namespaces' defined in exchange handlers not globally which makes more sense
282
- * Created 'to_hash' method for Exchange that returns a Hash of XML or JSON response (primarily for REST)
283
-
284
- Version 0.0.83
285
- * Enhancements
286
- * Handle BOM or other characters that could be at start of xml of json response string
287
-
288
- Version 0.0.82
289
- * Enhancements
290
- * Fixed namespace handling for REST
291
-
292
- Version 0.0.81
293
- * Enhancements
294
- * SoapHandler - define exchange method for each SOAP operation. See `one_off_spec` for example
295
-
296
- Version 0.0.80
297
- * Enhancements
298
- * `values_from_path` method on `RestHandler` to easily extract multiple values for an xpath or json path
299
- * Bug fix
300
- * Support response that has white space surrounding message
301
-
302
- Version 0.0.79
303
- * Enhancements
304
- * `values_from_path` method on `SoapHandler` to easily extract multiple values for an xpath
305
- * If `id` is specified on associated factory, FactoryBot will populate the primary factory with that id. See `rest/factory_spec` for eg
306
-
307
- Version 0.0.78
308
- * Enhancements
309
- * Use 'thor' for `soaspec generate`, allowing less prompt and more options through command line. Added tests for it
310
-
311
- Version 0.0.77
312
- * Enhancements
313
- * Use 'thor' for soaspec-init binary changing it to be `soaspec init`. Will update `soaspec-generate` in next version
314
- * Put pause of 1/2 a second for each API retry. Often retry is too quick otherwise
315
-
316
- Version 0.0.76
317
- * Bug fix
318
- * Fixed BLZService scenario on soaspec-virtual-server
319
- * Fixed return value for retry_for_success failure
320
- * Enhancements
321
- * Added method to indicate a factory create should actually return a failure status
322
-
323
- Version 0.0.75
324
- * Enhancements
325
- * For Factory created methods, set retry_for_success to true. Allow for this to be set at Exchange class level
326
-
327
- Version 0.0.74
328
- * Enhancements
329
- * RestHandler, enable api username to be set upon initialisation
330
-
331
- Version 0.0.73
332
- * Enhancements
333
- * Added 'default_handler' method with which define an exchange_handler to be created when an exchange is initialized
334
- * Refactoring
335
- * Use `@exchange_handler` instead of `@api_class` which is more consistent
336
-
337
- Version 0.0.72
338
- * Enhancements
339
- * Add ability to convert XML response to lower case for simpler xpath searching
340
-
341
- Version 0.0.71
342
- * Bug fix
343
- * Got exe 'soaspec-virtual-server' working
344
-
345
- Version 0.0.70
346
- * Enhancements
347
- * Added api_username method to REST handler to change user for an API during runtime
348
-
349
- Version 0.0.69
350
- * Enhancements
351
- * Calculate base_url ERB at time of handler's first request (Rather than when initialised).
352
- - Important for where base url uses ERB and so does oauth whose user may change
353
- * Demonstrate using oauth via spec
354
- * Demonstrate using basic auth via spec
355
-
356
- Version 0.0.68
357
- * Enhancements
358
- * Use ERB to calculate base_url for dynamic bases
359
-
360
- Version 0.0.67
361
- * Enhancements
362
- * Handle scenario where Request key is unconventional and not PascalCase key snakecase convert would break it
363
- - if first character of key is captial, PascalCase conversion is ignored
364
-
365
- Version 0.0.66
366
- * Enhancements
367
- * Added method to convert REST request keys to 'PascalCase' if 'pascal_keys' is set to true
368
- * This also converts paths obtaining elements to 'PascalCase' if they're simple and have no starting '//' or '$..'
369
-
370
- Version 0.0.65
371
- * Enhancements
372
- * Added ability to set 'suburl' and 'method' in Exchange accessor. Will be used in FactoryBot later
373
-
374
- Version 0.0.64
375
- * Enhancements
376
- * Got FactoryBot working for RestHandler. See specs for example
377
- * Add element? method to exchange to make it easier to check element is at path
378
- * Define 'element_name?' created when element is defined on ExchangeHandler
379
-
380
- Version 0.0.63
381
- * Enhancements
382
- * Interpret ERB for oauth credentials within oauth response. Needed for when params like 'username' can change in runtime
383
-
384
- Version 0.0.62
385
- * Enhancements
386
- * Use q parameter to simply to query parameters on REST requests
387
-
388
- Version 0.0.61
389
- * Enhancements
390
- * Retrieving oauth response try 3 times (to bypass intermittent errors)
391
-
392
- Version 0.0.60
393
- * Enhancements
394
- * Allow for factory_bot with automatic setting of missing setter methods
395
-
396
- Version 0.0.59
397
- * Enhancements
398
- * Perform ERB in headers to make using access_token using 'headers' possible
399
- * Try better way of testing `soaspec-init`.
400
-
401
- Version 0.0.58
402
- * Enhancements
403
- * Add method to set parts of the request body through `exchange[key]= 'value'`
404
- * Added example of Cucumber feature demonstrating this
405
-
406
- Version 0.0.56
407
- * Bug fix
408
- * Handle creating of traffic.log file within lib properly
409
-
410
- Version 0.0.55
411
- * Enhancements
412
- * Made `soaspec-virtual-server` exe to handle self served test server. Will be used in wiki tutorial
413
-
414
- Version 0.0.54
415
- * Enhancements
416
- * Make 'headers' accessor for setting headers on RestHandler easier
417
-
418
- Version 0.0.53
419
- * Enhancements
420
- * Make attribute possible for REST methods as well (as they can use XML too)
421
- * For non XML, non JSON responses, handle with regex or key for a Hash
422
-
423
- Version 0.0.52
424
- * Enhancements
425
- * Now have 'attribute' accessor making it easy to access an attribute from a response
426
-
427
- Version 0.0.51
428
- * Enhancements
429
- * Allow for 'default_hash=' method to be used in RestHandler. See 'many_calls_one_method_spec' for example
430
- * Got 'element' accessor working correctly (See soap/hash_spec.rb + 'blz_service' for example)
431
-
432
- Version 0.0.50
433
- * Enhancements
434
- * Able to use ERB in oauth parameters and extract oauth hash with 'oauth_response' method defined by 'oauth_file'
435
-
436
- Version 0.0.47
437
- * Bug Fix
438
- * Using 'Strip namespace' handle both namespace or not dependent if used
439
-
440
- Version 0.0.47
441
- * Enhancements
442
- * 'success scenarios' shared eg and 'retry_for_success' exchange method's status codes include 200..299, not just 200.
443
-
444
- Version 0.0.46
445
- * Enhancements
446
- * '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
447
-
448
- Version 0.0.45
449
- * Enhancements
450
- * No need to use 'name' when creating SoapHandler and RestHandler. Default is ClassName
451
-
452
- Version 0.0.44
453
- * Enhancements
454
- * Test Server log to logs/test_server.log
455
- * Simplify ExchangeHandler storing and retrieving values (see soap/hash_spec.rb)
456
- * Make setting SoapHandler operation and other params possible through object instantiation. Less code needed
457
-
458
- Version 0.0.43
459
- * Bug fix
460
- * Remove Environment namespace from 'soaspec-generate'
461
- * Enhancements
462
- * 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
463
-
464
- Version 0.0.42
465
- * Enhancements
466
- * Set Soaspec.api_handler work class is created. No need to call '.to_s' method
467
-
468
- Version 0.0.41
469
- * Bug fix
470
- * soaspec-generate not designed to work with virtual service. Rakefile not try to set that up
471
-
472
- Version 0.0.40
473
- * Enhancements
474
- * soaspec-generate now handle a wsdl without parameters in the operation and rather look up input element type
475
- * test_server virtual service now handle scenario where bank is not found and test made for that
476
-
477
- Version 0.0.39
478
- * Spec
479
- * Create task to use soaspec-init to create test structure and test it.
480
- * Enhancements
481
- * Take away need to use Environment namespace
482
- * Added response headers to REST response log
483
- * Now using virtual Web Service for SOAP
484
-
485
- Version 0.0.38
486
- * Bug fix
487
- * Fixed error in soaspec-generate. TODO: Test this in CI
488
-
489
- Version 0.0.37 / 2018-3-16
490
- * Enhancements
491
- * Made retry_for_success method to keep making request until 200 status code if set on exchange
492
- * If '$' not included for json_path, by default a '$..' is added for convenience
493
-
494
- Version 0.0.36 / 2018-3-15
495
- * Bug fix
496
- * Make test name log in correct place
497
- * Enhancements
498
- * Made accessor 'mandatory_json_values' to make it easier to share mandatory json path - value pairs
499
- * Created 'store' method for handler through which one can store a value and use it later on it in the same context
500
- * Deprecated
501
- * Removed old 'mandatory_elements', 'mandatory_xpath_values' overridden way of handling data for favor of new way of it setting 'expected_mandatory_elements'
502
-
503
- Version 0.0.35 / 2018-3-13
504
- * Enhancements
505
- * Handle array of JSON hashes starting with '['
506
- * Handle patch and put methods with data for REST
507
-
508
- Version 0.0.34 / 2018-3-12
509
- * Enhancements
510
- * Add oauth2 and oauth2_file methods to make it easy to load oauth2 parameters. Still a work in progress to handle all oauth2 variations
511
-
512
- Version 0.0.33 / 2018-3-9
513
- * Enhancements
514
- * Use 'jsonpath' instead of dig to check JSON responses. Much better for finding complex paths
515
-
516
- Version 0.0.32 / 2018-3-9
517
- * Enhancements
518
- * Made :body key in hash that can be used to use JSON.generate for a payload when using rest_handler exchanges
519
-
520
- Version 0.0.31 / 2018-3-8
521
- * Enhancements
522
- * Compacted unit tests for exchange handler
523
- * Implemented include_key? and find via xpath for REST handler. See specs
524
-
525
- Version 0.0.30 / 2018-3-6
526
- * Bug fix
527
- * Made generated class file name in soaspec-generate snakecase (was CamelCase)
528
-
529
- Version 0.0.29 / 2018-3-6
530
- * Refactorings
531
- * Base 'test' class from 'Tester' to 'ExhangeHandler'
532
- * Made default Soap Handler class 'SoapHandler' and making use of 'BasicSoapHandler' deprecated
533
-
534
- Version 0.0.28 / 2018-3-6
535
- * Enhancements
536
- * Added not_found matcher and used in spec example
537
- * Only call request upon first need of an Exchange response. This means test request is made as part of 'it' rather than in describe
538
-
539
- Version 0.0.27 / 2018-3-5
540
- * Bug fix
541
- * Fixed log file not present error
542
- * Updated exe binaries to use latest format
543
-
544
- Version 0.0.26 / 2018-3-5
545
- * Refactorings
546
- * Using methods to define mandatory_elements, mandatory_xpath_values, root_attributes, base_url. Please see specs. This is shorter to type and clearer
547
-
548
- Version 0.0.25 / 2018-2-25
549
- * Enhancements
550
- * Updated rest_handler to convert JSON and XML into Hash and use it in 'contain_value'. This still needs work.
551
- * Showed example of workflow using 'pet' url
552
-
553
- Version 0.0.24 / 2018-2-25
554
- * Enhancements
555
- * Added to soaspec-generate more types when creating YAML with data (int, boolean, double and custom enumeration).
556
- * Binaries use common module (exe-helper) to reduce repeatability
557
- * TODO: soaspec-generate read xsd's mentioned to import in WSDL schema
558
-
559
- Version 0.0.23 / 2018-2-23
560
- * Enhancements
561
- * Created RestHandler class (Very messy and ugly still) to handle REST requests using style used for SOAP using Rest Client resource
562
-
563
- Version 0.0.22 / 2018-2-15
564
- * Enhancements
565
- * Created new 'include_in_body' matcher to find value anywhere in response body (which could be a substring of an element)
566
-
567
- Version 0.0.21 / 2018-1-29
568
- * Enhancements
569
- * Added soaspec-generate - still in POC mode to generate files from a WSDL.
570
- * Added test_wsdl to start at validating xml according to WSDL. Still needs polishing
571
-
572
- Version 0.0.20 / 2018-1-26
573
- * Enhancements
574
- * Added ability to strip namespaces 'Soaspec::Environment.strip_namespaces = true'. See spec for example
575
- * Fixes
576
- * Made custom error and used it to make 'have_element_at_xpath' work when negated
577
-
578
- Version 0.0.19 / 2018-1-25
579
- * Enhancements
580
- * Added own shared examples to init script and to in built specs
581
-
582
- Version 0.0.18 / 2018-1-25
583
- * Fixes
584
- * Updated 'soaspec-init' so that it works again.
585
- * Enhancements
586
- * Added example showing representing data for request in YAML
587
-
588
- Version 0.0.17 / 2018-1-25
589
- * Fixes
590
- * Updated hash search so that it handles Array
591
-
592
- Version 0.0.16 / 2018-1-23
593
- * Fixes
594
- * Corrected logic of auto convert to hash. Previous version did not handle test specific values correctly
595
-
596
- Version 0.0.15 / 2018-1-23
597
- * Fixes
598
- * Updated code to convert string key in Savon request to key automatically by default before passing to Savon. This saves
599
- the user doing the conversion themselves.
600
-
601
- Version 0.0.14 / 2018-1-23
602
- * Fixes
603
- * Updated 'xml_to_yaml_file' exe to clean up YAML more. No more array for Hash value. Indenting needs work though.
604
- Now it's more like something you can read and pass into Savon request.
605
-
606
- Version 0.0.13 / 2018-1-23
607
- * Enhancements
608
- * Executable to create xml file from yaml
609
-
610
- Version 0.0.12 / 2018/1-22
611
- * Enhancements
612
- * Example name added to log file
613
-
614
- Version 0.0.10 / 2018-1-21
615
- * Enhancements
616
- * Added [] method to perform xpath assertion
617
- * Using Savon xpath. No need to explicitly provide namespace for xpath
618
-
619
- Version 0.0.9 / 2018-1-20
620
- * Refactoring
621
- * class_options -> savon_options - More specific
622
- * default_operation -> operation - Not default anymore so better not in name
623
- * Enhancements
624
- * Made mandatory_xpath_values method to add to 'success scenarios' shared example
625
-
626
- Version 0.0.8 / 2018-1-19
627
- * Enhancements
628
- * Added root_attributes method to add attribute to the root class
629
-
630
- Version 0.0.7 / 2018-1-19
631
- * Enhancements
632
- * Added contain_key matcher
1
+ Version 0.3.1
2
+ * Bug fix
3
+ * Should create logs folder for hosting virtual server's error logs
4
+
5
+ Version 0.3
6
+ * Enhancement
7
+ * 'format' method on exchange to easily identify an exchange format
8
+ * 'call' method return itself for easier chaining of methods
9
+ * 'baseline' records raw response or hash
10
+ * Method to easily append to override parameters of exchange with '+'/add method
11
+
12
+ Version 0.2.33
13
+ * Enhancement
14
+ * Ability to pass an array to 'suburl' which will be joined via '/' for
15
+ building a request via loops
16
+ * Matcher to record a baseline response for a set of parameters and
17
+ ensure it matches it in the future
18
+
19
+ Version 0.2.32
20
+ * Enhancement
21
+ * Added a cucumber generic step for a subpath
22
+
23
+ Version 0.2.31
24
+ * Bug fix
25
+ * `soaspec generate` was always creating basic auth even when not specified
26
+
27
+ Version 0.2.30
28
+ * Enhancement
29
+ * New method `retry_on_exceptions` on `exchange_handler` where one can specify
30
+ exceptions to retry on for all exchanges using that Handler
31
+ * 'exception' method on handler that stores exception of last exchange
32
+
33
+ Version 0.2.29
34
+ * Enhancement
35
+ * SpecLogger - change:
36
+ * Programe name
37
+ * Date and time format
38
+ * Accessor internal logger object
39
+ * Removed unnecessarily severity as it's always INFO
40
+ * For REST calls log Response under 1 log with headers and body indented on new lines
41
+
42
+ Version 0.2.28
43
+ * Enhancement
44
+ * Ability to change OAuth2 retry limit as retrying too many times can cause a lock out
45
+
46
+ Version 0.2.27
47
+ * Enhancement
48
+ * Enable ability to perform action right after response is retrieved. This could be used to
49
+ specify condition to fail straight away for a particular response
50
+
51
+ Version 0.2.26
52
+ * Enhancement
53
+ * Method `successful_status_code?` to return whether status code is 200..299
54
+ * Ability to turn off OAuth request message
55
+
56
+ Version 0.2.25
57
+ * Enhancement
58
+ * Started running yard-doctest to check yard examples are correct
59
+ * Make it easy to inherit urls for subclasses of handlers through 'parent_url'
60
+ * `soaspec generate`
61
+ * Run on random port as it only makes sense it context of where it runs
62
+ * Add support for basic_auth
63
+ * `soaspec cucumber` create initial Gemfile and support/env if not present for getting started quickly
64
+ * Bug Fix
65
+ * Fixed issue with turning off log part way through test suite not turning off RestClient's logs
66
+
67
+ Version 0.2.24
68
+ * Bug Fix
69
+ * Be explicit about where shared_examples_for is from (RSpec) as it can cause loading issues
70
+
71
+ Version 0.2.23
72
+ * Enhancement
73
+ * Interpreter handles XML Doc
74
+ * Get document_type_for complex element working. Hopefully should be able to handle WSDL with large response now
75
+
76
+ Version 0.2.22
77
+ * Bug Fix
78
+ * Allow negated version of 'be_successful' to work
79
+ * Fix `Exchange.retry_count` so that it retries after first try the correct number of times
80
+ * Enhancement
81
+ * Make 'value_from_path' and 'values_from_path' methods accessible from 'response' object
82
+ * Get extracting text via RegEx actually working
83
+
84
+ Version 0.2.21
85
+ * Enhancement
86
+ * Enable deprecation warnings to be removed so that they're not annoying with `Soaspec.log_warnings`
87
+
88
+ Version 0.2.20
89
+ * Enhancement
90
+ * 'soaspec pry' command to open pry, loading test API classes
91
+
92
+ Version 0.2.19
93
+ * Enhancement
94
+ * Create 'soaspec generate' (without wsdl) as a way to create an ExchangeHandler from a Web Page
95
+
96
+ Version 0.2.18
97
+ * Enhancement
98
+ * Hash of body returned via 'to_hash' can be accessed through Symbol or String
99
+
100
+ Version 0.2.17
101
+ * Bug Fix
102
+ * Correct Output where does not show the conversion happening by JSONPath and PascalCase conversion
103
+
104
+ Version 0.2.16
105
+ * Enhancement
106
+ * Move debug oauth into OAuth2 class
107
+
108
+ Version 0.2.14
109
+ * Bug Fix
110
+ * Remove default log file being created before it is changed to a custom location
111
+
112
+ Version 0.2.13
113
+ * Enhancements
114
+ * Allow terminal logging color to be changed through a `terminal_color` attribute
115
+
116
+ Version 0.2.12
117
+ * Enhancements
118
+ * Make it easier to set 'traffic_file' location with `Soaspec::SpecLogger.traffic_file = ''`
119
+
120
+ Version 0.2.11
121
+ * Bug Fix
122
+ * Cache 'Soaspec::OAuth2.instance_url' so Access token server not called everytime it's needed
123
+
124
+ Version 0.2.10
125
+ * Enhancements
126
+ * Added 'soaspec/demo' to be required to simplify demoing
127
+ * Bug Fix
128
+ * Logging wasn't handling Rest log properly
129
+
130
+ Version 0.2.9
131
+ * Enhancements
132
+ * More documentation in README.md
133
+ * Started breaking up massive RestHandler more
134
+ * Allow one output logs to STDOUT through Soaspec::SpecLogger.output_to_terminal = true
135
+
136
+ Version 0.2.8
137
+ * Bug Fix
138
+ * RSpec-its dependency produces a conflict. Remove specific version reference
139
+
140
+ Version 0.2.7
141
+ * Bug Fix
142
+ * Fix log issue that was failing in Windows
143
+
144
+ Version 0.2.6
145
+ * Enhancements
146
+ * New log file created with time stamp each time tests are run
147
+
148
+ Version 0.2.5
149
+ * Bug fix
150
+ * Error wasn't throw if checking for element with empty response
151
+ * Default hash set on Exchange without example overriding value not setting request body
152
+
153
+ Version 0.2.4
154
+ * Enhancements
155
+ * Enable block to be used when creating exchange with Handler.exchange
156
+
157
+ Version 0.2.3
158
+ * Enhancements
159
+ * Exchange.until itself method returns itself making it easier to reuse last result in assertions
160
+ * Added parameters to Exchange.until so that timeout, message and interval can be specified
161
+ * Soaspec cucumber exe to add generic steps to step_definitions folder
162
+
163
+ Version 0.2.2
164
+ * Enhancements
165
+ * Make accessing test_values from template using indifferent access
166
+
167
+ Version 0.2.1
168
+ * Enhancements
169
+ * Make method to access 'client_id' within a class after specifying 'oauth2_file' to remove unnecessarily loading file twice
170
+
171
+ Version 0.2.0
172
+ * Exception handling
173
+ * Raise meaningful exception if REST header value passed is null
174
+ * Enhancements
175
+ * `soaspec add` exe to create basic 'rest' or 'soap' service
176
+ * Add another matcher to check response is successful
177
+ * Default hash and template_name can now be defined within a class rather than just at an instance of it
178
+ * Stubs making it clearer what parameters are when looking at code from RubyMine
179
+ * Basic auth file method on RestHandler for clearer defining of basic auth
180
+ * Handle ERB in 'base_url' method
181
+
182
+ Version 0.1.18
183
+ * Enhancements
184
+ * Define 'exchange' method on response object so original exchange can be accessed
185
+ * Make simply approach for setting body of request with just a string passed `ExchangeHandler.post(message_body)` where message_body is not
186
+ a `Hash` but a `String`
187
+
188
+ Version 0.1.17
189
+ * Enhancements
190
+ * Added Wait class to easily wait for an expected condition to be true, either using global Soaspec::Wait or `exchange.until { true }`
191
+ See spec/unit/wait_spec for example
192
+ * Made shorter way to `get` a REST url with `RestHandler.get 'id'` setting the suburl to 'id' automatically
193
+
194
+ Version 0.1.16
195
+ * Bug fix
196
+ * Retry was not working for OAuth access_token
197
+
198
+ Version 0.1.15
199
+ * Enhancements
200
+ * Added more unit test coverage and a few more comments
201
+
202
+ Version 0.1.14
203
+ * Enhancements
204
+ * Got `rest` soaspec new working
205
+
206
+ Version 0.1.13
207
+ * Enhancements
208
+ * Cleaned up comments (mainly OAuth2 related)
209
+ * Cleaned up REST handler code, adding more comments on usage
210
+ * Added 'soaspec/cucumber/generic_steps' to simplify reusing code and also demonstrate how gem can be used
211
+
212
+ Version 0.1.12
213
+ * Enhancements
214
+ * Add 'refresh_token' attribute to Soaspec::OAuth2 class so that token can be retrieved once and then stored
215
+
216
+ Version 0.1.11
217
+ * Enhancements
218
+ * OAuth2 class can be initialized with strings as keys
219
+ * Global attribute, 'Soaspec::OAuth2.token_url' for setting common value
220
+
221
+ Version 0.1.10
222
+ * Enhancements
223
+ * Rename default template folder from to 'template' to 'templates'
224
+ * Use TemplateReader to simplify and add error handling to extracting templates
225
+ * Got convenience Rest Methods able to handle taking in template_name
226
+ * Started making a 'request' method to access request of API actually sent
227
+
228
+ Version 0.1.9
229
+ * Enhancements
230
+ * Finally move `soaspec-virtual-server` into same binary as `soaspec` utilising Thor
231
+
232
+ Version 0.1.8
233
+ * Bug fix
234
+ * Could not see OAuth parameters sent in logs when setting oauth debugging to true
235
+
236
+ Version 0.1.7
237
+ * Enhancements
238
+ * Include access token header automatically if 'authorization' is not set. Turn off with `Soaspec.auto_oauth = false`
239
+
240
+ Version 0.1.6
241
+ * Enhancements
242
+ * Bind localhost to 0.0.0.0 so service is accessible outside localhost
243
+
244
+ Version 0.1.5
245
+ * Enhancements
246
+ * Package spec changes status after a post is made. Help to illustrate scenario where status changes
247
+ * Record last exchange made for debugging purposes in 'last_exchange'
248
+
249
+ Version 0.1.4
250
+ * Enhancements
251
+ * create_file method create folders automatically if necessary
252
+ * Package spec to help learn testing for items in a list
253
+ * Added docs for soaspec-virtual-server
254
+
255
+ Version 0.1.3
256
+ * Enhancements
257
+ * Ability to set template folder
258
+ * Json Path handle multiple paths separated by commas
259
+
260
+ Version 0.1.1
261
+ * Enhancements
262
+ * Added ability to turn off logs (helpful if making a lot of API calls)
263
+
264
+ Version 0.1.0
265
+ * Enhancements
266
+ * 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
267
+ * Put SOAP Basic Auth in Example
268
+ * Added template handling for REST handler
269
+
270
+ Version 0.0.89
271
+ * Enhancements
272
+ * Move more functionality out of soaspec exe and into WsdlGenerator. Started unit tests for it
273
+
274
+ Version 0.0.88
275
+ * Bug Fix
276
+ * Corrected '_format' variable name that was breaking failing to find rest element
277
+
278
+ Version 0.0.87
279
+ * Bug Fix
280
+ * Fixed incorrect logging for when 'debug_oauth' is off
281
+
282
+ Version 0.0.86
283
+ * Enhancements
284
+ * 'debug_oauth' attribute used to toggle showing params used in retrieving access token
285
+
286
+ Version 0.0.85
287
+ * Enhancements
288
+ * Interpret XML and JSON better so that JSON with XML in it's tags is catered for
289
+
290
+ Version 0.0.84
291
+ * Enhancements
292
+ * 'strip_namespaces' defined in exchange handlers not globally which makes more sense
293
+ * Created 'to_hash' method for Exchange that returns a Hash of XML or JSON response (primarily for REST)
294
+
295
+ Version 0.0.83
296
+ * Enhancements
297
+ * Handle BOM or other characters that could be at start of xml of json response string
298
+
299
+ Version 0.0.82
300
+ * Enhancements
301
+ * Fixed namespace handling for REST
302
+
303
+ Version 0.0.81
304
+ * Enhancements
305
+ * SoapHandler - define exchange method for each SOAP operation. See `one_off_spec` for example
306
+
307
+ Version 0.0.80
308
+ * Enhancements
309
+ * `values_from_path` method on `RestHandler` to easily extract multiple values for an xpath or json path
310
+ * Bug fix
311
+ * Support response that has white space surrounding message
312
+
313
+ Version 0.0.79
314
+ * Enhancements
315
+ * `values_from_path` method on `SoapHandler` to easily extract multiple values for an xpath
316
+ * If `id` is specified on associated factory, FactoryBot will populate the primary factory with that id. See `rest/factory_spec` for eg
317
+
318
+ Version 0.0.78
319
+ * Enhancements
320
+ * Use 'thor' for `soaspec generate`, allowing less prompt and more options through command line. Added tests for it
321
+
322
+ Version 0.0.77
323
+ * Enhancements
324
+ * Use 'thor' for soaspec-init binary changing it to be `soaspec init`. Will update `soaspec-generate` in next version
325
+ * Put pause of 1/2 a second for each API retry. Often retry is too quick otherwise
326
+
327
+ Version 0.0.76
328
+ * Bug fix
329
+ * Fixed BLZService scenario on soaspec-virtual-server
330
+ * Fixed return value for retry_for_success failure
331
+ * Enhancements
332
+ * Added method to indicate a factory create should actually return a failure status
333
+
334
+ Version 0.0.75
335
+ * Enhancements
336
+ * For Factory created methods, set retry_for_success to true. Allow for this to be set at Exchange class level
337
+
338
+ Version 0.0.74
339
+ * Enhancements
340
+ * RestHandler, enable api username to be set upon initialisation
341
+
342
+ Version 0.0.73
343
+ * Enhancements
344
+ * Added 'default_handler' method with which define an exchange_handler to be created when an exchange is initialized
345
+ * Refactoring
346
+ * Use `@exchange_handler` instead of `@api_class` which is more consistent
347
+
348
+ Version 0.0.72
349
+ * Enhancements
350
+ * Add ability to convert XML response to lower case for simpler xpath searching
351
+
352
+ Version 0.0.71
353
+ * Bug fix
354
+ * Got exe 'soaspec-virtual-server' working
355
+
356
+ Version 0.0.70
357
+ * Enhancements
358
+ * Added api_username method to REST handler to change user for an API during runtime
359
+
360
+ Version 0.0.69
361
+ * Enhancements
362
+ * Calculate base_url ERB at time of handler's first request (Rather than when initialised).
363
+ - Important for where base url uses ERB and so does oauth whose user may change
364
+ * Demonstrate using oauth via spec
365
+ * Demonstrate using basic auth via spec
366
+
367
+ Version 0.0.68
368
+ * Enhancements
369
+ * Use ERB to calculate base_url for dynamic bases
370
+
371
+ Version 0.0.67
372
+ * Enhancements
373
+ * Handle scenario where Request key is unconventional and not PascalCase key snakecase convert would break it
374
+ - if first character of key is captial, PascalCase conversion is ignored
375
+
376
+ Version 0.0.66
377
+ * Enhancements
378
+ * Added method to convert REST request keys to 'PascalCase' if 'pascal_keys' is set to true
379
+ * This also converts paths obtaining elements to 'PascalCase' if they're simple and have no starting '//' or '$..'
380
+
381
+ Version 0.0.65
382
+ * Enhancements
383
+ * Added ability to set 'suburl' and 'method' in Exchange accessor. Will be used in FactoryBot later
384
+
385
+ Version 0.0.64
386
+ * Enhancements
387
+ * Got FactoryBot working for RestHandler. See specs for example
388
+ * Add element? method to exchange to make it easier to check element is at path
389
+ * Define 'element_name?' created when element is defined on ExchangeHandler
390
+
391
+ Version 0.0.63
392
+ * Enhancements
393
+ * Interpret ERB for oauth credentials within oauth response. Needed for when params like 'username' can change in runtime
394
+
395
+ Version 0.0.62
396
+ * Enhancements
397
+ * Use q parameter to simply to query parameters on REST requests
398
+
399
+ Version 0.0.61
400
+ * Enhancements
401
+ * Retrieving oauth response try 3 times (to bypass intermittent errors)
402
+
403
+ Version 0.0.60
404
+ * Enhancements
405
+ * Allow for factory_bot with automatic setting of missing setter methods
406
+
407
+ Version 0.0.59
408
+ * Enhancements
409
+ * Perform ERB in headers to make using access_token using 'headers' possible
410
+ * Try better way of testing `soaspec-init`.
411
+
412
+ Version 0.0.58
413
+ * Enhancements
414
+ * Add method to set parts of the request body through `exchange[key]= 'value'`
415
+ * Added example of Cucumber feature demonstrating this
416
+
417
+ Version 0.0.56
418
+ * Bug fix
419
+ * Handle creating of traffic.log file within lib properly
420
+
421
+ Version 0.0.55
422
+ * Enhancements
423
+ * Made `soaspec-virtual-server` exe to handle self served test server. Will be used in wiki tutorial
424
+
425
+ Version 0.0.54
426
+ * Enhancements
427
+ * Make 'headers' accessor for setting headers on RestHandler easier
428
+
429
+ Version 0.0.53
430
+ * Enhancements
431
+ * Make attribute possible for REST methods as well (as they can use XML too)
432
+ * For non XML, non JSON responses, handle with regex or key for a Hash
433
+
434
+ Version 0.0.52
435
+ * Enhancements
436
+ * Now have 'attribute' accessor making it easy to access an attribute from a response
437
+
438
+ Version 0.0.51
439
+ * Enhancements
440
+ * Allow for 'default_hash=' method to be used in RestHandler. See 'many_calls_one_method_spec' for example
441
+ * Got 'element' accessor working correctly (See soap/hash_spec.rb + 'blz_service' for example)
442
+
443
+ Version 0.0.50
444
+ * Enhancements
445
+ * Able to use ERB in oauth parameters and extract oauth hash with 'oauth_response' method defined by 'oauth_file'
446
+
447
+ Version 0.0.47
448
+ * Bug Fix
449
+ * Using 'Strip namespace' handle both namespace or not dependent if used
450
+
451
+ Version 0.0.47
452
+ * Enhancements
453
+ * 'success scenarios' shared eg and 'retry_for_success' exchange method's status codes include 200..299, not just 200.
454
+
455
+ Version 0.0.46
456
+ * Enhancements
457
+ * '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
458
+
459
+ Version 0.0.45
460
+ * Enhancements
461
+ * No need to use 'name' when creating SoapHandler and RestHandler. Default is ClassName
462
+
463
+ Version 0.0.44
464
+ * Enhancements
465
+ * Test Server log to logs/test_server.log
466
+ * Simplify ExchangeHandler storing and retrieving values (see soap/hash_spec.rb)
467
+ * Make setting SoapHandler operation and other params possible through object instantiation. Less code needed
468
+
469
+ Version 0.0.43
470
+ * Bug fix
471
+ * Remove Environment namespace from 'soaspec-generate'
472
+ * Enhancements
473
+ * 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
474
+
475
+ Version 0.0.42
476
+ * Enhancements
477
+ * Set Soaspec.api_handler work class is created. No need to call '.to_s' method
478
+
479
+ Version 0.0.41
480
+ * Bug fix
481
+ * soaspec-generate not designed to work with virtual service. Rakefile not try to set that up
482
+
483
+ Version 0.0.40
484
+ * Enhancements
485
+ * soaspec-generate now handle a wsdl without parameters in the operation and rather look up input element type
486
+ * test_server virtual service now handle scenario where bank is not found and test made for that
487
+
488
+ Version 0.0.39
489
+ * Spec
490
+ * Create task to use soaspec-init to create test structure and test it.
491
+ * Enhancements
492
+ * Take away need to use Environment namespace
493
+ * Added response headers to REST response log
494
+ * Now using virtual Web Service for SOAP
495
+
496
+ Version 0.0.38
497
+ * Bug fix
498
+ * Fixed error in soaspec-generate. TODO: Test this in CI
499
+
500
+ Version 0.0.37 / 2018-3-16
501
+ * Enhancements
502
+ * Made retry_for_success method to keep making request until 200 status code if set on exchange
503
+ * If '$' not included for json_path, by default a '$..' is added for convenience
504
+
505
+ Version 0.0.36 / 2018-3-15
506
+ * Bug fix
507
+ * Make test name log in correct place
508
+ * Enhancements
509
+ * Made accessor 'mandatory_json_values' to make it easier to share mandatory json path - value pairs
510
+ * Created 'store' method for handler through which one can store a value and use it later on it in the same context
511
+ * Deprecated
512
+ * Removed old 'mandatory_elements', 'mandatory_xpath_values' overridden way of handling data for favor of new way of it setting 'expected_mandatory_elements'
513
+
514
+ Version 0.0.35 / 2018-3-13
515
+ * Enhancements
516
+ * Handle array of JSON hashes starting with '['
517
+ * Handle patch and put methods with data for REST
518
+
519
+ Version 0.0.34 / 2018-3-12
520
+ * Enhancements
521
+ * Add oauth2 and oauth2_file methods to make it easy to load oauth2 parameters. Still a work in progress to handle all oauth2 variations
522
+
523
+ Version 0.0.33 / 2018-3-9
524
+ * Enhancements
525
+ * Use 'jsonpath' instead of dig to check JSON responses. Much better for finding complex paths
526
+
527
+ Version 0.0.32 / 2018-3-9
528
+ * Enhancements
529
+ * Made :body key in hash that can be used to use JSON.generate for a payload when using rest_handler exchanges
530
+
531
+ Version 0.0.31 / 2018-3-8
532
+ * Enhancements
533
+ * Compacted unit tests for exchange handler
534
+ * Implemented include_key? and find via xpath for REST handler. See specs
535
+
536
+ Version 0.0.30 / 2018-3-6
537
+ * Bug fix
538
+ * Made generated class file name in soaspec-generate snakecase (was CamelCase)
539
+
540
+ Version 0.0.29 / 2018-3-6
541
+ * Refactorings
542
+ * Base 'test' class from 'Tester' to 'ExhangeHandler'
543
+ * Made default Soap Handler class 'SoapHandler' and making use of 'BasicSoapHandler' deprecated
544
+
545
+ Version 0.0.28 / 2018-3-6
546
+ * Enhancements
547
+ * Added not_found matcher and used in spec example
548
+ * Only call request upon first need of an Exchange response. This means test request is made as part of 'it' rather than in describe
549
+
550
+ Version 0.0.27 / 2018-3-5
551
+ * Bug fix
552
+ * Fixed log file not present error
553
+ * Updated exe binaries to use latest format
554
+
555
+ Version 0.0.26 / 2018-3-5
556
+ * Refactorings
557
+ * Using methods to define mandatory_elements, mandatory_xpath_values, root_attributes, base_url. Please see specs. This is shorter to type and clearer
558
+
559
+ Version 0.0.25 / 2018-2-25
560
+ * Enhancements
561
+ * Updated rest_handler to convert JSON and XML into Hash and use it in 'contain_value'. This still needs work.
562
+ * Showed example of workflow using 'pet' url
563
+
564
+ Version 0.0.24 / 2018-2-25
565
+ * Enhancements
566
+ * Added to soaspec-generate more types when creating YAML with data (int, boolean, double and custom enumeration).
567
+ * Binaries use common module (exe-helper) to reduce repeatability
568
+ * TODO: soaspec-generate read xsd's mentioned to import in WSDL schema
569
+
570
+ Version 0.0.23 / 2018-2-23
571
+ * Enhancements
572
+ * Created RestHandler class (Very messy and ugly still) to handle REST requests using style used for SOAP using Rest Client resource
573
+
574
+ Version 0.0.22 / 2018-2-15
575
+ * Enhancements
576
+ * Created new 'include_in_body' matcher to find value anywhere in response body (which could be a substring of an element)
577
+
578
+ Version 0.0.21 / 2018-1-29
579
+ * Enhancements
580
+ * Added soaspec-generate - still in POC mode to generate files from a WSDL.
581
+ * Added test_wsdl to start at validating xml according to WSDL. Still needs polishing
582
+
583
+ Version 0.0.20 / 2018-1-26
584
+ * Enhancements
585
+ * Added ability to strip namespaces 'Soaspec::Environment.strip_namespaces = true'. See spec for example
586
+ * Fixes
587
+ * Made custom error and used it to make 'have_element_at_xpath' work when negated
588
+
589
+ Version 0.0.19 / 2018-1-25
590
+ * Enhancements
591
+ * Added own shared examples to init script and to in built specs
592
+
593
+ Version 0.0.18 / 2018-1-25
594
+ * Fixes
595
+ * Updated 'soaspec-init' so that it works again.
596
+ * Enhancements
597
+ * Added example showing representing data for request in YAML
598
+
599
+ Version 0.0.17 / 2018-1-25
600
+ * Fixes
601
+ * Updated hash search so that it handles Array
602
+
603
+ Version 0.0.16 / 2018-1-23
604
+ * Fixes
605
+ * Corrected logic of auto convert to hash. Previous version did not handle test specific values correctly
606
+
607
+ Version 0.0.15 / 2018-1-23
608
+ * Fixes
609
+ * Updated code to convert string key in Savon request to key automatically by default before passing to Savon. This saves
610
+ the user doing the conversion themselves.
611
+
612
+ Version 0.0.14 / 2018-1-23
613
+ * Fixes
614
+ * Updated 'xml_to_yaml_file' exe to clean up YAML more. No more array for Hash value. Indenting needs work though.
615
+ Now it's more like something you can read and pass into Savon request.
616
+
617
+ Version 0.0.13 / 2018-1-23
618
+ * Enhancements
619
+ * Executable to create xml file from yaml
620
+
621
+ Version 0.0.12 / 2018/1-22
622
+ * Enhancements
623
+ * Example name added to log file
624
+
625
+ Version 0.0.10 / 2018-1-21
626
+ * Enhancements
627
+ * Added [] method to perform xpath assertion
628
+ * Using Savon xpath. No need to explicitly provide namespace for xpath
629
+
630
+ Version 0.0.9 / 2018-1-20
631
+ * Refactoring
632
+ * class_options -> savon_options - More specific
633
+ * default_operation -> operation - Not default anymore so better not in name
634
+ * Enhancements
635
+ * Made mandatory_xpath_values method to add to 'success scenarios' shared example
636
+
637
+ Version 0.0.8 / 2018-1-19
638
+ * Enhancements
639
+ * Added root_attributes method to add attribute to the root class
640
+
641
+ Version 0.0.7 / 2018-1-19
642
+ * Enhancements
643
+ * Added contain_key matcher
633
644
  * mandatory_elements method created for SoapHandler - can be used to add tests to success scenarios (see example get_weather_web_service class for details)