spec/soap_spec.rb in sfmc-fuelsdk-ruby-1.1.0 vs spec/soap_spec.rb in sfmc-fuelsdk-ruby-1.2.0

- old
+ new

@@ -1,140 +1,140 @@ -require 'spec_helper' - -describe MarketingCloudSDK::Soap do - - let(:client) { MarketingCloudSDK::Client.new } - - subject { client } - - it { should respond_to(:soap_get) } - it { should respond_to(:soap_post) } - it { should respond_to(:soap_patch) } - it { should respond_to(:soap_delete) } - it { should respond_to(:soap_describe) } - - it { should respond_to(:header) } - it { should_not respond_to(:header=) } - - it { should respond_to(:wsdl) } - it { should respond_to(:wsdl=) } - - it { should respond_to(:endpoint) } - it { should_not respond_to(:endpoint=) } - - it { should respond_to(:soap_client) } - - it { should respond_to(:package_name) } - it { should respond_to(:package_name=) } - - it { should respond_to(:package_folders) } - it { should respond_to(:package_folders=) } - - its(:debug) { should be false } - its(:wsdl) { should eq 'https://webservice.exacttarget.com/etframework.wsdl' } - - describe '#header' do - it 'raises an exception when internal_token is missing' do - expect { client.header }.to raise_exception 'Require legacy token for soap header' - end - - it 'returns header hash' do - client.internal_token = 'innerspace' - expect(client.header).to eq( - { - 'oAuth' => { 'oAuthToken' => 'innerspace' }, - :attributes! => { - 'oAuth' => { 'xmlns' => 'http://exacttarget.com' } - } - } - ) - end - end - - describe 'requests' do - subject { - client.stub(:soap_request) do |action, message| - [action, message] - end - client - } - - it '#soap_describe calls client with :describe and DescribeRequests message' do - expect(subject.soap_describe 'Subscriber').to eq([:describe, - {'DescribeRequests' => {'ObjectDefinitionRequest' => {'ObjectType' => 'Subscriber' }}}]) - end - - describe '#soap_post' do - subject { - client.stub(:soap_request) do |action, message| - [action, message] - end - - client.stub_chain(:soap_describe,:editable) - .and_return(['First Name', 'Last Name', 'Gender']) - client - } - it 'formats soap :create message for single object' do - expect(subject.soap_post 'Subscriber', 'EmailAddress' => 'test@fuelsdk.com' ).to eq([:create, - { - 'Objects' => {'EmailAddress' => 'test@fuelsdk.com'}, - :attributes! => {'Objects' => {'xsi:type' => ('tns:Subscriber')}} - }]) - end - - it 'formats soap :create message for multiple objects' do - expect(subject.soap_post 'Subscriber', [{'EmailAddress' => 'first@fuelsdk.com'}, {'EmailAddress' => 'second@fuelsdk.com'}] ).to eq([:create, - { - 'Objects' => [{'EmailAddress' => 'first@fuelsdk.com'}, {'EmailAddress' => 'second@fuelsdk.com'}], - :attributes! => {'Objects' => {'xsi:type' => ('tns:Subscriber')}} - }]) - end - - it 'formats soap :create message for single object with an attribute' do - expect(subject.soap_post 'Subscriber', {'EmailAddress' => 'test@fuelsdk.com', 'Attributes'=> [{'Name'=>'First Name', 'Value'=>'first'}]}).to eq([:create, - { - 'Objects' => { - 'EmailAddress' => 'test@fuelsdk.com', - 'Attributes' => [{'Name' => 'First Name', 'Value' => 'first'}], - }, - :attributes! => {'Objects' => {'xsi:type' => ('tns:Subscriber')}} - }]) - end - - it 'formats soap :create message for single object with multiple attributes' do - expect(subject.soap_post 'Subscriber', {'EmailAddress' => 'test@fuelsdk.com', - 'Attributes'=> [{'Name'=>'First Name', 'Value'=>'first'}, {'Name'=>'Last Name', 'Value'=>'subscriber'}]}).to eq([:create, - { - 'Objects' => { - 'EmailAddress' => 'test@fuelsdk.com', - 'Attributes' => [ - {'Name' => 'First Name', 'Value' => 'first'}, - {'Name' => 'Last Name', 'Value' => 'subscriber'}, - ], - }, - :attributes! => {'Objects' => {'xsi:type' => ('tns:Subscriber')}} - }]) - end - - it 'formats soap :create message for multiple objects with multiple attributes' do - expect(subject.soap_post 'Subscriber', [{'EmailAddress' => 'first@fuelsdk.com', 'Attributes'=> [{'Name'=>'First Name', 'Value'=>'first'}, {'Name'=>'Last Name', 'Value'=>'subscriber'}]}, - {'EmailAddress' => 'second@fuelsdk.com', 'Attributes'=> [{'Name'=>'First Name', 'Value'=>'second'}, {'Name'=>'Last Name', 'Value'=>'subscriber'}]}]).to eq([:create, - { - 'Objects' => [ - {'EmailAddress' => 'first@fuelsdk.com', - 'Attributes' => [ - {'Name' => 'First Name', 'Value' => 'first'}, - {'Name' => 'Last Name', 'Value' => 'subscriber'}, - ] - }, - {'EmailAddress' => 'second@fuelsdk.com', - 'Attributes' => [ - {'Name' => 'First Name', 'Value' => 'second'}, - {'Name' => 'Last Name', 'Value' => 'subscriber'}, - ] - }], - :attributes! => {'Objects' => {'xsi:type' => ('tns:Subscriber')}} - }]) - end - end - end -end +require 'spec_helper' + +describe MarketingCloudSDK::Soap do + + let(:client) { MarketingCloudSDK::Client.new } + + subject { client } + + it { should respond_to(:soap_get) } + it { should respond_to(:soap_post) } + it { should respond_to(:soap_patch) } + it { should respond_to(:soap_delete) } + it { should respond_to(:soap_describe) } + + it { should respond_to(:header) } + it { should_not respond_to(:header=) } + + it { should respond_to(:wsdl) } + it { should respond_to(:wsdl=) } + + it { should respond_to(:endpoint) } + it { should_not respond_to(:endpoint=) } + + it { should respond_to(:soap_client) } + + it { should respond_to(:package_name) } + it { should respond_to(:package_name=) } + + it { should respond_to(:package_folders) } + it { should respond_to(:package_folders=) } + + its(:debug) { should be false } + its(:wsdl) { should eq 'https://webservice.exacttarget.com/etframework.wsdl' } + + describe '#header' do + it 'raises an exception when internal_token is missing' do + expect { client.header }.to raise_exception 'Require legacy token for soap header' + end + + it 'returns header hash' do + client.internal_token = 'innerspace' + expect(client.header).to eq( + { + 'oAuth' => { 'oAuthToken' => 'innerspace' }, + :attributes! => { + 'oAuth' => { 'xmlns' => 'http://exacttarget.com' } + } + } + ) + end + end + + describe 'requests' do + subject { + client.stub(:soap_request) do |action, message| + [action, message] + end + client + } + + it '#soap_describe calls client with :describe and DescribeRequests message' do + expect(subject.soap_describe 'Subscriber').to eq([:describe, + {'DescribeRequests' => {'ObjectDefinitionRequest' => {'ObjectType' => 'Subscriber' }}}]) + end + + describe '#soap_post' do + subject { + client.stub(:soap_request) do |action, message| + [action, message] + end + + client.stub_chain(:soap_describe,:editable) + .and_return(['First Name', 'Last Name', 'Gender']) + client + } + it 'formats soap :create message for single object' do + expect(subject.soap_post 'Subscriber', 'EmailAddress' => 'test@fuelsdk.com' ).to eq([:create, + { + 'Objects' => {'EmailAddress' => 'test@fuelsdk.com'}, + :attributes! => {'Objects' => {'xsi:type' => ('tns:Subscriber')}} + }]) + end + + it 'formats soap :create message for multiple objects' do + expect(subject.soap_post 'Subscriber', [{'EmailAddress' => 'first@fuelsdk.com'}, {'EmailAddress' => 'second@fuelsdk.com'}] ).to eq([:create, + { + 'Objects' => [{'EmailAddress' => 'first@fuelsdk.com'}, {'EmailAddress' => 'second@fuelsdk.com'}], + :attributes! => {'Objects' => {'xsi:type' => ('tns:Subscriber')}} + }]) + end + + it 'formats soap :create message for single object with an attribute' do + expect(subject.soap_post 'Subscriber', {'EmailAddress' => 'test@fuelsdk.com', 'Attributes'=> [{'Name'=>'First Name', 'Value'=>'first'}]}).to eq([:create, + { + 'Objects' => { + 'EmailAddress' => 'test@fuelsdk.com', + 'Attributes' => [{'Name' => 'First Name', 'Value' => 'first'}], + }, + :attributes! => {'Objects' => {'xsi:type' => ('tns:Subscriber')}} + }]) + end + + it 'formats soap :create message for single object with multiple attributes' do + expect(subject.soap_post 'Subscriber', {'EmailAddress' => 'test@fuelsdk.com', + 'Attributes'=> [{'Name'=>'First Name', 'Value'=>'first'}, {'Name'=>'Last Name', 'Value'=>'subscriber'}]}).to eq([:create, + { + 'Objects' => { + 'EmailAddress' => 'test@fuelsdk.com', + 'Attributes' => [ + {'Name' => 'First Name', 'Value' => 'first'}, + {'Name' => 'Last Name', 'Value' => 'subscriber'}, + ], + }, + :attributes! => {'Objects' => {'xsi:type' => ('tns:Subscriber')}} + }]) + end + + it 'formats soap :create message for multiple objects with multiple attributes' do + expect(subject.soap_post 'Subscriber', [{'EmailAddress' => 'first@fuelsdk.com', 'Attributes'=> [{'Name'=>'First Name', 'Value'=>'first'}, {'Name'=>'Last Name', 'Value'=>'subscriber'}]}, + {'EmailAddress' => 'second@fuelsdk.com', 'Attributes'=> [{'Name'=>'First Name', 'Value'=>'second'}, {'Name'=>'Last Name', 'Value'=>'subscriber'}]}]).to eq([:create, + { + 'Objects' => [ + {'EmailAddress' => 'first@fuelsdk.com', + 'Attributes' => [ + {'Name' => 'First Name', 'Value' => 'first'}, + {'Name' => 'Last Name', 'Value' => 'subscriber'}, + ] + }, + {'EmailAddress' => 'second@fuelsdk.com', + 'Attributes' => [ + {'Name' => 'First Name', 'Value' => 'second'}, + {'Name' => 'Last Name', 'Value' => 'subscriber'}, + ] + }], + :attributes! => {'Objects' => {'xsi:type' => ('tns:Subscriber')}} + }]) + end + end + end +end