Sha256: 8ee56acff8a593b0c885aea9baad8002f75ba11d21ca2f15d4a905b7c7e34ce8
Contents?: true
Size: 1.85 KB
Versions: 2
Compression:
Stored size: 1.85 KB
Contents
# -*- encoding : utf-8 -*- describe Pacto do let(:contract_path) { contract_file 'simple_contract' } let(:strict_contract_path) { contract_file 'strict_contract' } before :all do WebMock.allow_net_connect! end context 'Contract investigation' do xit 'verifies the contract against a producer' do # FIXME: Does this really test what it says it does?? contract = described_class.load_contracts(contract_path, 'http://localhost:8000') expect(contract.simulate_consumers.map(&:successful?).uniq).to eq([true]) end end context 'Stubbing a collection of contracts' do it 'generates a server that stubs the contract for consumers' do contracts = described_class.load_contracts(contract_path, 'http://dummyprovider.com') contracts.stub_providers response = get_json('http://dummyprovider.com/api/hello') expect(response['message']).to eq 'bar' end end context 'Journey' do it 'stubs multiple services with a single use' do described_class.configure do |c| c.strict_matchers = false c.register_hook Pacto::Hooks::ERBHook.new end contracts = described_class.load_contracts contracts_folder, 'http://dummyprovider.com' contracts.stub_providers(device_id: 42) login_response = get_json('http://dummyprovider.com/api/hello') expect(login_response.keys).to eq ['message'] expect(login_response['message']).to be_kind_of(String) devices_response = get_json('http://dummyprovider.com/strict') expect(devices_response['devices'].size).to eq(2) expect(devices_response['devices'][0]).to eq('/dev/42') expect(devices_response['devices'][1]).to eq('/dev/43') end end def get_json(url) response = Faraday.get(url) do |req| req.headers = { 'Accept' => 'application/json' } end MultiJson.load(response.body) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
pacto-0.4.0.rc3 | spec/integration/e2e_spec.rb |
pacto-0.4.0.rc2 | spec/integration/e2e_spec.rb |