ChangeLog in soaspec-0.2.33 vs ChangeLog in soaspec-0.3.1
- old
+ new
@@ -1,633 +1,644 @@
-Version 0.2.33
-* Enhancement
- * Ability to pass an array to 'suburl' which will be joined via '/' for
- building a request via loops
- * Matcher to record a baseline response for a set of parameters and
- ensure it matches it in the future
-
-Version 0.2.32
-* Enhancement
- * Added a cucumber generic step for a subpath
-
-Version 0.2.31
-* Bug fix
- * `soaspec generate` was always creating basic auth even when not specified
-
-Version 0.2.30
-* Enhancement
- * New method `retry_on_exceptions` on `exchange_handler` where one can specify
- exceptions to retry on for all exchanges using that Handler
- * 'exception' method on handler that stores exception of last exchange
-
-Version 0.2.29
-* Enhancement
- * SpecLogger - change:
- * Programe name
- * Date and time format
- * Accessor internal logger object
- * Removed unnecessarily severity as it's always INFO
- * For REST calls log Response under 1 log with headers and body indented on new lines
-
-Version 0.2.28
-* Enhancement
- * Ability to change OAuth2 retry limit as retrying too many times can cause a lock out
-
-Version 0.2.27
-* Enhancement
- * Enable ability to perform action right after response is retrieved. This could be used to
- specify condition to fail straight away for a particular response
-
-Version 0.2.26
-* Enhancement
- * Method `successful_status_code?` to return whether status code is 200..299
- * Ability to turn off OAuth request message
-
-Version 0.2.25
-* Enhancement
- * Started running yard-doctest to check yard examples are correct
- * Make it easy to inherit urls for subclasses of handlers through 'parent_url'
- * `soaspec generate`
- * Run on random port as it only makes sense it context of where it runs
- * Add support for basic_auth
- * `soaspec cucumber` create initial Gemfile and support/env if not present for getting started quickly
-* Bug Fix
- * Fixed issue with turning off log part way through test suite not turning off RestClient's logs
-
-Version 0.2.24
-* Bug Fix
- * Be explicit about where shared_examples_for is from (RSpec) as it can cause loading issues
-
-Version 0.2.23
-* Enhancement
- * Interpreter handles XML Doc
- * Get document_type_for complex element working. Hopefully should be able to handle WSDL with large response now
-
-Version 0.2.22
-* Bug Fix
- * Allow negated version of 'be_successful' to work
- * Fix `Exchange.retry_count` so that it retries after first try the correct number of times
-* Enhancement
- * Make 'value_from_path' and 'values_from_path' methods accessible from 'response' object
- * Get extracting text via RegEx actually working
-
-Version 0.2.21
-* Enhancement
- * Enable deprecation warnings to be removed so that they're not annoying with `Soaspec.log_warnings`
-
-Version 0.2.20
-* Enhancement
- * 'soaspec pry' command to open pry, loading test API classes
-
-Version 0.2.19
-* Enhancement
- * Create 'soaspec generate' (without wsdl) as a way to create an ExchangeHandler from a Web Page
-
-Version 0.2.18
-* Enhancement
- * Hash of body returned via 'to_hash' can be accessed through Symbol or String
-
-Version 0.2.17
-* Bug Fix
- * Correct Output where does not show the conversion happening by JSONPath and PascalCase conversion
-
-Version 0.2.16
-* Enhancement
- * Move debug oauth into OAuth2 class
-
-Version 0.2.14
-* Bug Fix
- * Remove default log file being created before it is changed to a custom location
-
-Version 0.2.13
-* Enhancements
- * Allow terminal logging color to be changed through a `terminal_color` attribute
-
-Version 0.2.12
-* Enhancements
- * Make it easier to set 'traffic_file' location with `Soaspec::SpecLogger.traffic_file = ''`
-
-Version 0.2.11
-* Bug Fix
- * Cache 'Soaspec::OAuth2.instance_url' so Access token server not called everytime it's needed
-
-Version 0.2.10
-* Enhancements
- * Added 'soaspec/demo' to be required to simplify demoing
-* Bug Fix
- * Logging wasn't handling Rest log properly
-
-Version 0.2.9
-* Enhancements
- * More documentation in README.md
- * Started breaking up massive RestHandler more
- * Allow one output logs to STDOUT through Soaspec::SpecLogger.output_to_terminal = true
-
-Version 0.2.8
-* Bug Fix
- * RSpec-its dependency produces a conflict. Remove specific version reference
-
-Version 0.2.7
-* Bug Fix
- * Fix log issue that was failing in Windows
-
-Version 0.2.6
-* Enhancements
- * New log file created with time stamp each time tests are run
-
-Version 0.2.5
-* Bug fix
- * Error wasn't throw if checking for element with empty response
- * Default hash set on Exchange without example overriding value not setting request body
-
-Version 0.2.4
-* Enhancements
- * Enable block to be used when creating exchange with Handler.exchange
-
-Version 0.2.3
-* Enhancements
- * Exchange.until itself method returns itself making it easier to reuse last result in assertions
- * Added parameters to Exchange.until so that timeout, message and interval can be specified
- * Soaspec cucumber exe to add generic steps to step_definitions folder
-
-Version 0.2.2
-* Enhancements
- * Make accessing test_values from template using indifferent access
-
-Version 0.2.1
-* Enhancements
- * Make method to access 'client_id' within a class after specifying 'oauth2_file' to remove unnecessarily loading file twice
-
-Version 0.2.0
-* Exception handling
- * Raise meaningful exception if REST header value passed is null
-* Enhancements
- * `soaspec add` exe to create basic 'rest' or 'soap' service
- * Add another matcher to check response is successful
- * Default hash and template_name can now be defined within a class rather than just at an instance of it
- * Stubs making it clearer what parameters are when looking at code from RubyMine
- * Basic auth file method on RestHandler for clearer defining of basic auth
- * Handle ERB in 'base_url' method
-
-Version 0.1.18
-* Enhancements
- * Define 'exchange' method on response object so original exchange can be accessed
- * Make simply approach for setting body of request with just a string passed `ExchangeHandler.post(message_body)` where message_body is not
- a `Hash` but a `String`
-
-Version 0.1.17
-* Enhancements
- * Added Wait class to easily wait for an expected condition to be true, either using global Soaspec::Wait or `exchange.until { true }`
- See spec/unit/wait_spec for example
- * Made shorter way to `get` a REST url with `RestHandler.get 'id'` setting the suburl to 'id' automatically
-
-Version 0.1.16
-* Bug fix
- * Retry was not working for OAuth access_token
-
-Version 0.1.15
-* Enhancements
- * Added more unit test coverage and a few more comments
-
-Version 0.1.14
-* Enhancements
- * Got `rest` soaspec new working
-
-Version 0.1.13
-* Enhancements
- * Cleaned up comments (mainly OAuth2 related)
- * Cleaned up REST handler code, adding more comments on usage
- * Added 'soaspec/cucumber/generic_steps' to simplify reusing code and also demonstrate how gem can be used
-
-Version 0.1.12
-* Enhancements
- * Add 'refresh_token' attribute to Soaspec::OAuth2 class so that token can be retrieved once and then stored
-
-Version 0.1.11
-* Enhancements
- * OAuth2 class can be initialized with strings as keys
- * Global attribute, 'Soaspec::OAuth2.token_url' for setting common value
-
-Version 0.1.10
-* Enhancements
- * Rename default template folder from to 'template' to 'templates'
- * Use TemplateReader to simplify and add error handling to extracting templates
- * Got convenience Rest Methods able to handle taking in template_name
- * Started making a 'request' method to access request of API actually sent
-
-Version 0.1.9
-* Enhancements
- * Finally move `soaspec-virtual-server` into same binary as `soaspec` utilising Thor
-
-Version 0.1.8
-* Bug fix
- * Could not see OAuth parameters sent in logs when setting oauth debugging to true
-
-Version 0.1.7
-* Enhancements
- * Include access token header automatically if 'authorization' is not set. Turn off with `Soaspec.auto_oauth = false`
-
-Version 0.1.6
-* Enhancements
- * Bind localhost to 0.0.0.0 so service is accessible outside localhost
-
-Version 0.1.5
-* Enhancements
- * Package spec changes status after a post is made. Help to illustrate scenario where status changes
- * Record last exchange made for debugging purposes in 'last_exchange'
-
-Version 0.1.4
-* Enhancements
- * create_file method create folders automatically if necessary
- * Package spec to help learn testing for items in a list
- * Added docs for soaspec-virtual-server
-
-Version 0.1.3
-* Enhancements
- * Ability to set template folder
- * Json Path handle multiple paths separated by commas
-
-Version 0.1.1
-* Enhancements
- * Added ability to turn off logs (helpful if making a lot of API calls)
-
-Version 0.1.0
-* Enhancements
- * 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
- * Put SOAP Basic Auth in Example
- * Added template handling for REST handler
-
-Version 0.0.89
-* Enhancements
- * Move more functionality out of soaspec exe and into WsdlGenerator. Started unit tests for it
-
-Version 0.0.88
-* Bug Fix
- * Corrected '_format' variable name that was breaking failing to find rest element
-
-Version 0.0.87
-* Bug Fix
- * Fixed incorrect logging for when 'debug_oauth' is off
-
-Version 0.0.86
-* Enhancements
- * 'debug_oauth' attribute used to toggle showing params used in retrieving access token
-
-Version 0.0.85
-* Enhancements
- * Interpret XML and JSON better so that JSON with XML in it's tags is catered for
-
-Version 0.0.84
-* Enhancements
- * 'strip_namespaces' defined in exchange handlers not globally which makes more sense
- * Created 'to_hash' method for Exchange that returns a Hash of XML or JSON response (primarily for REST)
-
-Version 0.0.83
-* Enhancements
- * Handle BOM or other characters that could be at start of xml of json response string
-
-Version 0.0.82
-* Enhancements
- * Fixed namespace handling for REST
-
-Version 0.0.81
-* Enhancements
- * SoapHandler - define exchange method for each SOAP operation. See `one_off_spec` for example
-
-Version 0.0.80
-* Enhancements
- * `values_from_path` method on `RestHandler` to easily extract multiple values for an xpath or json path
-* Bug fix
- * Support response that has white space surrounding message
-
-Version 0.0.79
-* Enhancements
- * `values_from_path` method on `SoapHandler` to easily extract multiple values for an xpath
- * If `id` is specified on associated factory, FactoryBot will populate the primary factory with that id. See `rest/factory_spec` for eg
-
-Version 0.0.78
-* Enhancements
- * Use 'thor' for `soaspec generate`, allowing less prompt and more options through command line. Added tests for it
-
-Version 0.0.77
-* Enhancements
- * Use 'thor' for soaspec-init binary changing it to be `soaspec init`. Will update `soaspec-generate` in next version
- * Put pause of 1/2 a second for each API retry. Often retry is too quick otherwise
-
-Version 0.0.76
-* Bug fix
- * Fixed BLZService scenario on soaspec-virtual-server
- * Fixed return value for retry_for_success failure
-* Enhancements
- * Added method to indicate a factory create should actually return a failure status
-
-Version 0.0.75
-* Enhancements
- * For Factory created methods, set retry_for_success to true. Allow for this to be set at Exchange class level
-
-Version 0.0.74
-* Enhancements
- * RestHandler, enable api username to be set upon initialisation
-
-Version 0.0.73
-* Enhancements
- * Added 'default_handler' method with which define an exchange_handler to be created when an exchange is initialized
-* Refactoring
- * Use `@exchange_handler` instead of `@api_class` which is more consistent
-
-Version 0.0.72
-* Enhancements
- * Add ability to convert XML response to lower case for simpler xpath searching
-
-Version 0.0.71
-* Bug fix
- * Got exe 'soaspec-virtual-server' working
-
-Version 0.0.70
-* Enhancements
- * Added api_username method to REST handler to change user for an API during runtime
-
-Version 0.0.69
-* Enhancements
- * Calculate base_url ERB at time of handler's first request (Rather than when initialised).
- - Important for where base url uses ERB and so does oauth whose user may change
- * Demonstrate using oauth via spec
- * Demonstrate using basic auth via spec
-
-Version 0.0.68
-* Enhancements
- * Use ERB to calculate base_url for dynamic bases
-
-Version 0.0.67
-* Enhancements
- * Handle scenario where Request key is unconventional and not PascalCase key snakecase convert would break it
- - if first character of key is captial, PascalCase conversion is ignored
-
-Version 0.0.66
-* Enhancements
- * Added method to convert REST request keys to 'PascalCase' if 'pascal_keys' is set to true
- * This also converts paths obtaining elements to 'PascalCase' if they're simple and have no starting '//' or '$..'
-
-Version 0.0.65
-* Enhancements
- * Added ability to set 'suburl' and 'method' in Exchange accessor. Will be used in FactoryBot later
-
-Version 0.0.64
-* Enhancements
- * Got FactoryBot working for RestHandler. See specs for example
- * Add element? method to exchange to make it easier to check element is at path
- * Define 'element_name?' created when element is defined on ExchangeHandler
-
-Version 0.0.63
-* Enhancements
- * Interpret ERB for oauth credentials within oauth response. Needed for when params like 'username' can change in runtime
-
-Version 0.0.62
-* Enhancements
- * Use q parameter to simply to query parameters on REST requests
-
-Version 0.0.61
-* Enhancements
- * Retrieving oauth response try 3 times (to bypass intermittent errors)
-
-Version 0.0.60
-* Enhancements
- * Allow for factory_bot with automatic setting of missing setter methods
-
-Version 0.0.59
-* Enhancements
- * Perform ERB in headers to make using access_token using 'headers' possible
- * Try better way of testing `soaspec-init`.
-
-Version 0.0.58
-* Enhancements
- * Add method to set parts of the request body through `exchange[key]= 'value'`
- * Added example of Cucumber feature demonstrating this
-
-Version 0.0.56
-* Bug fix
- * Handle creating of traffic.log file within lib properly
-
-Version 0.0.55
-* Enhancements
- * Made `soaspec-virtual-server` exe to handle self served test server. Will be used in wiki tutorial
-
-Version 0.0.54
-* Enhancements
- * Make 'headers' accessor for setting headers on RestHandler easier
-
-Version 0.0.53
-* Enhancements
- * Make attribute possible for REST methods as well (as they can use XML too)
- * For non XML, non JSON responses, handle with regex or key for a Hash
-
-Version 0.0.52
-* Enhancements
- * Now have 'attribute' accessor making it easy to access an attribute from a response
-
-Version 0.0.51
-* Enhancements
- * Allow for 'default_hash=' method to be used in RestHandler. See 'many_calls_one_method_spec' for example
- * Got 'element' accessor working correctly (See soap/hash_spec.rb + 'blz_service' for example)
-
-Version 0.0.50
-* Enhancements
- * Able to use ERB in oauth parameters and extract oauth hash with 'oauth_response' method defined by 'oauth_file'
-
-Version 0.0.47
-* Bug Fix
- * Using 'Strip namespace' handle both namespace or not dependent if used
-
-Version 0.0.47
-* Enhancements
- * 'success scenarios' shared eg and 'retry_for_success' exchange method's status codes include 200..299, not just 200.
-
-Version 0.0.46
-* Enhancements
- * '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
-
-Version 0.0.45
-* Enhancements
- * No need to use 'name' when creating SoapHandler and RestHandler. Default is ClassName
-
-Version 0.0.44
-* Enhancements
- * Test Server log to logs/test_server.log
- * Simplify ExchangeHandler storing and retrieving values (see soap/hash_spec.rb)
- * Make setting SoapHandler operation and other params possible through object instantiation. Less code needed
-
-Version 0.0.43
-* Bug fix
- * Remove Environment namespace from 'soaspec-generate'
-* Enhancements
- * 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
-
-Version 0.0.42
-* Enhancements
- * Set Soaspec.api_handler work class is created. No need to call '.to_s' method
-
-Version 0.0.41
-* Bug fix
- * soaspec-generate not designed to work with virtual service. Rakefile not try to set that up
-
-Version 0.0.40
-* Enhancements
- * soaspec-generate now handle a wsdl without parameters in the operation and rather look up input element type
- * test_server virtual service now handle scenario where bank is not found and test made for that
-
-Version 0.0.39
-* Spec
- * Create task to use soaspec-init to create test structure and test it.
-* Enhancements
- * Take away need to use Environment namespace
- * Added response headers to REST response log
- * Now using virtual Web Service for SOAP
-
-Version 0.0.38
-* Bug fix
- * Fixed error in soaspec-generate. TODO: Test this in CI
-
-Version 0.0.37 / 2018-3-16
-* Enhancements
- * Made retry_for_success method to keep making request until 200 status code if set on exchange
- * If '$' not included for json_path, by default a '$..' is added for convenience
-
-Version 0.0.36 / 2018-3-15
-* Bug fix
- * Make test name log in correct place
-* Enhancements
- * Made accessor 'mandatory_json_values' to make it easier to share mandatory json path - value pairs
- * Created 'store' method for handler through which one can store a value and use it later on it in the same context
-* Deprecated
- * Removed old 'mandatory_elements', 'mandatory_xpath_values' overridden way of handling data for favor of new way of it setting 'expected_mandatory_elements'
-
-Version 0.0.35 / 2018-3-13
-* Enhancements
- * Handle array of JSON hashes starting with '['
- * Handle patch and put methods with data for REST
-
-Version 0.0.34 / 2018-3-12
-* Enhancements
- * Add oauth2 and oauth2_file methods to make it easy to load oauth2 parameters. Still a work in progress to handle all oauth2 variations
-
-Version 0.0.33 / 2018-3-9
-* Enhancements
- * Use 'jsonpath' instead of dig to check JSON responses. Much better for finding complex paths
-
-Version 0.0.32 / 2018-3-9
-* Enhancements
- * Made :body key in hash that can be used to use JSON.generate for a payload when using rest_handler exchanges
-
-Version 0.0.31 / 2018-3-8
-* Enhancements
- * Compacted unit tests for exchange handler
- * Implemented include_key? and find via xpath for REST handler. See specs
-
-Version 0.0.30 / 2018-3-6
-* Bug fix
- * Made generated class file name in soaspec-generate snakecase (was CamelCase)
-
-Version 0.0.29 / 2018-3-6
-* Refactorings
- * Base 'test' class from 'Tester' to 'ExhangeHandler'
- * Made default Soap Handler class 'SoapHandler' and making use of 'BasicSoapHandler' deprecated
-
-Version 0.0.28 / 2018-3-6
-* Enhancements
- * Added not_found matcher and used in spec example
- * Only call request upon first need of an Exchange response. This means test request is made as part of 'it' rather than in describe
-
-Version 0.0.27 / 2018-3-5
-* Bug fix
- * Fixed log file not present error
- * Updated exe binaries to use latest format
-
-Version 0.0.26 / 2018-3-5
-* Refactorings
- * Using methods to define mandatory_elements, mandatory_xpath_values, root_attributes, base_url. Please see specs. This is shorter to type and clearer
-
-Version 0.0.25 / 2018-2-25
-* Enhancements
- * Updated rest_handler to convert JSON and XML into Hash and use it in 'contain_value'. This still needs work.
- * Showed example of workflow using 'pet' url
-
-Version 0.0.24 / 2018-2-25
-* Enhancements
- * Added to soaspec-generate more types when creating YAML with data (int, boolean, double and custom enumeration).
- * Binaries use common module (exe-helper) to reduce repeatability
-* TODO: soaspec-generate read xsd's mentioned to import in WSDL schema
-
-Version 0.0.23 / 2018-2-23
-* Enhancements
- * Created RestHandler class (Very messy and ugly still) to handle REST requests using style used for SOAP using Rest Client resource
-
-Version 0.0.22 / 2018-2-15
-* Enhancements
- * Created new 'include_in_body' matcher to find value anywhere in response body (which could be a substring of an element)
-
-Version 0.0.21 / 2018-1-29
-* Enhancements
- * Added soaspec-generate - still in POC mode to generate files from a WSDL.
- * Added test_wsdl to start at validating xml according to WSDL. Still needs polishing
-
-Version 0.0.20 / 2018-1-26
-* Enhancements
- * Added ability to strip namespaces 'Soaspec::Environment.strip_namespaces = true'. See spec for example
-* Fixes
- * Made custom error and used it to make 'have_element_at_xpath' work when negated
-
-Version 0.0.19 / 2018-1-25
-* Enhancements
- * Added own shared examples to init script and to in built specs
-
-Version 0.0.18 / 2018-1-25
-* Fixes
- * Updated 'soaspec-init' so that it works again.
-* Enhancements
- * Added example showing representing data for request in YAML
-
-Version 0.0.17 / 2018-1-25
-* Fixes
- * Updated hash search so that it handles Array
-
-Version 0.0.16 / 2018-1-23
-* Fixes
- * Corrected logic of auto convert to hash. Previous version did not handle test specific values correctly
-
-Version 0.0.15 / 2018-1-23
-* Fixes
- * Updated code to convert string key in Savon request to key automatically by default before passing to Savon. This saves
- the user doing the conversion themselves.
-
-Version 0.0.14 / 2018-1-23
-* Fixes
- * Updated 'xml_to_yaml_file' exe to clean up YAML more. No more array for Hash value. Indenting needs work though.
- Now it's more like something you can read and pass into Savon request.
-
-Version 0.0.13 / 2018-1-23
-* Enhancements
- * Executable to create xml file from yaml
-
-Version 0.0.12 / 2018/1-22
-* Enhancements
- * Example name added to log file
-
-Version 0.0.10 / 2018-1-21
-* Enhancements
- * Added [] method to perform xpath assertion
- * Using Savon xpath. No need to explicitly provide namespace for xpath
-
-Version 0.0.9 / 2018-1-20
-* Refactoring
- * class_options -> savon_options - More specific
- * default_operation -> operation - Not default anymore so better not in name
-* Enhancements
- * Made mandatory_xpath_values method to add to 'success scenarios' shared example
-
-Version 0.0.8 / 2018-1-19
-* Enhancements
- * Added root_attributes method to add attribute to the root class
-
-Version 0.0.7 / 2018-1-19
-* Enhancements
- * Added contain_key matcher
+Version 0.3.1
+* Bug fix
+ * Should create logs folder for hosting virtual server's error logs
+
+Version 0.3
+* Enhancement
+ * 'format' method on exchange to easily identify an exchange format
+ * 'call' method return itself for easier chaining of methods
+ * 'baseline' records raw response or hash
+ * Method to easily append to override parameters of exchange with '+'/add method
+
+Version 0.2.33
+* Enhancement
+ * Ability to pass an array to 'suburl' which will be joined via '/' for
+ building a request via loops
+ * Matcher to record a baseline response for a set of parameters and
+ ensure it matches it in the future
+
+Version 0.2.32
+* Enhancement
+ * Added a cucumber generic step for a subpath
+
+Version 0.2.31
+* Bug fix
+ * `soaspec generate` was always creating basic auth even when not specified
+
+Version 0.2.30
+* Enhancement
+ * New method `retry_on_exceptions` on `exchange_handler` where one can specify
+ exceptions to retry on for all exchanges using that Handler
+ * 'exception' method on handler that stores exception of last exchange
+
+Version 0.2.29
+* Enhancement
+ * SpecLogger - change:
+ * Programe name
+ * Date and time format
+ * Accessor internal logger object
+ * Removed unnecessarily severity as it's always INFO
+ * For REST calls log Response under 1 log with headers and body indented on new lines
+
+Version 0.2.28
+* Enhancement
+ * Ability to change OAuth2 retry limit as retrying too many times can cause a lock out
+
+Version 0.2.27
+* Enhancement
+ * Enable ability to perform action right after response is retrieved. This could be used to
+ specify condition to fail straight away for a particular response
+
+Version 0.2.26
+* Enhancement
+ * Method `successful_status_code?` to return whether status code is 200..299
+ * Ability to turn off OAuth request message
+
+Version 0.2.25
+* Enhancement
+ * Started running yard-doctest to check yard examples are correct
+ * Make it easy to inherit urls for subclasses of handlers through 'parent_url'
+ * `soaspec generate`
+ * Run on random port as it only makes sense it context of where it runs
+ * Add support for basic_auth
+ * `soaspec cucumber` create initial Gemfile and support/env if not present for getting started quickly
+* Bug Fix
+ * Fixed issue with turning off log part way through test suite not turning off RestClient's logs
+
+Version 0.2.24
+* Bug Fix
+ * Be explicit about where shared_examples_for is from (RSpec) as it can cause loading issues
+
+Version 0.2.23
+* Enhancement
+ * Interpreter handles XML Doc
+ * Get document_type_for complex element working. Hopefully should be able to handle WSDL with large response now
+
+Version 0.2.22
+* Bug Fix
+ * Allow negated version of 'be_successful' to work
+ * Fix `Exchange.retry_count` so that it retries after first try the correct number of times
+* Enhancement
+ * Make 'value_from_path' and 'values_from_path' methods accessible from 'response' object
+ * Get extracting text via RegEx actually working
+
+Version 0.2.21
+* Enhancement
+ * Enable deprecation warnings to be removed so that they're not annoying with `Soaspec.log_warnings`
+
+Version 0.2.20
+* Enhancement
+ * 'soaspec pry' command to open pry, loading test API classes
+
+Version 0.2.19
+* Enhancement
+ * Create 'soaspec generate' (without wsdl) as a way to create an ExchangeHandler from a Web Page
+
+Version 0.2.18
+* Enhancement
+ * Hash of body returned via 'to_hash' can be accessed through Symbol or String
+
+Version 0.2.17
+* Bug Fix
+ * Correct Output where does not show the conversion happening by JSONPath and PascalCase conversion
+
+Version 0.2.16
+* Enhancement
+ * Move debug oauth into OAuth2 class
+
+Version 0.2.14
+* Bug Fix
+ * Remove default log file being created before it is changed to a custom location
+
+Version 0.2.13
+* Enhancements
+ * Allow terminal logging color to be changed through a `terminal_color` attribute
+
+Version 0.2.12
+* Enhancements
+ * Make it easier to set 'traffic_file' location with `Soaspec::SpecLogger.traffic_file = ''`
+
+Version 0.2.11
+* Bug Fix
+ * Cache 'Soaspec::OAuth2.instance_url' so Access token server not called everytime it's needed
+
+Version 0.2.10
+* Enhancements
+ * Added 'soaspec/demo' to be required to simplify demoing
+* Bug Fix
+ * Logging wasn't handling Rest log properly
+
+Version 0.2.9
+* Enhancements
+ * More documentation in README.md
+ * Started breaking up massive RestHandler more
+ * Allow one output logs to STDOUT through Soaspec::SpecLogger.output_to_terminal = true
+
+Version 0.2.8
+* Bug Fix
+ * RSpec-its dependency produces a conflict. Remove specific version reference
+
+Version 0.2.7
+* Bug Fix
+ * Fix log issue that was failing in Windows
+
+Version 0.2.6
+* Enhancements
+ * New log file created with time stamp each time tests are run
+
+Version 0.2.5
+* Bug fix
+ * Error wasn't throw if checking for element with empty response
+ * Default hash set on Exchange without example overriding value not setting request body
+
+Version 0.2.4
+* Enhancements
+ * Enable block to be used when creating exchange with Handler.exchange
+
+Version 0.2.3
+* Enhancements
+ * Exchange.until itself method returns itself making it easier to reuse last result in assertions
+ * Added parameters to Exchange.until so that timeout, message and interval can be specified
+ * Soaspec cucumber exe to add generic steps to step_definitions folder
+
+Version 0.2.2
+* Enhancements
+ * Make accessing test_values from template using indifferent access
+
+Version 0.2.1
+* Enhancements
+ * Make method to access 'client_id' within a class after specifying 'oauth2_file' to remove unnecessarily loading file twice
+
+Version 0.2.0
+* Exception handling
+ * Raise meaningful exception if REST header value passed is null
+* Enhancements
+ * `soaspec add` exe to create basic 'rest' or 'soap' service
+ * Add another matcher to check response is successful
+ * Default hash and template_name can now be defined within a class rather than just at an instance of it
+ * Stubs making it clearer what parameters are when looking at code from RubyMine
+ * Basic auth file method on RestHandler for clearer defining of basic auth
+ * Handle ERB in 'base_url' method
+
+Version 0.1.18
+* Enhancements
+ * Define 'exchange' method on response object so original exchange can be accessed
+ * Make simply approach for setting body of request with just a string passed `ExchangeHandler.post(message_body)` where message_body is not
+ a `Hash` but a `String`
+
+Version 0.1.17
+* Enhancements
+ * Added Wait class to easily wait for an expected condition to be true, either using global Soaspec::Wait or `exchange.until { true }`
+ See spec/unit/wait_spec for example
+ * Made shorter way to `get` a REST url with `RestHandler.get 'id'` setting the suburl to 'id' automatically
+
+Version 0.1.16
+* Bug fix
+ * Retry was not working for OAuth access_token
+
+Version 0.1.15
+* Enhancements
+ * Added more unit test coverage and a few more comments
+
+Version 0.1.14
+* Enhancements
+ * Got `rest` soaspec new working
+
+Version 0.1.13
+* Enhancements
+ * Cleaned up comments (mainly OAuth2 related)
+ * Cleaned up REST handler code, adding more comments on usage
+ * Added 'soaspec/cucumber/generic_steps' to simplify reusing code and also demonstrate how gem can be used
+
+Version 0.1.12
+* Enhancements
+ * Add 'refresh_token' attribute to Soaspec::OAuth2 class so that token can be retrieved once and then stored
+
+Version 0.1.11
+* Enhancements
+ * OAuth2 class can be initialized with strings as keys
+ * Global attribute, 'Soaspec::OAuth2.token_url' for setting common value
+
+Version 0.1.10
+* Enhancements
+ * Rename default template folder from to 'template' to 'templates'
+ * Use TemplateReader to simplify and add error handling to extracting templates
+ * Got convenience Rest Methods able to handle taking in template_name
+ * Started making a 'request' method to access request of API actually sent
+
+Version 0.1.9
+* Enhancements
+ * Finally move `soaspec-virtual-server` into same binary as `soaspec` utilising Thor
+
+Version 0.1.8
+* Bug fix
+ * Could not see OAuth parameters sent in logs when setting oauth debugging to true
+
+Version 0.1.7
+* Enhancements
+ * Include access token header automatically if 'authorization' is not set. Turn off with `Soaspec.auto_oauth = false`
+
+Version 0.1.6
+* Enhancements
+ * Bind localhost to 0.0.0.0 so service is accessible outside localhost
+
+Version 0.1.5
+* Enhancements
+ * Package spec changes status after a post is made. Help to illustrate scenario where status changes
+ * Record last exchange made for debugging purposes in 'last_exchange'
+
+Version 0.1.4
+* Enhancements
+ * create_file method create folders automatically if necessary
+ * Package spec to help learn testing for items in a list
+ * Added docs for soaspec-virtual-server
+
+Version 0.1.3
+* Enhancements
+ * Ability to set template folder
+ * Json Path handle multiple paths separated by commas
+
+Version 0.1.1
+* Enhancements
+ * Added ability to turn off logs (helpful if making a lot of API calls)
+
+Version 0.1.0
+* Enhancements
+ * 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
+ * Put SOAP Basic Auth in Example
+ * Added template handling for REST handler
+
+Version 0.0.89
+* Enhancements
+ * Move more functionality out of soaspec exe and into WsdlGenerator. Started unit tests for it
+
+Version 0.0.88
+* Bug Fix
+ * Corrected '_format' variable name that was breaking failing to find rest element
+
+Version 0.0.87
+* Bug Fix
+ * Fixed incorrect logging for when 'debug_oauth' is off
+
+Version 0.0.86
+* Enhancements
+ * 'debug_oauth' attribute used to toggle showing params used in retrieving access token
+
+Version 0.0.85
+* Enhancements
+ * Interpret XML and JSON better so that JSON with XML in it's tags is catered for
+
+Version 0.0.84
+* Enhancements
+ * 'strip_namespaces' defined in exchange handlers not globally which makes more sense
+ * Created 'to_hash' method for Exchange that returns a Hash of XML or JSON response (primarily for REST)
+
+Version 0.0.83
+* Enhancements
+ * Handle BOM or other characters that could be at start of xml of json response string
+
+Version 0.0.82
+* Enhancements
+ * Fixed namespace handling for REST
+
+Version 0.0.81
+* Enhancements
+ * SoapHandler - define exchange method for each SOAP operation. See `one_off_spec` for example
+
+Version 0.0.80
+* Enhancements
+ * `values_from_path` method on `RestHandler` to easily extract multiple values for an xpath or json path
+* Bug fix
+ * Support response that has white space surrounding message
+
+Version 0.0.79
+* Enhancements
+ * `values_from_path` method on `SoapHandler` to easily extract multiple values for an xpath
+ * If `id` is specified on associated factory, FactoryBot will populate the primary factory with that id. See `rest/factory_spec` for eg
+
+Version 0.0.78
+* Enhancements
+ * Use 'thor' for `soaspec generate`, allowing less prompt and more options through command line. Added tests for it
+
+Version 0.0.77
+* Enhancements
+ * Use 'thor' for soaspec-init binary changing it to be `soaspec init`. Will update `soaspec-generate` in next version
+ * Put pause of 1/2 a second for each API retry. Often retry is too quick otherwise
+
+Version 0.0.76
+* Bug fix
+ * Fixed BLZService scenario on soaspec-virtual-server
+ * Fixed return value for retry_for_success failure
+* Enhancements
+ * Added method to indicate a factory create should actually return a failure status
+
+Version 0.0.75
+* Enhancements
+ * For Factory created methods, set retry_for_success to true. Allow for this to be set at Exchange class level
+
+Version 0.0.74
+* Enhancements
+ * RestHandler, enable api username to be set upon initialisation
+
+Version 0.0.73
+* Enhancements
+ * Added 'default_handler' method with which define an exchange_handler to be created when an exchange is initialized
+* Refactoring
+ * Use `@exchange_handler` instead of `@api_class` which is more consistent
+
+Version 0.0.72
+* Enhancements
+ * Add ability to convert XML response to lower case for simpler xpath searching
+
+Version 0.0.71
+* Bug fix
+ * Got exe 'soaspec-virtual-server' working
+
+Version 0.0.70
+* Enhancements
+ * Added api_username method to REST handler to change user for an API during runtime
+
+Version 0.0.69
+* Enhancements
+ * Calculate base_url ERB at time of handler's first request (Rather than when initialised).
+ - Important for where base url uses ERB and so does oauth whose user may change
+ * Demonstrate using oauth via spec
+ * Demonstrate using basic auth via spec
+
+Version 0.0.68
+* Enhancements
+ * Use ERB to calculate base_url for dynamic bases
+
+Version 0.0.67
+* Enhancements
+ * Handle scenario where Request key is unconventional and not PascalCase key snakecase convert would break it
+ - if first character of key is captial, PascalCase conversion is ignored
+
+Version 0.0.66
+* Enhancements
+ * Added method to convert REST request keys to 'PascalCase' if 'pascal_keys' is set to true
+ * This also converts paths obtaining elements to 'PascalCase' if they're simple and have no starting '//' or '$..'
+
+Version 0.0.65
+* Enhancements
+ * Added ability to set 'suburl' and 'method' in Exchange accessor. Will be used in FactoryBot later
+
+Version 0.0.64
+* Enhancements
+ * Got FactoryBot working for RestHandler. See specs for example
+ * Add element? method to exchange to make it easier to check element is at path
+ * Define 'element_name?' created when element is defined on ExchangeHandler
+
+Version 0.0.63
+* Enhancements
+ * Interpret ERB for oauth credentials within oauth response. Needed for when params like 'username' can change in runtime
+
+Version 0.0.62
+* Enhancements
+ * Use q parameter to simply to query parameters on REST requests
+
+Version 0.0.61
+* Enhancements
+ * Retrieving oauth response try 3 times (to bypass intermittent errors)
+
+Version 0.0.60
+* Enhancements
+ * Allow for factory_bot with automatic setting of missing setter methods
+
+Version 0.0.59
+* Enhancements
+ * Perform ERB in headers to make using access_token using 'headers' possible
+ * Try better way of testing `soaspec-init`.
+
+Version 0.0.58
+* Enhancements
+ * Add method to set parts of the request body through `exchange[key]= 'value'`
+ * Added example of Cucumber feature demonstrating this
+
+Version 0.0.56
+* Bug fix
+ * Handle creating of traffic.log file within lib properly
+
+Version 0.0.55
+* Enhancements
+ * Made `soaspec-virtual-server` exe to handle self served test server. Will be used in wiki tutorial
+
+Version 0.0.54
+* Enhancements
+ * Make 'headers' accessor for setting headers on RestHandler easier
+
+Version 0.0.53
+* Enhancements
+ * Make attribute possible for REST methods as well (as they can use XML too)
+ * For non XML, non JSON responses, handle with regex or key for a Hash
+
+Version 0.0.52
+* Enhancements
+ * Now have 'attribute' accessor making it easy to access an attribute from a response
+
+Version 0.0.51
+* Enhancements
+ * Allow for 'default_hash=' method to be used in RestHandler. See 'many_calls_one_method_spec' for example
+ * Got 'element' accessor working correctly (See soap/hash_spec.rb + 'blz_service' for example)
+
+Version 0.0.50
+* Enhancements
+ * Able to use ERB in oauth parameters and extract oauth hash with 'oauth_response' method defined by 'oauth_file'
+
+Version 0.0.47
+* Bug Fix
+ * Using 'Strip namespace' handle both namespace or not dependent if used
+
+Version 0.0.47
+* Enhancements
+ * 'success scenarios' shared eg and 'retry_for_success' exchange method's status codes include 200..299, not just 200.
+
+Version 0.0.46
+* Enhancements
+ * '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
+
+Version 0.0.45
+* Enhancements
+ * No need to use 'name' when creating SoapHandler and RestHandler. Default is ClassName
+
+Version 0.0.44
+* Enhancements
+ * Test Server log to logs/test_server.log
+ * Simplify ExchangeHandler storing and retrieving values (see soap/hash_spec.rb)
+ * Make setting SoapHandler operation and other params possible through object instantiation. Less code needed
+
+Version 0.0.43
+* Bug fix
+ * Remove Environment namespace from 'soaspec-generate'
+* Enhancements
+ * 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
+
+Version 0.0.42
+* Enhancements
+ * Set Soaspec.api_handler work class is created. No need to call '.to_s' method
+
+Version 0.0.41
+* Bug fix
+ * soaspec-generate not designed to work with virtual service. Rakefile not try to set that up
+
+Version 0.0.40
+* Enhancements
+ * soaspec-generate now handle a wsdl without parameters in the operation and rather look up input element type
+ * test_server virtual service now handle scenario where bank is not found and test made for that
+
+Version 0.0.39
+* Spec
+ * Create task to use soaspec-init to create test structure and test it.
+* Enhancements
+ * Take away need to use Environment namespace
+ * Added response headers to REST response log
+ * Now using virtual Web Service for SOAP
+
+Version 0.0.38
+* Bug fix
+ * Fixed error in soaspec-generate. TODO: Test this in CI
+
+Version 0.0.37 / 2018-3-16
+* Enhancements
+ * Made retry_for_success method to keep making request until 200 status code if set on exchange
+ * If '$' not included for json_path, by default a '$..' is added for convenience
+
+Version 0.0.36 / 2018-3-15
+* Bug fix
+ * Make test name log in correct place
+* Enhancements
+ * Made accessor 'mandatory_json_values' to make it easier to share mandatory json path - value pairs
+ * Created 'store' method for handler through which one can store a value and use it later on it in the same context
+* Deprecated
+ * Removed old 'mandatory_elements', 'mandatory_xpath_values' overridden way of handling data for favor of new way of it setting 'expected_mandatory_elements'
+
+Version 0.0.35 / 2018-3-13
+* Enhancements
+ * Handle array of JSON hashes starting with '['
+ * Handle patch and put methods with data for REST
+
+Version 0.0.34 / 2018-3-12
+* Enhancements
+ * Add oauth2 and oauth2_file methods to make it easy to load oauth2 parameters. Still a work in progress to handle all oauth2 variations
+
+Version 0.0.33 / 2018-3-9
+* Enhancements
+ * Use 'jsonpath' instead of dig to check JSON responses. Much better for finding complex paths
+
+Version 0.0.32 / 2018-3-9
+* Enhancements
+ * Made :body key in hash that can be used to use JSON.generate for a payload when using rest_handler exchanges
+
+Version 0.0.31 / 2018-3-8
+* Enhancements
+ * Compacted unit tests for exchange handler
+ * Implemented include_key? and find via xpath for REST handler. See specs
+
+Version 0.0.30 / 2018-3-6
+* Bug fix
+ * Made generated class file name in soaspec-generate snakecase (was CamelCase)
+
+Version 0.0.29 / 2018-3-6
+* Refactorings
+ * Base 'test' class from 'Tester' to 'ExhangeHandler'
+ * Made default Soap Handler class 'SoapHandler' and making use of 'BasicSoapHandler' deprecated
+
+Version 0.0.28 / 2018-3-6
+* Enhancements
+ * Added not_found matcher and used in spec example
+ * Only call request upon first need of an Exchange response. This means test request is made as part of 'it' rather than in describe
+
+Version 0.0.27 / 2018-3-5
+* Bug fix
+ * Fixed log file not present error
+ * Updated exe binaries to use latest format
+
+Version 0.0.26 / 2018-3-5
+* Refactorings
+ * Using methods to define mandatory_elements, mandatory_xpath_values, root_attributes, base_url. Please see specs. This is shorter to type and clearer
+
+Version 0.0.25 / 2018-2-25
+* Enhancements
+ * Updated rest_handler to convert JSON and XML into Hash and use it in 'contain_value'. This still needs work.
+ * Showed example of workflow using 'pet' url
+
+Version 0.0.24 / 2018-2-25
+* Enhancements
+ * Added to soaspec-generate more types when creating YAML with data (int, boolean, double and custom enumeration).
+ * Binaries use common module (exe-helper) to reduce repeatability
+* TODO: soaspec-generate read xsd's mentioned to import in WSDL schema
+
+Version 0.0.23 / 2018-2-23
+* Enhancements
+ * Created RestHandler class (Very messy and ugly still) to handle REST requests using style used for SOAP using Rest Client resource
+
+Version 0.0.22 / 2018-2-15
+* Enhancements
+ * Created new 'include_in_body' matcher to find value anywhere in response body (which could be a substring of an element)
+
+Version 0.0.21 / 2018-1-29
+* Enhancements
+ * Added soaspec-generate - still in POC mode to generate files from a WSDL.
+ * Added test_wsdl to start at validating xml according to WSDL. Still needs polishing
+
+Version 0.0.20 / 2018-1-26
+* Enhancements
+ * Added ability to strip namespaces 'Soaspec::Environment.strip_namespaces = true'. See spec for example
+* Fixes
+ * Made custom error and used it to make 'have_element_at_xpath' work when negated
+
+Version 0.0.19 / 2018-1-25
+* Enhancements
+ * Added own shared examples to init script and to in built specs
+
+Version 0.0.18 / 2018-1-25
+* Fixes
+ * Updated 'soaspec-init' so that it works again.
+* Enhancements
+ * Added example showing representing data for request in YAML
+
+Version 0.0.17 / 2018-1-25
+* Fixes
+ * Updated hash search so that it handles Array
+
+Version 0.0.16 / 2018-1-23
+* Fixes
+ * Corrected logic of auto convert to hash. Previous version did not handle test specific values correctly
+
+Version 0.0.15 / 2018-1-23
+* Fixes
+ * Updated code to convert string key in Savon request to key automatically by default before passing to Savon. This saves
+ the user doing the conversion themselves.
+
+Version 0.0.14 / 2018-1-23
+* Fixes
+ * Updated 'xml_to_yaml_file' exe to clean up YAML more. No more array for Hash value. Indenting needs work though.
+ Now it's more like something you can read and pass into Savon request.
+
+Version 0.0.13 / 2018-1-23
+* Enhancements
+ * Executable to create xml file from yaml
+
+Version 0.0.12 / 2018/1-22
+* Enhancements
+ * Example name added to log file
+
+Version 0.0.10 / 2018-1-21
+* Enhancements
+ * Added [] method to perform xpath assertion
+ * Using Savon xpath. No need to explicitly provide namespace for xpath
+
+Version 0.0.9 / 2018-1-20
+* Refactoring
+ * class_options -> savon_options - More specific
+ * default_operation -> operation - Not default anymore so better not in name
+* Enhancements
+ * Made mandatory_xpath_values method to add to 'success scenarios' shared example
+
+Version 0.0.8 / 2018-1-19
+* Enhancements
+ * Added root_attributes method to add attribute to the root class
+
+Version 0.0.7 / 2018-1-19
+* Enhancements
+ * Added contain_key matcher
* mandatory_elements method created for SoapHandler - can be used to add tests to success scenarios (see example get_weather_web_service class for details)
\ No newline at end of file