big_machines 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,70 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
3
+ <soapenv:Body>
4
+ <bm:getUserInfoResponse xmlns:bm="urn:soap.bigmachines.com">
5
+ <bm:status>
6
+ <bm:success>true</bm:success>
7
+ <bm:message>Successfully processed API for newtempge at Tue Sep 09 12:04:05 CDT 2014</bm:message>
8
+ </bm:status>
9
+ <bm:userInfo>
10
+ <bm:company_name>newtempge</bm:company_name>
11
+ <bm:login>jheth</bm:login>
12
+ <bm:password/>
13
+ <bm:type>FullAccess</bm:type>
14
+ <bm:first_name>Joe</bm:first_name>
15
+ <bm:last_name>Heth</bm:last_name>
16
+ <bm:job_title/>
17
+ <bm:email>joe.heth@gettinderbox.com</bm:email>
18
+ <bm:phone/>
19
+ <bm:fax/>
20
+ <bm:bill_address_1/>
21
+ <bm:bill_address_2/>
22
+ <bm:bill_city/>
23
+ <bm:bill_state_province/>
24
+ <bm:bill_zip/>
25
+ <bm:bill_country/>
26
+ <bm:separate_ship_addr>true</bm:separate_ship_addr>
27
+ <bm:ship_address_1/>
28
+ <bm:ship_address_2/>
29
+ <bm:ship_city/>
30
+ <bm:ship_state_province/>
31
+ <bm:ship_zip/>
32
+ <bm:ship_country/>
33
+ <bm:notification_pref>
34
+ <bm:is_notify_email>true</bm:is_notify_email>
35
+ </bm:notification_pref>
36
+ <bm:bm_language>English</bm:bm_language>
37
+ <bm:currency_preference>USD</bm:currency_preference>
38
+ <bm:session_currency>USD</bm:session_currency>
39
+ <bm:bill_first_name/>
40
+ <bm:bill_last_name/>
41
+ <bm:bill_company/>
42
+ <bm:bill_company_2/>
43
+ <bm:bill_phone/>
44
+ <bm:bill_fax/>
45
+ <bm:bill_email/>
46
+ <bm:ship_first_name/>
47
+ <bm:ship_last_name/>
48
+ <bm:ship_company/>
49
+ <bm:ship_company_2/>
50
+ <bm:ship_phone/>
51
+ <bm:ship_fax/>
52
+ <bm:ship_email/>
53
+ <bm:bm_units>System Default</bm:bm_units>
54
+ <bm:date_format>MM/dd/yyyy h:mm a</bm:date_format>
55
+ <bm:time_zone>(GMT-5:00 GMT-4:00) US Eastern Time</bm:time_zone>
56
+ <bm:number_format>####.##</bm:number_format>
57
+ <bm:partner_login/>
58
+ <bm:partner_password/>
59
+ <bm:status>Active</bm:status>
60
+ <bm:super_user_access_perm>0</bm:super_user_access_perm>
61
+ <bm:unplugged_default_check_in>0</bm:unplugged_default_check_in>
62
+ <bm:enabled_for_sso>0</bm:enabled_for_sso>
63
+ <bm:external_sso_id/>
64
+ <bm:approval_delegate/>
65
+ <bm:mobile_enabled>0</bm:mobile_enabled>
66
+ <bm:web_services_only>0</bm:web_services_only>
67
+ </bm:userInfo>
68
+ </bm:getUserInfoResponse>
69
+ </soapenv:Body>
70
+ </soapenv:Envelope>
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
3
+ <soapenv:Body>
4
+ <bm:loginResponse xmlns:bm="urn:soap.bigmachines.com">
5
+ <bm:status>
6
+ <bm:success>true</bm:success>
7
+ <bm:message>Successfully processed API for newtempge at Tue Sep 09 10:33:38 CDT 2014</bm:message>
8
+ </bm:status>
9
+ <bm:userInfo>
10
+ <bm:sessionId>E4A5CCEEA2A6746B4388F647149CD2FF</bm:sessionId>
11
+ </bm:userInfo>
12
+ </bm:loginResponse>
13
+ </soapenv:Body>
14
+ </soapenv:Envelope>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
3
+ <soapenv:Body>
4
+ <bm:logoutResponse xmlns:bm="urn:soap.bigmachines.com">
5
+ <bm:status>
6
+ <bm:success>true</bm:success>
7
+ <bm:message>Successfully processed API for newtempge at Tue Sep 09 12:27:26 CDT 2014</bm:message>
8
+ </bm:status>
9
+ </bm:logoutResponse>
10
+ </soapenv:Body>
11
+ </soapenv:Envelope>
@@ -0,0 +1,10 @@
1
+ <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
2
+ <soapenv:Body>
3
+ <bm:setSessionCurrencyResponse xmlns:bm="urn:soap.bigmachines.com">
4
+ <bm:status>
5
+ <bm:success>true</bm:success>
6
+ <bm:message>Successfully processed API for newtempge at Tue Sep 16 23:46:29 CDT 2014</bm:message>
7
+ </bm:status>
8
+ </bm:setSessionCurrencyResponse>
9
+ </soapenv:Body>
10
+ </soapenv:Envelope>
@@ -0,0 +1,104 @@
1
+ require 'spec_helper'
2
+
3
+ describe BigMachines::Client do
4
+ let(:subject) { BigMachines::Client.new('newtempge', process_name: 'quotes_process_bmClone_16')}
5
+
6
+ let(:login_body) {
7
+ %Q{<targetNamespace:login>
8
+ <targetNamespace:userInfo>
9
+ <targetNamespace:username>jheth</targetNamespace:username>
10
+ <targetNamespace:password>changeme</targetNamespace:password>
11
+ </targetNamespace:userInfo>
12
+ </targetNamespace:login>}
13
+ }
14
+
15
+ describe "#operations" do
16
+ it "should return list of operations from the wsdl" do
17
+ subject.operations.should be_a(Array)
18
+ subject.operations.should include(:get_user_info, :login, :logout, :set_session_currency)
19
+ end
20
+ end
21
+
22
+ describe "#login" do
23
+ it "authenticates with username and password" do
24
+ stub = stub_login_request({with_body: login_body})
25
+ stub.to_return(:status => 200, :body => fixture("login_response"))
26
+
27
+ subject.login(username: 'jheth', password: 'changeme')
28
+ end
29
+ end
30
+
31
+ describe "#logout" do
32
+ it "logout current session" do
33
+ body = %Q{<targetNamespace:logout></targetNamespace:logout>}
34
+ stub = stub_api_request({with_body: body, fixture: 'logout_response'})
35
+
36
+ response = subject.logout
37
+ expect(response[:status][:success]).to eq(true)
38
+ end
39
+
40
+ end
41
+
42
+ describe "#get_user_info" do
43
+ it "retrieve user info" do
44
+ body = %Q{<targetNamespace:getUserInfo></targetNamespace:getUserInfo>}
45
+ stub = stub_api_request({with_body: body, fixture: 'get_user_info_response'})
46
+
47
+ response = subject.get_user_info
48
+ user_info = response[:user_info]
49
+ expect(user_info[:company_name]).to eq('newtempge')
50
+ expect(user_info[:first_name]).to eq('Joe')
51
+ expect(user_info[:last_name]).to eq('Heth')
52
+ end
53
+ end
54
+
55
+ describe "#set_session_currency" do
56
+ it "sets currency for existing session" do
57
+ body = %Q{<targetNamespace:setSessionCurrency><targetNamespace:sessionCurrency>USD</targetNamespace:sessionCurrency></targetNamespace:setSessionCurrency>}
58
+ stub = stub_api_request({with_body: body, fixture: 'set_session_currency_response'})
59
+
60
+ response = subject.set_session_currency('USD')
61
+ expect(response[:status][:success]).to eq(true)
62
+ end
63
+ end
64
+
65
+ context "Commerce API" do
66
+ describe "getTransaction" do
67
+ it "returns transaction with specific attributes" do
68
+
69
+ body = %Q{
70
+ <bm:getTransaction>
71
+ <bm:transaction>
72
+ <bm:id>26539349</bm:id>
73
+ <bm:return_specific_attributes>
74
+ <bm:documents>
75
+ <bm:document>
76
+ <bm:var_name>quote_process</bm:var_name>
77
+ </bm:document>
78
+ </bm:documents>
79
+ </bm:return_specific_attributes>
80
+ </bm:transaction>
81
+ </bm:getTransaction>
82
+ }.gsub(/^\s+/, '').gsub(/[\n]/, '').gsub("bm:", "targetNamespace:")
83
+
84
+ stub = stub_commerce_request({with_body: body, fixture: 'get_transaction_response'})
85
+
86
+ transaction = subject.get_transaction(26539349)
87
+ expect(transaction).to be_a(BigMachines::Transaction)
88
+
89
+ expect(transaction.id).to eq('26539349')
90
+ expect(transaction.language_pref).to eq('English')
91
+
92
+ quote_process = transaction.quote
93
+ expect(quote_process).to be_a(Hash)
94
+
95
+ quote_line_items = transaction.quote_line_items
96
+ expect(quote_line_items).to be_a(Array)
97
+
98
+ expect(quote_line_items.length).to eq(109)
99
+ expect(quote_line_items.first[:_model_id]).to eq("17400975")
100
+ end
101
+ end
102
+ end
103
+
104
+ end
@@ -0,0 +1,21 @@
1
+ require 'simplecov'
2
+ SimpleCov.start do
3
+ add_filter "/vendor/"
4
+ end
5
+
6
+ require 'bundler/setup'
7
+ Bundler.require :default, :test
8
+
9
+ require 'webmock/rspec'
10
+
11
+ WebMock.disable_net_connect!
12
+
13
+ RSpec.configure do |config|
14
+ config.order = 'random'
15
+ config.filter_run :focus => true
16
+ config.run_all_when_everything_filtered = true
17
+ end
18
+
19
+ # Requires supporting ruby files with custom matchers and macros, etc,
20
+ # in spec/support/ and its subdirectories.
21
+ Dir[File.join(File.dirname(__FILE__), "support/**/*.rb")].each {|f| require f}
@@ -0,0 +1,75 @@
1
+ module FixtureHelpers
2
+ module InstanceMethods
3
+
4
+ def stub_commerce_request(options={})
5
+ options = options.merge({headers: {service: :commerce}})
6
+ stub_api_request(options)
7
+ end
8
+
9
+ def stub_security_request(options={})
10
+ options = options.merge({headers: {service: :security}})
11
+ stub_api_request(options)
12
+ end
13
+
14
+ def stub_api_request(options={})
15
+ options = {
16
+ :method => :post,
17
+ :status => 200,
18
+ }.merge(options)
19
+
20
+ instance_url = "https://newtempge.bigmachines.com/v1_0/receiver"
21
+ stub = stub_request(options[:method], instance_url)
22
+ stub = stub.with(:body => soap_envelope(options[:headers], options[:with_body]))
23
+ stub = stub.to_return(:status => options[:status], :body => fixture(options[:fixture]), :headers => { 'Content-Type' => 'text/xml;charset=UTF-8'}) if options[:fixture]
24
+ stub
25
+ end
26
+
27
+ def stub_login_request(options={})
28
+ server_url = "https://newtempge.bigmachines.com/v1_0/receiver"
29
+ stub = stub_request(:post, server_url)
30
+ stub = stub.with(:body => soap_envelope(options[:headers], options[:with_body]))
31
+ stub
32
+ end
33
+
34
+ def fixture(f)
35
+ File.read(File.expand_path("../../fixtures/#{f}.xml", __FILE__))
36
+ end
37
+
38
+ def soap_envelope(headers, body)
39
+ %Q{
40
+ <?xml version="1.0" encoding="UTF-8"?>
41
+ <env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:targetNamespace="urn:soap.bigmachines.com" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
42
+ #{soap_headers(headers)}
43
+ <env:Body>
44
+ #{body}
45
+ </env:Body>
46
+ </env:Envelope>
47
+ }.gsub(/[\n\t]/, '')
48
+ end
49
+
50
+ def soap_headers(params={})
51
+ service = params.is_a?(Hash) ? params[:service] : :security
52
+
53
+ if service == :security
54
+ category = "Security"
55
+ schema = "https://newtempge.bigmachines.com/bmfsweb/newtempge/schema/v1_0/security/Security.xsd"
56
+ else
57
+ category = "Commerce"
58
+ schema = "https://newtempge.bigmachines.com/bmfsweb/newtempge/schema/v1_0/commerce/quotes_process_bmClone_16.xsd"
59
+ end
60
+
61
+ %Q{<env:Header>
62
+ <bm:category xmlns:bm="urn:soap.bigmachines.com">#{category}</bm:category>
63
+ <bm:xsdInfo xmlns:bm="urn:soap.bigmachines.com">
64
+ <bm:schemaLocation>#{schema}</bm:schemaLocation>
65
+ </bm:xsdInfo>
66
+ </env:Header>}
67
+ end
68
+
69
+ end
70
+
71
+ end
72
+
73
+ RSpec.configure do |config|
74
+ config.include FixtureHelpers::InstanceMethods
75
+ end
metadata ADDED
@@ -0,0 +1,183 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: big_machines
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Joe Heth
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-09-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: savon
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 2.3.0
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 2.3.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 2.3.0
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 2.3.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: bundler
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ~>
38
+ - !ruby/object:Gem::Version
39
+ version: '1.5'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: '1.5'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ~>
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rspec
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: 2.14.0
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: 2.14.0
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 2.14.0
78
+ - - ! '>='
79
+ - !ruby/object:Gem::Version
80
+ version: 2.14.0
81
+ - !ruby/object:Gem::Dependency
82
+ name: webmock
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: 1.13.0
88
+ - - ! '>='
89
+ - !ruby/object:Gem::Version
90
+ version: 1.13.0
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ~>
96
+ - !ruby/object:Gem::Version
97
+ version: 1.13.0
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: 1.13.0
101
+ - !ruby/object:Gem::Dependency
102
+ name: simplecov
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ~>
106
+ - !ruby/object:Gem::Version
107
+ version: 0.7.1
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: 0.7.1
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 0.7.1
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: 0.7.1
121
+ description: BigMachine's SOAP API Implementation
122
+ email:
123
+ - joeheth@gmail.com
124
+ executables: []
125
+ extensions: []
126
+ extra_rdoc_files: []
127
+ files:
128
+ - .gitignore
129
+ - .travis.yml
130
+ - Gemfile
131
+ - LICENSE.txt
132
+ - README.md
133
+ - Rakefile
134
+ - big_machines.gemspec
135
+ - lib/big_machines.rb
136
+ - lib/big_machines/client.rb
137
+ - lib/big_machines/transaction.rb
138
+ - lib/big_machines/version.rb
139
+ - resources/commerce.wsdl.xml
140
+ - resources/security.wsdl.xml
141
+ - spec/fixtures/get_transaction_response.xml
142
+ - spec/fixtures/get_transaction_response_full.xml
143
+ - spec/fixtures/get_user_info_response.xml
144
+ - spec/fixtures/login_response.xml
145
+ - spec/fixtures/logout_response.xml
146
+ - spec/fixtures/set_session_currency_response.xml
147
+ - spec/lib/client_spec.rb
148
+ - spec/spec_helper.rb
149
+ - spec/support/fixture_helpers.rb
150
+ homepage: https://github.com/TinderBox/big_machines
151
+ licenses:
152
+ - MIT
153
+ metadata: {}
154
+ post_install_message:
155
+ rdoc_options: []
156
+ require_paths:
157
+ - lib
158
+ required_ruby_version: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - ! '>='
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
163
+ required_rubygems_version: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ! '>='
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ requirements: []
169
+ rubyforge_project:
170
+ rubygems_version: 2.2.2
171
+ signing_key:
172
+ specification_version: 4
173
+ summary: Communicate with BigMachine's SOAP API
174
+ test_files:
175
+ - spec/fixtures/get_transaction_response.xml
176
+ - spec/fixtures/get_transaction_response_full.xml
177
+ - spec/fixtures/get_user_info_response.xml
178
+ - spec/fixtures/login_response.xml
179
+ - spec/fixtures/logout_response.xml
180
+ - spec/fixtures/set_session_currency_response.xml
181
+ - spec/lib/client_spec.rb
182
+ - spec/spec_helper.rb
183
+ - spec/support/fixture_helpers.rb