ChangeLog in soaspec-0.2.32 vs ChangeLog in soaspec-0.2.33

- old
+ new

@@ -1,626 +1,633 @@ -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.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