Version 0.3.2 * Enhancement * Handle 'html' format 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)