# Soaspec This gem helps to represent multiple API tests against a backend briefly, concisely and clearly. It is essentially a wrapper around the Savon and RestClient gems. Note it is still in early stages of development. ## Installation Add this line to your application's Gemfile: ```ruby gem 'soaspec' ``` And then execute: $ bundle Or install it yourself as: $ gem install soaspec ## Todo * Give examples and convenience methods for building classes for each SOAP or REST operation * Handle REST template (similar way to REST) * Potentially have in built use of 'vcr' and 'http_stub' gems * Handle proxies to record traffic for MiddleWare testing * Much more ## Getting Started To create a new test suite using this you can use the 'soaspec-init' binary. Example: ``` mkdir 'api_test' cd 'api_test' soaspec-init bundle install ``` Then you can run the tests with: ``` rake spec ``` You can also use `soaspec-generate` to generate a set of tests from a WSDL. This is still in trial period ## Usage * SOAP - this uses Savon behind the scenes. Some defaults are overridden. Please see 'soap_handler.rb'-'default_options' method for such defaults. When describing an API override this in 'savon_options' method * REST - this uses the resource class from the Rest-Client gem behind the scenes. See specs for example of usage. This will be added to later. ### Recommended It is recommended that a class be created representing a Web Service Operation or REST call. Then tests refer back to that class. See 'weather_web_service.rb' class in spec/soaspec/soap folder for example. If you find having a large backtrace on errors or RSpec shared examples such as 'success scenarios' this can shorten the backtrace. RSpec.configure do |config| config.backtrace_exclusion_patterns = [ /rspec/ ] end ## Development After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org). ## Contributing Bug reports and pull requests are welcome on GitLab at https://gitlab.com/samuel-garratt/soaspec. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. ## License The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). ## Code of Conduct Everyone interacting in the Soaspec project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://gitlab.com/samuel-garratt/soaspec/blob/master/CODE_OF_CONDUCT.md).