Skip to content

manheim/stir

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

STiR

Service Testing in Ruby

STiR is an opinionated framework for testing web services. Using the same concepts as a page-object framework, STiR aims to be fairly agnostic to the type of service being tested. It uses HTTParty under the covers for REST services and Savon for SOAP services.

Installing STiR

Install the gem manually:

$ gem install stir

Or add it to your Gemfile:

gem 'stir'

You can require STiR for testing only REST services, only SOAP services, or both!:

require 'stir/rest' # only requires rest components require 'stir/soap' # only requires soap components require 'stir/all' # requires both soap and rest components

Getting Started

Directory Structure

STiR has certain conventions. One such convention is the directory structure. You can place your STiR directory anywhere within your project but the STiR directory must contain the following subdirectories:

stir (this can be named anything and located anywhere) --clients --config 

The main concept behind STiR is to create a central place to define service objects (endpoints for rest, operations for soap), similar to how a page-object framework centralizes where web elements are defined. As you might have guessed, client definitions go in the clients directory and config information goes in the config directory.

STiR Configuration

To tell STiR where to find your clients and configs you must configure STiR. Path, Environment, and Version are all required fields.

Stir.configure do |config| config.path = '/path/to/your/parent/stir/directory' config.environment = 'dev' # must match desired value from yaml config.version = 'v1' # must match desired value from yaml end

Usage

Define a REST configuration

# ~/project_dir/stir/config/sample.yml v1: dev: base_uri: http://localhost:3000

Define a REST client

# ~/project_dir/stir/client/sample.rb class Sample < Stir::RestClient get(:post_by_id) { '/posts/%{id}' } #defining the endpoint response(:post_name) { response['postName'] } #defining item from response object end

STiR will automatically find the correct config file for your client. For every client, STiR will look for a config file with the same name as the class name of the client. In the example above, STiR will look for a config file named sample.yml inside the config directory

Using STiR in REST Tests

describe 'Posts' do let(:sample) { Sample.new } describe 'get post by id' do it 'should return the correct post' do sample.post_by_id(id: 15) expect(sample.post_name).to eql 'Sample Post Name' end end end

Define a SOAP configuration

--- # ~/project_dir/stir/config/soap_sample.yml v1: #version qa: #environment wsdl: 'http://localhost:9393?wsdl' dev: #environment wsdl: 'http://localhost:9394?wsdl'

Define a SOAP client

class SoapSample < Stir::SoapClient operation(:old_name, :new_name) #alias an operation name only works is you provide wsdl operation(:user_id_by_name) #only required if you dont provide a wsdl response(:id) { response['id'] } #defining item from response object end

Using STiR in SOAP Tests

describe 'Users' do let(:sample) { SoapSample.new } describe 'get user id by name' do it 'should return the correct id' do sample.user_id_by_name( message: { "user_name" => "test_user" } ) expect(sample.id).to eql '259' end end end

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •