active_fulfillment 2.1.9 → 3.0.0.pre2

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.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +68 -0
  3. data/lib/active_fulfillment.rb +5 -5
  4. data/lib/active_fulfillment/base.rb +10 -0
  5. data/lib/active_fulfillment/response.rb +26 -0
  6. data/lib/active_fulfillment/service.rb +56 -0
  7. data/lib/active_fulfillment/services.rb +5 -0
  8. data/lib/active_fulfillment/services/amazon_mws.rb +473 -0
  9. data/lib/active_fulfillment/services/james_and_james.rb +122 -0
  10. data/lib/active_fulfillment/services/shipwire.rb +266 -0
  11. data/lib/active_fulfillment/services/shopify_api.rb +125 -0
  12. data/lib/active_fulfillment/services/webgistix.rb +334 -0
  13. data/lib/active_fulfillment/version.rb +4 -0
  14. data/test/remote/amazon_mws_test.rb +20 -17
  15. data/test/remote/james_and_james_test.rb +77 -0
  16. data/test/remote/shipwire_test.rb +25 -25
  17. data/test/remote/webgistix_test.rb +21 -21
  18. data/test/test_helper.rb +27 -52
  19. data/test/unit/base_test.rb +4 -4
  20. data/test/unit/services/amazon_mws_test.rb +56 -26
  21. data/test/unit/services/james_and_james_test.rb +90 -0
  22. data/test/unit/services/shipwire_test.rb +18 -18
  23. data/test/unit/services/shopify_api_test.rb +7 -20
  24. data/test/unit/services/webgistix_test.rb +35 -35
  25. metadata +32 -114
  26. data/CHANGELOG +0 -62
  27. data/lib/active_fulfillment/fulfillment/base.rb +0 -12
  28. data/lib/active_fulfillment/fulfillment/response.rb +0 -28
  29. data/lib/active_fulfillment/fulfillment/service.rb +0 -58
  30. data/lib/active_fulfillment/fulfillment/services.rb +0 -5
  31. data/lib/active_fulfillment/fulfillment/services/amazon.rb +0 -389
  32. data/lib/active_fulfillment/fulfillment/services/amazon_mws.rb +0 -454
  33. data/lib/active_fulfillment/fulfillment/services/shipwire.rb +0 -268
  34. data/lib/active_fulfillment/fulfillment/services/shopify_api.rb +0 -125
  35. data/lib/active_fulfillment/fulfillment/services/webgistix.rb +0 -338
  36. data/lib/active_fulfillment/fulfillment/version.rb +0 -6
  37. data/test/fixtures.yml +0 -16
  38. data/test/fixtures/xml/amazon/inventory_get_response.xml +0 -17
  39. data/test/fixtures/xml/amazon/inventory_list_response.xml +0 -29
  40. data/test/fixtures/xml/amazon/inventory_list_response_with_next_1.xml +0 -30
  41. data/test/fixtures/xml/amazon/inventory_list_response_with_next_2.xml +0 -29
  42. data/test/fixtures/xml/amazon/tracking_response_1.xml +0 -56
  43. data/test/fixtures/xml/amazon/tracking_response_2.xml +0 -38
  44. data/test/fixtures/xml/amazon/tracking_response_error.xml +0 -13
  45. data/test/fixtures/xml/amazon/tracking_response_not_found.xml +0 -13
  46. data/test/fixtures/xml/amazon_mws/fulfillment_get_fulfillment_order.xml +0 -114
  47. data/test/fixtures/xml/amazon_mws/fulfillment_get_fulfillment_order_2.xml +0 -90
  48. data/test/fixtures/xml/amazon_mws/fulfillment_get_fullfillment_order_with_multiple_tracking_numbers.xml +0 -121
  49. data/test/fixtures/xml/amazon_mws/fulfillment_list_all_fulfillment_orders.xml +0 -70
  50. data/test/fixtures/xml/amazon_mws/inventory_list_inventory_item_supply.xml +0 -32
  51. data/test/fixtures/xml/amazon_mws/inventory_list_inventory_supply.xml +0 -75
  52. data/test/fixtures/xml/amazon_mws/inventory_list_inventory_supply_by_next_token.xml +0 -38
  53. data/test/fixtures/xml/amazon_mws/tracking_response_error.xml +0 -9
  54. data/test/fixtures/xml/amazon_mws/tracking_response_not_found.xml +0 -9
  55. data/test/fixtures/xml/shipwire/fulfillment_failure_response.xml +0 -7
  56. data/test/fixtures/xml/shipwire/invalid_login_response.xml +0 -7
  57. data/test/fixtures/xml/shipwire/inventory_get_response.xml +0 -44
  58. data/test/fixtures/xml/shipwire/successful_empty_tracking_response.xml +0 -8
  59. data/test/fixtures/xml/shipwire/successful_live_tracking_response.xml +0 -53
  60. data/test/fixtures/xml/shipwire/successful_tracking_response.xml +0 -16
  61. data/test/fixtures/xml/shipwire/successful_tracking_response_with_tracking_urls.xml +0 -31
  62. data/test/fixtures/xml/webgistix/multiple_tracking_response.xml +0 -21
  63. data/test/fixtures/xml/webgistix/tracking_response.xml +0 -14
  64. data/test/remote/amazon_test.rb +0 -124
  65. data/test/unit/services/amazon_test.rb +0 -271
