spec/lib/soap_object_spec.rb in soap-object-0.6.4 vs spec/lib/soap_object_spec.rb in soap-object-0.6.5

- old
+ new

@@ -1,145 +1,150 @@ -require 'spec_helper' - -class TestSoapObjectWithProperties - include SoapObject - - wsdl 'http://blah.com' - proxy 'http://proxy.com:8080' - open_timeout 10 - read_timeout 20 - soap_header 'Token' => 'secret' - encoding 'UTF-16' - basic_auth 'steve', 'secret' - digest_auth 'digest', 'auth' - log_level :error -end - -class WithoutClientProperties - include SoapObject -end - -describe SoapObject do - let(:client) { double('client') } - let(:subject) { TestSoapObjectWithProperties.new } - - context 'when creating new instances' do - before do - allow(Savon).to receive(:client).and_return(client) - end - - it 'should initialize the client using the wsdl' do - expect(subject.send(:client_properties)[:wsdl]).to eq('http://blah.com') - end - - it 'should know when it is connected to service' do - expect(subject).to be_connected - end - - it 'should allow one to setup a proxy' do - expect(subject.send(:client_properties)[:proxy]).to eq('http://proxy.com:8080') - end - - it 'should allow one to set an open timeout' do - expect(subject.send(:client_properties)[:open_timeout]).to eq(10) - end - - it 'should allow one to set a read timeout' do - expect(subject.send(:client_properties)[:read_timeout]).to eq(20) - end - - it 'should allow one to set a soap header' do - expect(subject.send(:client_properties)[:soap_header]).to eq({'Token' => 'secret'}) - end - - it 'should allow one to set the encoding' do - expect(subject.send(:client_properties)[:encoding]).to eq('UTF-16') - end - - it 'should allow one to use basic authentication' do - expect(subject.send(:client_properties)[:basic_auth]).to eq(['steve', 'secret']) - end - - it 'should allow one to use digest authentication' do - expect(subject.send(:client_properties)[:digest_auth]).to eq(['digest', 'auth']) - end - - it 'should disable logging when no logging level set' do - expect(WithoutClientProperties.new.send(:client_properties)[:log]).to eq(false) - end - - it 'should enable logging when logging level set' do - expect(subject.send(:client_properties)[:log]).to eq(true) - end - - it 'should allow one to set the log level' do - expect(subject.send(:client_properties)[:log_level]).to eq(:error) - end - - it 'should use pretty format for xml when logging' do - expect(subject.send(:client_properties)[:pretty_print_xml]).to eq(true) - end - - it 'should disable SSL verification by default' do - expect(WithoutClientProperties.new.send(:client_properties)[:ssl_verify_mode]).to eq(:none) - end - - it 'should set SSL version to 3 by default' do - expect(WithoutClientProperties.new.send(:client_properties)[:ssl_version]).to eq(:SSLv3) - end - - context 'with ssl_verification' do - - class WithSslVerification - include SoapObject - ssl_verification true - end - - class WithoutSslVerification - include SoapObject - ssl_verification false - end - - it 'should allow one to explicitly disable SSL verification' do - expect(WithoutSslVerification.new.send(:client_properties)[:ssl_verify_mode]).to eq(:none) - end - - it 'should allow one to enable SSL verification' do - expect(WithSslVerification.new.send(:client_properties)[:ssl_verify_mode]).to be_nil - end - end - - context 'with ssl version' do - class WithSslVersion - include SoapObject - ssl_version :SSLv2 - - end - - it 'should allow one to set SSL version' do - expect(WithSslVersion.new.send(:client_properties)[:ssl_version]).to eq(:SSLv2) - end - end - - end - - - context 'when calling methods on the service' do - let(:response) { double('response') } - - before do - expect(Savon).to receive(:client).and_return(client) - expect(response).to receive(:to_xml) - end - - it 'should make a valid request' do - expect(client).to receive(:call).with(:fake_call, message: {data_key: 'some_value'}).and_return(response) - subject.fake_call data_key: 'some_value' - end - - it 'should make a valid request with custom xml' do - expected_xml = '<xml><envelope/><data></data></envelope></xml>' - expect(client).to receive(:call).with(anything, xml: expected_xml).and_return(response) - subject.fake_call expected_xml - end - end -end +require 'spec_helper' + +class TestSoapObjectWithProperties + include SoapObject + + wsdl 'http://blah.com' + proxy 'http://proxy.com:8080' + open_timeout 10 + read_timeout 20 + soap_header 'Token' => 'secret' + encoding 'UTF-16' + basic_auth 'steve', 'secret' + digest_auth 'digest', 'auth' + log_level :error + soap_version 2 +end + +class WithoutClientProperties + include SoapObject +end + +describe SoapObject do + let(:client) { double('client') } + let(:subject) { TestSoapObjectWithProperties.new } + + context 'when creating new instances' do + before do + allow(Savon).to receive(:client).and_return(client) + end + + it 'should initialize the client using the wsdl' do + expect(subject.send(:client_properties)[:wsdl]).to eq('http://blah.com') + end + + it 'should know when it is connected to service' do + expect(subject).to be_connected + end + + it 'should allow one to setup a proxy' do + expect(subject.send(:client_properties)[:proxy]).to eq('http://proxy.com:8080') + end + + it 'should allow one to set an open timeout' do + expect(subject.send(:client_properties)[:open_timeout]).to eq(10) + end + + it 'should allow one to set a read timeout' do + expect(subject.send(:client_properties)[:read_timeout]).to eq(20) + end + + it 'should allow one to set a soap header' do + expect(subject.send(:client_properties)[:soap_header]).to eq({'Token' => 'secret'}) + end + + it 'should allow one to set the encoding' do + expect(subject.send(:client_properties)[:encoding]).to eq('UTF-16') + end + + it 'should allow one to use basic authentication' do + expect(subject.send(:client_properties)[:basic_auth]).to eq(['steve', 'secret']) + end + + it 'should allow one to use digest authentication' do + expect(subject.send(:client_properties)[:digest_auth]).to eq(['digest', 'auth']) + end + + it 'should disable logging when no logging level set' do + expect(WithoutClientProperties.new.send(:client_properties)[:log]).to eq(false) + end + + it 'should enable logging when logging level set' do + expect(subject.send(:client_properties)[:log]).to eq(true) + end + + it 'should allow one to set the log level' do + expect(subject.send(:client_properties)[:log_level]).to eq(:error) + end + + it 'should use pretty format for xml when logging' do + expect(subject.send(:client_properties)[:pretty_print_xml]).to eq(true) + end + + it 'should allow one to set the soap version' do + expect(subject.send(:client_properties)[:soap_version]).to eq(2) + end + + it 'should disable SSL verification by default' do + expect(WithoutClientProperties.new.send(:client_properties)[:ssl_verify_mode]).to eq(:none) + end + + it 'should set SSL version to 3 by default' do + expect(WithoutClientProperties.new.send(:client_properties)[:ssl_version]).to eq(:SSLv3) + end + + context 'with ssl_verification' do + + class WithSslVerification + include SoapObject + ssl_verification true + end + + class WithoutSslVerification + include SoapObject + ssl_verification false + end + + it 'should allow one to explicitly disable SSL verification' do + expect(WithoutSslVerification.new.send(:client_properties)[:ssl_verify_mode]).to eq(:none) + end + + it 'should allow one to enable SSL verification' do + expect(WithSslVerification.new.send(:client_properties)[:ssl_verify_mode]).to be_nil + end + end + + context 'with ssl version' do + class WithSslVersion + include SoapObject + ssl_version :SSLv2 + + end + + it 'should allow one to set SSL version' do + expect(WithSslVersion.new.send(:client_properties)[:ssl_version]).to eq(:SSLv2) + end + end + + end + + + context 'when calling methods on the service' do + let(:response) { double('response') } + + before do + expect(Savon).to receive(:client).and_return(client) + expect(response).to receive(:to_xml) + end + + it 'should make a valid request' do + expect(client).to receive(:call).with(:fake_call, message: {data_key: 'some_value'}).and_return(response) + subject.fake_call data_key: 'some_value' + end + + it 'should make a valid request with custom xml' do + expected_xml = '<xml><envelope/><data></data></envelope></xml>' + expect(client).to receive(:call).with(anything, xml: expected_xml).and_return(response) + subject.fake_call expected_xml + end + end +end