@@ -1,10 +1,12 @@
1
1
  require 'test_helper'
2
2
 
3
- class RemoteShipwireTest < Test::Unit::TestCase
3
+ class RemoteShipwireTest < Minitest::Test
4
+ include ActiveFulfillment::Test::Fixtures
5
+
4
6
  def setup
5
- Base.mode = :test
7
+ ActiveFulfillment::Base.mode = :test
6
8
 
7
- @shipwire = ShipwireService.new( fixtures(:shipwire) )
9
+ @shipwire = ActiveFulfillment::ShipwireService.new(fixtures(:shipwire))
8
10
 
9
11
  @options = {
10
12
  :warehouse => 'LAX',
@@ -37,19 +39,17 @@ class RemoteShipwireTest < Test::Unit::TestCase
37
39
  end
38
40
 
39
41
  def test_invalid_credentials_during_fulfillment
40
- shipwire = ShipwireService.new(
42
+ shipwire = ActiveFulfillment::ShipwireService.new(
41
43
  :login => 'your@email.com',
42
44
  :password => 'password')
43
45
 
44
- response = shipwire.fulfill('123456', @us_address, @line_items, @options)
45
- assert !response.success?
46
- assert response.test?
47
- assert_equal 'Error', response.params['status']
48
- assert_equal "Could not verify Username/EmailAddress and Password combination", response.message
46
+ assert_raises(ActiveUtils::ResponseError, 'Failed with 401 Authorization Required') do
47
+ shipwire.fulfill(SecureRandom.uuid, @us_address, @line_items, @options)
48
+ end
49
49
  end
50
50
 
51
51
  def test_successful_order_submission_to_us
52
- response = @shipwire.fulfill('123456', @us_address, @line_items, @options)
52
+ response = @shipwire.fulfill(SecureRandom.uuid, @us_address, @line_items, @options)
53
53
  assert response.success?
54
54
  assert response.test?
55
55
  assert response.params['transaction_id']
@@ -60,7 +60,7 @@ class RemoteShipwireTest < Test::Unit::TestCase
60
60
  end
61
61
 
62
62
  def test_successful_order_submission_to_uk
63
- response = @shipwire.fulfill('123456', @uk_address, @line_items, @options)
63
+ response = @shipwire.fulfill(SecureRandom.uuid, @uk_address, @line_items, @options)
64
64
  assert response.success?
65
65
  assert response.test?
66
66
  assert response.params['transaction_id']
@@ -73,7 +73,7 @@ class RemoteShipwireTest < Test::Unit::TestCase
73
73
  def test_order_multiple_line_items
74
74
  @line_items.push({ :sku => 'AF0002', :quantity => 25 })
75
75
 
76
- response = @shipwire.fulfill('123456', @us_address, @line_items, @options)
76
+ response = @shipwire.fulfill(SecureRandom.uuid, @us_address, @line_items, @options)
77
77
  assert response.success?
78
78
  assert response.test?
79
79
  assert response.params['transaction_id']
@@ -84,32 +84,32 @@ class RemoteShipwireTest < Test::Unit::TestCase
84
84
  end
85
85
 
86
86
  def test_no_sku_is_sent_with_fulfillment
87
- options = {
88
- :shipping_method => 'UPS Ground'
89
- }
87
+ options = {
88
+ :shipping_method => 'UPS Ground'
89
+ }
90
90
 
91
91
  line_items = [ { :quantity => 1, :description => 'Libtech Snowboard' } ]
92
92
 
93
- response = @shipwire.fulfill('123456', @us_address, line_items, options)
93
+ response = @shipwire.fulfill(SecureRandom.uuid, @us_address, line_items, options)
94
94
 
95
95
  assert response.success?
96
96
  assert response.test?
97
- assert_not_nil response.params['transaction_id']
97
+ refute response.params['transaction_id'].blank?
98
98
  assert_equal "1", response.params['total_orders']
99
- assert_equal "0", response.params['total_items']
99
+ assert_equal "1", response.params['total_items']
100
100
  assert_equal "0", response.params['status']
101
101
  assert_equal 'Successfully submitted the order', response.message
102
102
  end
103
103
 
104
104
  def test_invalid_credentials_during_inventory
105
- shipwire = ShipwireService.new(
105
+ shipwire = ActiveFulfillment::ShipwireService.new(
106
106
  :login => 'your@email.com',
107
107
  :password => 'password'
108
108
  )
109
109
 
110
110
  response = shipwire.fetch_stock_levels
111
111
 
112
- assert !response.success?
112
+ refute response.success?
113
113
  assert response.test?
114
114
  assert_equal 'Error', response.params['status']
115
115
  assert_equal "Error with Valid Username/EmailAddress and Password Required. There is an error in XML document.", response.message
@@ -128,15 +128,15 @@ class RemoteShipwireTest < Test::Unit::TestCase
128
128
  response = @shipwire.fetch_tracking_data(['123456'])
129
129
  assert response.success?
130
130
  assert response.test?
131
- assert_equal Hash.new, response.tracking_numbers # no tracking numbers in testing
132
- assert_equal Hash.new, response.tracking_companies
131
+ assert_instance_of Hash, response.tracking_numbers # {"40298"=>["9400110200793596422990"]}
132
+ assert_instance_of Hash, response.tracking_companies # {"40298"=>["USPS"]}
133
133
  end
134
134
 
135
135
  def test_fetch_tracking_numbers
136
136
  response = @shipwire.fetch_tracking_numbers(['123456'])
137
137
  assert response.success?
138
138
  assert response.test?
139
- assert_equal Hash.new, response.tracking_numbers # no tracking numbers in testing
139
+ assert_instance_of Hash, response.tracking_numbers # {"40298"=>["9400110200793596422990"]}
140
140
  end
141
141
 
142
142
  def test_valid_credentials
@@ -144,10 +144,10 @@ class RemoteShipwireTest < Test::Unit::TestCase
144
144
  end
145
145
 
146
146
  def test_invalid_credentials
147
- service = ShipwireService.new(
147
+ service = ActiveFulfillment::ShipwireService.new(
148
148
  :login => 'your@email.com',
149
149
  :password => 'password'
150
150
  )
151
- assert !service.valid_credentials?
151
+ refute service.valid_credentials?
152
152
  end
153
153
  end
@@ -1,10 +1,12 @@
1
1
  require 'test_helper'
2
2
 
3
- class RemoteWebgistixTest < Test::Unit::TestCase
3
+ class RemoteWebgistixTest < Minitest::Test
4
+ include ActiveFulfillment::Test::Fixtures
5
+
4
6
  def setup
5
- Base.mode = :test
7
+ ActiveFulfillment::Base.mode = :test
6
8
 
7
- @service = WebgistixService.new( fixtures(:webgistix) )
9
+ @service = ActiveFulfillment::WebgistixService.new(fixtures(:webgistix))
8
10
 
9
11
  @options = {
10
12
  :shipping_method => 'Ground',
@@ -28,40 +30,37 @@ class RemoteWebgistixTest < Test::Unit::TestCase
28
30
  end
29
31
 
30
32
  def test_successful_order_submission
31
- response = @service.fulfill('123456', @address, @line_items, @options)
33
+ response = @service.fulfill(SecureRandom.uuid, @address, @line_items, @options)
32
34
  assert response.success?
33
35
  assert response.test?
34
- assert_equal WebgistixService::SUCCESS_MESSAGE, response.message
36
+ assert_equal ActiveFulfillment::WebgistixService::SUCCESS_MESSAGE, response.message
35
37
  end
36
38
 
37
39
  def test_order_multiple_line_items
38
- @line_items.push(
39
- { :sku => 'WX-01-1020',
40
- :quantity => 3
41
- }
42
- )
40
+ @line_items.push(:sku => 'WX-01-1020', :quantity => 3)
43
41
 
44
- response = @service.fulfill('123456', @address, @line_items, @options)
42
+ response = @service.fulfill(SecureRandom.uuid, @address, @line_items, @options)
45
43
  assert response.success?
46
44
  assert response.test?
47
- assert_equal WebgistixService::SUCCESS_MESSAGE, response.message
45
+ assert_equal ActiveFulfillment::WebgistixService::SUCCESS_MESSAGE, response.message
48
46
  end
49
47
 
50
48
  def test_invalid_sku_during_fulfillment
51
49
  line_items = [ { :sku => 'invalid', :quantity => 1 } ]
52
- response = @service.fulfill('123456', @address, line_items, @options)
53
- assert !response.success?
50
+ response = @service.fulfill(SecureRandom.uuid, @address, line_items, @options)
51
+ refute response.success?
54
52
  assert response.test?
55
- assert_equal WebgistixService::FAILURE_MESSAGE, response.message
53
+ assert_equal ActiveFulfillment::WebgistixService::FAILURE_MESSAGE, response.message
56
54
  end
57
55
 
58
56
  def test_invalid_credentials_during_fulfillment
59
- service = WebgistixService.new(
57
+ service = ActiveFulfillment::WebgistixService.new(
60
58
  :login => 'your@email.com',
61
- :password => 'password')
59
+ :password => 'password'
60
+ )
62
61
 
63
- response = service.fulfill('123456', @address, @line_items, @options)
64
- assert !response.success?
62
+ response = service.fulfill(SecureRandom.uuid, @address, @line_items, @options)
63
+ refute response.success?
65
64
  assert response.test?
66
65
  assert_equal "Invalid Credentials", response.message
67
66
  end
@@ -88,6 +87,7 @@ class RemoteWebgistixTest < Test::Unit::TestCase
88
87
  '1254658', 'FAItest123', 'Flat Rate Test Order 4'
89
88
  ])
90
89
  assert response.success?
90
+ p response
91
91
  assert_equal ['4209073191018052136352154'], response.tracking_numbers['1254658']
92
92
  assert_equal ['9101805213907472080032'], response.tracking_numbers['Flat Rate Test Order 4']
93
93
  assert_nil response.tracking_numbers['FAItest123'] # 'Not Shipped'
@@ -98,10 +98,10 @@ class RemoteWebgistixTest < Test::Unit::TestCase
98
98
  end
99
99
 
100
100
  def test_invalid_credentials
101
- service = WebgistixService.new(
101
+ service = ActiveFulfillment::WebgistixService.new(
102
102
  :login => 'your@email.com',
103
103
  :password => 'password')
104
104
 
105
- assert !service.valid_credentials?
105
+ refute service.valid_credentials?
106
106
  end
107
107
  end
data/test/test_helper.rb CHANGED
@@ -1,69 +1,44 @@
1
- #!/usr/bin/env ruby
2
- $:.unshift(File.dirname(__FILE__) + '/../lib')
1
+ require 'bundler/setup'
3
2
 
4
- require 'rubygems'
5
- require 'bundler'
6
- Bundler.setup
7
-
8
- require 'minitest/autorun'
9
- require 'digest/md5'
10
3
  require 'active_fulfillment'
11
- require 'active_utils'
12
- require 'timecop'
13
4
 
5
+ require 'minitest/autorun'
14
6
  require 'mocha/setup'
7
+ require 'timecop'
15
8
 
16
9
  require 'logger'
17
- ActiveMerchant::Fulfillment::Service.logger = Logger.new(nil)
18
-
19
- module Test
20
- module Unit
21
- class TestCase < MiniTest::Unit::TestCase
22
- include ActiveMerchant::Fulfillment
23
-
24
- LOCAL_CREDENTIALS = ENV['HOME'] + '/.active_merchant/fixtures.yml' unless defined?(LOCAL_CREDENTIALS)
25
- DEFAULT_CREDENTIALS = File.dirname(__FILE__) + '/fixtures.yml' unless defined?(DEFAULT_CREDENTIALS)
10
+ ActiveFulfillment::Service.logger = Logger.new(nil)
26
11
 
27
- def all_fixtures
28
- @@fixtures ||= load_fixtures
29
- end
30
-
31
- def fixtures(key)
32
- data = all_fixtures[key] || raise(StandardError, "No fixture data was found for '#{key}'")
33
-
34
- data.dup
35
- end
12
+ # This makes sure that Minitest::Test exists when an older version of Minitest
13
+ # (i.e. 4.x) is required by ActiveSupport.
14
+ unless defined?(Minitest::Test)
15
+ Minitest::Test = MiniTest::Unit::TestCase
16
+ end
36
17
 
37
- def load_fixtures
38
- file = File.exists?(LOCAL_CREDENTIALS) ? LOCAL_CREDENTIALS : DEFAULT_CREDENTIALS
39
- yaml_data = YAML.load(File.read(file))
40
- symbolize_keys(yaml_data)
18
+ module ActiveFulfillment::Test
19
+ module Fixtures
20
+ LOCAL_CREDENTIALS = ENV['HOME'] + '/.active_fulfillment/fixtures.yml' unless defined?(LOCAL_CREDENTIALS)
21
+ DEFAULT_CREDENTIALS = File.dirname(__FILE__) + '/fixtures.yml' unless defined?(DEFAULT_CREDENTIALS)
41
22
 
42
- yaml_data
43
- end
23
+ def fixtures(key)
24
+ data = all_fixtures[key] || raise(StandardError, "No fixture data was found for '#{key}'")
44
25
 
45
- def xml_fixture(path) # where path is like 'usps/beverly_hills_to_ottawa_response'
46
- open(File.join(File.dirname(__FILE__),'fixtures','xml',"#{path}.xml")) {|f| f.read}
47
- end
26
+ data.dup
27
+ end
48
28
 
49
- def symbolize_keys(hash)
50
- return unless hash.is_a?(Hash)
29
+ def xml_fixture(path) # where path is like 'usps/beverly_hills_to_ottawa_response'
30
+ File.read(File.join(File.dirname(__FILE__),'fixtures','xml',"#{path}.xml"))
31
+ end
51
32
 
52
- hash.symbolize_keys!
53
- hash.each{|k,v| symbolize_keys(v)}
54
- end
33
+ private
55
34
 
56
- def assert_raise(error)
57
- begin
58
- yield
59
- rescue => e
60
- flunk "Expected #{error} but nothing raised" if e.class != error
61
- end
62
- end
35
+ def all_fixtures
36
+ @@fixtures ||= load_fixtures
37
+ end
63
38
 
64
- def assert_nothing_raised
65
- yield
66
- end
39
+ def load_fixtures
40
+ file = File.exists?(LOCAL_CREDENTIALS) ? LOCAL_CREDENTIALS : DEFAULT_CREDENTIALS
41
+ YAML.load(File.read(file)).deep_symbolize_keys
67
42
  end
68
43
  end
69
44
  end
@@ -1,7 +1,7 @@
1
1
  require 'test_helper'
2
2
 
3
- class BaseTest < Test::Unit::TestCase
4
- include ActiveMerchant::Fulfillment
3
+ class BaseTest < Minitest::Test
4
+ include ActiveFulfillment
5
5
 
6
6
  def test_get_shipwire_by_string
7
7
  assert_equal ShipwireService, Base.service('shipwire')
@@ -10,8 +10,8 @@ class BaseTest < Test::Unit::TestCase
10
10
  def test_get_shipwire_by_name
11
11
  assert_equal ShipwireService, Base.service(:shipwire)
12
12
  end
13
-
13
+
14
14
  def test_get_unknown_service
15
- assert_raise(NameError){ Base.service(:polar_north) }
15
+ assert_raises(NameError){ Base.service(:polar_north) }
16
16
  end
17
17
  end
@@ -1,8 +1,10 @@
1
1
  require 'test_helper'
2
2
 
3
- class AmazonMarketplaceWebServiceTest < Test::Unit::TestCase
3
+ class AmazonMarketplaceWebServiceTest < Minitest::Test
4
+ include ActiveFulfillment::Test::Fixtures
5
+
4
6
  def setup
5
- @service = AmazonMarketplaceWebService.new(
7
+ @service = ActiveFulfillment::AmazonMarketplaceWebService.new(
6
8
  :login => 'l',
7
9
  :password => 'p'
8
10
  )
@@ -36,6 +38,18 @@ class AmazonMarketplaceWebServiceTest < Test::Unit::TestCase
36
38
  :phone => "(555)555-5555"
37
39
  }
38
40
 
41
+ @long_address = {
42
+ :name => 'Mister Long Name The Third',
43
+ :company => 'Company Overflow Name Incorporated LLC',
44
+ :address1 => '100 Information Super Highway',
45
+ :address2 => 'Suite 66',
46
+ :city => 'Beverly Hills',
47
+ :state => 'CA',
48
+ :country => 'US',
49
+ :zip => '90210',
50
+ :phone => "(555)555-5555"
51
+ }
52
+
39
53
  @canadian_address = {
40
54
  :name => 'Johnny Bouchard',
41
55
  :address1 => '100 Canuck St',
@@ -56,12 +70,12 @@ class AmazonMarketplaceWebServiceTest < Test::Unit::TestCase
56
70
  end
57
71
 
58
72
  def test_get_default_fulfillment_gateway
59
- assert_equal AmazonMarketplaceWebService::ENDPOINTS[:us], @service.endpoint
73
+ assert_equal ActiveFulfillment::AmazonMarketplaceWebService::ENDPOINTS[:us], @service.endpoint
60
74
  end
61
75
 
62
76
  def test_create_service_with_different_fulfillment_gateway
63
- service = AmazonMarketplaceWebService.new(:login => 'l', :password => 'p', :endpoint => :jp)
64
- assert_equal AmazonMarketplaceWebService::ENDPOINTS[:jp], service.endpoint
77
+ service = ActiveFulfillment::AmazonMarketplaceWebService.new(:login => 'l', :password => 'p', :endpoint => :jp)
78
+ assert_equal ActiveFulfillment::AmazonMarketplaceWebService::ENDPOINTS[:jp], service.endpoint
65
79
  end
66
80
 
67
81
  def test_build_basic_api_query
@@ -74,9 +88,9 @@ class AmazonMarketplaceWebServiceTest < Test::Unit::TestCase
74
88
  opts = @service.build_basic_api_query(options)
75
89
  assert_equal expected_keys.sort, opts.keys.map(&:to_s).sort
76
90
  assert_equal "l", opts["AWSAccessKeyId"]
77
- assert_equal AmazonMarketplaceWebService::SIGNATURE_VERSION, opts["SignatureVersion"]
78
- assert_equal "Hmac#{AmazonMarketplaceWebService::SIGNATURE_METHOD}", opts["SignatureMethod"]
79
- assert_equal AmazonMarketplaceWebService::VERSION, opts["Version"]
91
+ assert_equal ActiveFulfillment::AmazonMarketplaceWebService::SIGNATURE_VERSION, opts["SignatureVersion"]
92
+ assert_equal "Hmac#{ActiveFulfillment::AmazonMarketplaceWebService::SIGNATURE_METHOD}", opts["SignatureMethod"]
93
+ assert_equal ActiveFulfillment::AmazonMarketplaceWebService::VERSION, opts["Version"]
80
94
  end
81
95
 
82
96
  def test_build_inventory_list_request
@@ -93,7 +107,7 @@ class AmazonMarketplaceWebServiceTest < Test::Unit::TestCase
93
107
  end
94
108
 
95
109
  def test_create_signature
96
- service = AmazonMarketplaceWebService.new(:login => "0PExampleR2", :password => "sekrets")
110
+ service = ActiveFulfillment::AmazonMarketplaceWebService.new(:login => "0PExampleR2", :password => "sekrets")
97
111
  expected_signature = "39XxH6iKLysjjDmWZSkyr2z8iSxfECHBYE1Pd0Qqpwo%3D"
98
112
  options = {
99
113
  "AWSAccessKeyId" => "0PExampleR2",
@@ -107,16 +121,23 @@ class AmazonMarketplaceWebServiceTest < Test::Unit::TestCase
107
121
  "Version" => "2009-01-01"
108
122
  }
109
123
 
110
- uri = URI.parse("https://#{AmazonMarketplaceWebService::ENDPOINTS[:us]}")
124
+ uri = URI.parse("https://#{ActiveFulfillment::AmazonMarketplaceWebService::ENDPOINTS[:us]}")
111
125
 
112
126
  assert_equal expected_signature, service.sign(:POST, uri, options)
113
127
  end
114
128
 
115
129
  def test_verify_amazon_response
116
- service = AmazonMarketplaceWebService.new(:login => "AKIAFJPPO5KLY6G4XO7Q", :password => "aaa")
117
- string_signed_by_amazon = "POST\nhttps://www.vendor.com/mwsApp1\n/orders/listRecentOrders.jsp?sessionId=123"
118
- string_signed_by_amazon += "\nAWSAccessKeyId=AKIAFJPPO5KLY6G4XO7Q&Marketplace=ATVPDKIKX0DER&Merchant=A047950713KM6AGKQCBRD&SignatureMethod=HmacSHA256&SignatureVersion=2"
119
- assert service.amazon_request?(string_signed_by_amazon, "b0hxWov1RfBOqNk77UDfNRRZmf3tkdM7vuNa%2FolfnWg%3D")
130
+ service = ActiveFulfillment::AmazonMarketplaceWebService.new(:login => "AKIAFJPPO5KLY6G4XO7Q", :password => "aaa")
131
+ post_params = {
132
+ AWSAccessKeyId: "AKIAFJPPO5KLY6G4XO7Q",
133
+ Marketplace: "ATVPDKIKX0DER",
134
+ Merchant: "A047950713KM6AGKQCBRD",
135
+ SignatureMethod: "HmacSHA256",
136
+ SignatureVersion: "2",
137
+ Signature: "b0hxWov1RfBOqNk77UDfNRRZmf3tkdM7vuNa/olfnWg=",
138
+ SignedString: "This should be ignored."
139
+ }
140
+ assert service.amazon_request?("POST", "https://www.vendor.com/mwsApp1", "/orders/listRecentOrders.jsp?sessionId=123", post_params)
120
141
  end
121
142
 
122
143
  def test_build_address
@@ -147,6 +168,10 @@ class AmazonMarketplaceWebServiceTest < Test::Unit::TestCase
147
168
  assert_equal expected_items, @service.build_address(@commercial_address)
148
169
  end
149
170
 
171
+ def test_build_address_truncates_name_to_length
172
+ assert_equal "Company Overflow Name Incorporated LLC - Mister Lo", @service.build_address(@long_address)["DestinationAddress.Name"]
173
+ end
174
+
150
175
  def test_build_address_upcases_postal_code
151
176
  address = @service.build_address(@canadian_address)
152
177
  assert_equal address["DestinationAddress.PostalCode"], "H0H0H0"
@@ -184,11 +209,11 @@ class AmazonMarketplaceWebServiceTest < Test::Unit::TestCase
184
209
  end
185
210
 
186
211
  def test_integrated_registration_url_creation
187
- service = AmazonMarketplaceWebService.new(:login => "AKIAFJPPO5KLY6G4XO7Q", :password => "aaa", :app_id => "1014f5ad-c359-4e86-8e50-bb8f8e431a9")
212
+ service = ActiveFulfillment::AmazonMarketplaceWebService.new(:login => "AKIAFJPPO5KLY6G4XO7Q", :password => "aaa", :app_id => "1014f5ad-c359-4e86-8e50-bb8f8e431a9")
188
213
  options = {
189
214
  "returnPathAndParameters" => "/orders/listRecentOrders.jsp?sessionId=123"
190
215
  }
191
- expected_registration_url = "#{AmazonMarketplaceWebService::REGISTRATION_URI.to_s}?AWSAccessKeyId=AKIAFJPPO5KLY6G4XO7Q&SignatureMethod=HmacSHA256&SignatureVersion=2&id=1014f5ad-c359-4e86-8e50-bb8f8e431a9&returnPathAndParameters=%2Forders%2FlistRecentOrders.jsp%3FsessionId%3D123&Signature=zpZyHd8rMf5gg5rpO5ri5RGUi0kks03ZkhAtPm4npVk%3D"
216
+ expected_registration_url = "#{ActiveFulfillment::AmazonMarketplaceWebService::REGISTRATION_URI.to_s}?AWSAccessKeyId=AKIAFJPPO5KLY6G4XO7Q&SignatureMethod=HmacSHA256&SignatureVersion=2&id=1014f5ad-c359-4e86-8e50-bb8f8e431a9&returnPathAndParameters=%2Forders%2FlistRecentOrders.jsp%3FsessionId%3D123&Signature=zpZyHd8rMf5gg5rpO5ri5RGUi0kks03ZkhAtPm4npVk%3D"
192
217
  assert_equal expected_registration_url, service.registration_url(options)
193
218
  end
194
219
 
@@ -213,7 +238,7 @@ class AmazonMarketplaceWebServiceTest < Test::Unit::TestCase
213
238
 
214
239
  def test_invalid_arguments
215
240
  http_response = build_mock_response(invalid_params_response, "", 500)
216
- @service.expects(:ssl_post).raises(ActiveMerchant::ResponseError.new(http_response))
241
+ @service.expects(:ssl_post).raises(ActiveUtils::ResponseError.new(http_response))
217
242
  response = @service.fulfill('12345678', @address, @line_items, @options)
218
243
  assert !response.success?
219
244
  assert_equal "MalformedInput: timestamp must follow ISO8601", response.params['response_comment']
@@ -221,12 +246,12 @@ class AmazonMarketplaceWebServiceTest < Test::Unit::TestCase
221
246
 
222
247
  def test_missing_order_date
223
248
  @options.delete(:order_date)
224
- assert_raise(ArgumentError) { @service.fulfill('12345678', @address, @line_items, @options) }
249
+ assert_raises(ArgumentError) { @service.fulfill('12345678', @address, @line_items, @options) }
225
250
  end
226
251
 
227
252
  def test_missing_shipping_method
228
253
  @options.delete(:shipping_method)
229
- assert_raise(ArgumentError) { @service.fulfill('12345678', @address, @line_items, @options) }
254
+ assert_raises(ArgumentError) { @service.fulfill('12345678', @address, @line_items, @options) }
230
255
  end
231
256
 
232
257
  def test_get_service_status
@@ -239,6 +264,12 @@ class AmazonMarketplaceWebServiceTest < Test::Unit::TestCase
239
264
  def test_get_inventory
240
265
  @service.expects(:ssl_post).returns(xml_fixture('amazon_mws/inventory_list_inventory_supply'))
241
266
 
267
+ @service.class.logger.expects(:info).with do |message|
268
+ assert_match /ListInventorySupplyResult/, message
269
+ assert /MWSAuthToken/ !~ message
270
+ assert /AWSAccessKeyId/ !~ message
271
+ end
272
+
242
273
  response = @service.fetch_stock_levels
243
274
  assert response.success?
244
275
  assert_equal 202, response.stock_levels['GN-00-01A']
@@ -273,7 +304,7 @@ class AmazonMarketplaceWebServiceTest < Test::Unit::TestCase
273
304
  http_response = build_mock_response(response_from_503, "", 503)
274
305
  @service.expects(:ssl_post).with() { |uri, query, headers|
275
306
  query.include?('ListInventorySupplyByNextToken') && query.include?('NextToken')
276
- }.raises(ActiveMerchant::ResponseError.new(http_response))
307
+ }.raises(ActiveUtils::ResponseError.new(http_response))
277
308
 
278
309
  response = @service.fetch_stock_levels
279
310
  assert !response.success?
@@ -328,7 +359,7 @@ class AmazonMarketplaceWebServiceTest < Test::Unit::TestCase
328
359
 
329
360
  @service.expects(:ssl_post).times(3).
330
361
  returns(xml_fixture('amazon_mws/fulfillment_get_fulfillment_order')).
331
- raises(ActiveMerchant::ResponseError.new(response)).
362
+ raises(ActiveUtils::ResponseError.new(response)).
332
363
  returns(xml_fixture('amazon_mws/fulfillment_get_fulfillment_order_2'))
333
364
 
334
365
  response = @service.fetch_tracking_numbers(['extern_id_1154539615776', 'dafdfafsdafdafasdfa', 'extern_id_1154539615777'])
@@ -344,7 +375,7 @@ class AmazonMarketplaceWebServiceTest < Test::Unit::TestCase
344
375
 
345
376
  @service.expects(:ssl_post).twice.
346
377
  returns(xml_fixture('amazon_mws/fulfillment_get_fulfillment_order')).
347
- raises(ActiveMerchant::ResponseError.new(response))
378
+ raises(ActiveUtils::ResponseError.new(response))
348
379
 
349
380
  response = @service.fetch_tracking_numbers(['extern_id_1154539615776', 'ERROR', 'extern_id_1154539615777'])
350
381
  assert !response.success?
@@ -353,7 +384,7 @@ class AmazonMarketplaceWebServiceTest < Test::Unit::TestCase
353
384
 
354
385
  def test_404_error
355
386
  http_response = build_mock_response(response_from_404, "Not Found", "404")
356
- @service.expects(:ssl_post).raises(ActiveMerchant::ResponseError.new(http_response))
387
+ @service.expects(:ssl_post).raises(ActiveUtils::ResponseError.new(http_response))
357
388
 
358
389
  response = @service.fulfill('987654321', @address, @line_items, @options)
359
390
  assert !response.success?
@@ -366,9 +397,8 @@ class AmazonMarketplaceWebServiceTest < Test::Unit::TestCase
366
397
 
367
398
  def test_building_address_skips_nil_values
368
399
  @address[:address2] = nil
369
- assert_nothing_raised do
370
- @service.send(:build_address, @address)
371
- end
400
+ hash = @service.send(:build_address, @address)
401
+ refute hash.key?("DestinationAddress.Line2")
372
402
  end
373
403
 
374
404
  def test_building_a_full_query_does_not_cause_query_to_fail