mws-rb 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.
- data/.gitignore +1 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +73 -0
- data/Guardfile +8 -0
- data/LICENSE +20 -0
- data/README.markdown +90 -0
- data/Rakefile +1 -0
- data/lib/mws-rb.rb +50 -0
- data/lib/mws-rb/api/base.rb +48 -0
- data/lib/mws-rb/api/feeds.rb +29 -0
- data/lib/mws-rb/api/feeds/envelope.rb +61 -0
- data/lib/mws-rb/api/feeds/xsd/AdditionalProductInformation.xsd +23 -0
- data/lib/mws-rb/api/feeds/xsd/Amazon.xsd +94 -0
- data/lib/mws-rb/api/feeds/xsd/Arts.xsd +144 -0
- data/lib/mws-rb/api/feeds/xsd/AutoAccessory.xsd +1714 -0
- data/lib/mws-rb/api/feeds/xsd/Baby.xsd +206 -0
- data/lib/mws-rb/api/feeds/xsd/Beauty.xsd +170 -0
- data/lib/mws-rb/api/feeds/xsd/Books.xsd +135 -0
- data/lib/mws-rb/api/feeds/xsd/CE.xsd +2878 -0
- data/lib/mws-rb/api/feeds/xsd/CameraPhoto.xsd +2612 -0
- data/lib/mws-rb/api/feeds/xsd/ClothingAccessories.xsd +128 -0
- data/lib/mws-rb/api/feeds/xsd/Computers.xsd +2347 -0
- data/lib/mws-rb/api/feeds/xsd/EUCompliance.xsd +24 -0
- data/lib/mws-rb/api/feeds/xsd/EntertainmentCollectibles.xsd +99 -0
- data/lib/mws-rb/api/feeds/xsd/FBA.xsd +28 -0
- data/lib/mws-rb/api/feeds/xsd/FoodAndBeverages.xsd +1000 -0
- data/lib/mws-rb/api/feeds/xsd/FoodServiceAndJanSan.xsd +216 -0
- data/lib/mws-rb/api/feeds/xsd/FulfillmentCenter.xsd +57 -0
- data/lib/mws-rb/api/feeds/xsd/GiftCards.xsd +97 -0
- data/lib/mws-rb/api/feeds/xsd/Gourmet.xsd +85 -0
- data/lib/mws-rb/api/feeds/xsd/Health.xsd +335 -0
- data/lib/mws-rb/api/feeds/xsd/Home.xsd +1362 -0
- data/lib/mws-rb/api/feeds/xsd/HomeImprovement.xsd +1065 -0
- data/lib/mws-rb/api/feeds/xsd/Industrial.xsd +315 -0
- data/lib/mws-rb/api/feeds/xsd/Inventory.xsd +49 -0
- data/lib/mws-rb/api/feeds/xsd/Jewelry.xsd +916 -0
- data/lib/mws-rb/api/feeds/xsd/LabSupplies.xsd +178 -0
- data/lib/mws-rb/api/feeds/xsd/LargeAppliances.xsd +646 -0
- data/lib/mws-rb/api/feeds/xsd/Lighting.xsd +243 -0
- data/lib/mws-rb/api/feeds/xsd/Listings.xsd +32 -0
- data/lib/mws-rb/api/feeds/xsd/Luggage.xsd +93 -0
- data/lib/mws-rb/api/feeds/xsd/MechanicalFasteners.xsd +172 -0
- data/lib/mws-rb/api/feeds/xsd/Miscellaneous.xsd +157 -0
- data/lib/mws-rb/api/feeds/xsd/Motorcycles.xsd +348 -0
- data/lib/mws-rb/api/feeds/xsd/Music.xsd +251 -0
- data/lib/mws-rb/api/feeds/xsd/MusicalInstruments.xsd +853 -0
- data/lib/mws-rb/api/feeds/xsd/Office.xsd +586 -0
- data/lib/mws-rb/api/feeds/xsd/OrderAcknowledgement.xsd +55 -0
- data/lib/mws-rb/api/feeds/xsd/OrderAdjustment.xsd +175 -0
- data/lib/mws-rb/api/feeds/xsd/OrderFulfillment.xsd +57 -0
- data/lib/mws-rb/api/feeds/xsd/Override.xsd +48 -0
- data/lib/mws-rb/api/feeds/xsd/PetSupplies.xsd +197 -0
- data/lib/mws-rb/api/feeds/xsd/PowerTransmission.xsd +87 -0
- data/lib/mws-rb/api/feeds/xsd/Price.xsd +59 -0
- data/lib/mws-rb/api/feeds/xsd/ProcessingReport.xsd +87 -0
- data/lib/mws-rb/api/feeds/xsd/Product.xsd +399 -0
- data/lib/mws-rb/api/feeds/xsd/ProductClothing.xsd +285 -0
- data/lib/mws-rb/api/feeds/xsd/ProductImage.xsd +39 -0
- data/lib/mws-rb/api/feeds/xsd/RawMaterials.xsd +125 -0
- data/lib/mws-rb/api/feeds/xsd/Relationship.xsd +47 -0
- data/lib/mws-rb/api/feeds/xsd/SWVG.xsd +345 -0
- data/lib/mws-rb/api/feeds/xsd/SettlementReport.xsd +158 -0
- data/lib/mws-rb/api/feeds/xsd/Shoes.xsd +213 -0
- data/lib/mws-rb/api/feeds/xsd/Sports.xsd +772 -0
- data/lib/mws-rb/api/feeds/xsd/SportsMemorabilia.xsd +55 -0
- data/lib/mws-rb/api/feeds/xsd/TiresAndWheels.xsd +159 -0
- data/lib/mws-rb/api/feeds/xsd/Tools.xsd +82 -0
- data/lib/mws-rb/api/feeds/xsd/Toys.xsd +272 -0
- data/lib/mws-rb/api/feeds/xsd/ToysBaby.xsd +335 -0
- data/lib/mws-rb/api/feeds/xsd/Video.xsd +406 -0
- data/lib/mws-rb/api/feeds/xsd/WineAndAlcohol.xsd +181 -0
- data/lib/mws-rb/api/feeds/xsd/Wireless.xsd +128 -0
- data/lib/mws-rb/api/feeds/xsd/amzn-base.xsd +4350 -0
- data/lib/mws-rb/api/feeds/xsd/amzn-envelope.xsd +98 -0
- data/lib/mws-rb/api/feeds/xsd/amzn-header.xsd +45 -0
- data/lib/mws-rb/api/fulfillment_inbound_shipment.rb +15 -0
- data/lib/mws-rb/api/fulfillment_inventory.rb +13 -0
- data/lib/mws-rb/api/fulfillment_outbound_shipment.rb +11 -0
- data/lib/mws-rb/api/orders.rb +15 -0
- data/lib/mws-rb/api/products.rb +18 -0
- data/lib/mws-rb/api/recommendations.rb +13 -0
- data/lib/mws-rb/api/reports.rb +16 -0
- data/lib/mws-rb/api/sellers.rb +14 -0
- data/lib/mws-rb/connection.rb +53 -0
- data/lib/mws-rb/query.rb +94 -0
- data/lib/mws-rb/version.rb +3 -0
- data/mws-rb.gemspec +28 -0
- data/spec/mws-rb/api/base_spec.rb +51 -0
- data/spec/mws-rb/api/feeds/envelope_spec.rb +29 -0
- data/spec/mws-rb/api/feeds_spec.rb +23 -0
- data/spec/mws-rb/api/fulfillment_inbound_shipment_spec.rb +23 -0
- data/spec/mws-rb/api/fulfillment_inventory_spec.rb +23 -0
- data/spec/mws-rb/api/fulfillment_outbound_shipment_spec.rb +23 -0
- data/spec/mws-rb/api/orders_spec.rb +24 -0
- data/spec/mws-rb/api/products_spec.rb +24 -0
- data/spec/mws-rb/api/recommendations_spec.rb +24 -0
- data/spec/mws-rb/api/reports_spec.rb +24 -0
- data/spec/mws-rb/api/sellers_spec.rb +28 -0
- data/spec/mws-rb/connection_spec.rb +58 -0
- data/spec/mws-rb/mws_spec.rb +11 -0
- data/spec/mws-rb/query_spec.rb +110 -0
- data/spec/spec_helper.rb +7 -0
- metadata +260 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe MWS::API::Base do
|
|
4
|
+
let(:connection) {MWS::Connection.new({
|
|
5
|
+
aws_access_key_id: "access key",
|
|
6
|
+
aws_secret_access_key: "secret key",
|
|
7
|
+
seller_id: "seller id"
|
|
8
|
+
})}
|
|
9
|
+
|
|
10
|
+
let(:base) {MWS::API::Base.new(connection)}
|
|
11
|
+
|
|
12
|
+
it "hould receive a connection object" do
|
|
13
|
+
base.connection.should eq(connection)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should respond to .call" do
|
|
17
|
+
base.should respond_to(:call)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should respond to :uri and :version and :verb" do
|
|
21
|
+
base.should respond_to(:uri)
|
|
22
|
+
base.should respond_to(:version)
|
|
23
|
+
base.should respond_to(:verb)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should set :verb to :get as default" do
|
|
27
|
+
base.verb.should eq(:get)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe "method_missing to call actions" do
|
|
31
|
+
class TestApi < MWS::API::Base
|
|
32
|
+
Actions = [:test_action]
|
|
33
|
+
def initialize(connection)
|
|
34
|
+
@uri = "/Products/2011-10-01"
|
|
35
|
+
@version = "2011-10-01"
|
|
36
|
+
super(connection)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
let(:test_api) {TestApi.new(connection)}
|
|
41
|
+
before(:each) {HTTParty.stub(:get).and_return({})}
|
|
42
|
+
|
|
43
|
+
it "should not raise exception if Actions contain the action name" do
|
|
44
|
+
expect {test_api.test_action}.to_not raise_error
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "should raise exception if Actions do not contain the action name" do
|
|
48
|
+
expect {test_api.action_not_found}.to raise_error
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe MWS::API::Feeds::Envelope do
|
|
4
|
+
it "should validate the envelope" do
|
|
5
|
+
expect {
|
|
6
|
+
MWS::API::Feeds::Envelope.new(message_type: "InvalidMessageType", message:{"InvalidItem" => "Invalid"})
|
|
7
|
+
}.to raise_error
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should skip validation when param skip_schema_validation is true" do
|
|
11
|
+
expect {
|
|
12
|
+
MWS::API::Feeds::Envelope.new(message_type: "InvalidMessageType", message:{"InvalidItem" => "Invalid"}, skip_schema_validation: true)
|
|
13
|
+
}.to_not raise_error
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should remove array items" do
|
|
17
|
+
envelope = MWS::API::Feeds::Envelope.new(
|
|
18
|
+
message_type: "InvalidMessageType",
|
|
19
|
+
message:{
|
|
20
|
+
"Items" => [{item_1: "1"}, {item_2: "2"}],
|
|
21
|
+
"Inventories" => [{inventory_1: "1"}]
|
|
22
|
+
},
|
|
23
|
+
skip_schema_validation: true)
|
|
24
|
+
|
|
25
|
+
envelope.to_s.include?("Items").should == false
|
|
26
|
+
envelope.to_s.include?("Inventories").should == false
|
|
27
|
+
envelope.to_s.include?("array").should == false
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe MWS::API::Feeds do
|
|
4
|
+
let(:connection) {MWS::Connection.new({
|
|
5
|
+
aws_access_key_id: "access key",
|
|
6
|
+
aws_secret_access_key: "secret key",
|
|
7
|
+
seller_id: "seller id"
|
|
8
|
+
})}
|
|
9
|
+
|
|
10
|
+
let(:feeds) {MWS::API::Feeds.new(connection)}
|
|
11
|
+
|
|
12
|
+
it "should inheritance from MWS::API::Base" do
|
|
13
|
+
MWS::API::Feeds.superclass.should eq(MWS::API::Base)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should set the right :uri" do
|
|
17
|
+
feeds.uri.should eq("/")
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should set the right :version" do
|
|
21
|
+
feeds.version.should eq("2009-01-01")
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe MWS::API::FulfillmentInboundShipment do
|
|
4
|
+
let(:connection) {MWS::Connection.new({
|
|
5
|
+
aws_access_key_id: "access key",
|
|
6
|
+
aws_secret_access_key: "secret key",
|
|
7
|
+
seller_id: "seller id"
|
|
8
|
+
})}
|
|
9
|
+
|
|
10
|
+
let(:fulfillment_inbound_shipment) {MWS::API::FulfillmentInboundShipment.new(connection)}
|
|
11
|
+
|
|
12
|
+
it "should inheritance from MWS::API::Base" do
|
|
13
|
+
MWS::API::Feeds.superclass.should eq(MWS::API::Base)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should set the right :uri" do
|
|
17
|
+
fulfillment_inbound_shipment.uri.should eq("/FulfillmentInboundShipment/2010-10-01")
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should set the right :version" do
|
|
21
|
+
fulfillment_inbound_shipment.version.should eq("2010-10-01")
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe MWS::API::FulfillmentInventory do
|
|
4
|
+
let(:connection) {MWS::Connection.new({
|
|
5
|
+
aws_access_key_id: "access key",
|
|
6
|
+
aws_secret_access_key: "secret key",
|
|
7
|
+
seller_id: "seller id"
|
|
8
|
+
})}
|
|
9
|
+
|
|
10
|
+
let(:fulfillment_inventory) {MWS::API::FulfillmentInventory.new(connection)}
|
|
11
|
+
|
|
12
|
+
it "should inheritance from MWS::API::Base" do
|
|
13
|
+
MWS::API::FulfillmentInventory.superclass.should eq(MWS::API::Base)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should set the right :uri" do
|
|
17
|
+
fulfillment_inventory.uri.should eq("/FulfillmentInventory/2010-10-01")
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should set the right :version" do
|
|
21
|
+
fulfillment_inventory.version.should eq("2010-10-01")
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe MWS::API::FulfillmentOutboundShipment do
|
|
4
|
+
let(:connection) {MWS::Connection.new({
|
|
5
|
+
aws_access_key_id: "access key",
|
|
6
|
+
aws_secret_access_key: "secret key",
|
|
7
|
+
seller_id: "seller id"
|
|
8
|
+
})}
|
|
9
|
+
|
|
10
|
+
let(:fulfillment_outbound_shipment) {MWS::API::FulfillmentOutboundShipment.new(connection)}
|
|
11
|
+
|
|
12
|
+
it "should inheritance from MWS::API::Base" do
|
|
13
|
+
MWS::API::FulfillmentOutboundShipment.superclass.should eq(MWS::API::Base)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should set the right :uri" do
|
|
17
|
+
fulfillment_outbound_shipment.uri.should eq("/FulfillmentOutboundShipment/2010-10-01")
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should set the right :version" do
|
|
21
|
+
fulfillment_outbound_shipment.version.should eq("2010-10-01")
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe MWS::API::Orders do
|
|
4
|
+
|
|
5
|
+
let(:connection) {MWS::Connection.new({
|
|
6
|
+
aws_access_key_id: "access key",
|
|
7
|
+
aws_secret_access_key: "secret key",
|
|
8
|
+
seller_id: "seller id"
|
|
9
|
+
})}
|
|
10
|
+
|
|
11
|
+
let(:orders) {MWS::API::Orders.new(connection)}
|
|
12
|
+
|
|
13
|
+
it "should inheritance from MWS::API::Base" do
|
|
14
|
+
MWS::API::Orders.superclass.should eq(MWS::API::Base)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should set the right :uri" do
|
|
18
|
+
orders.uri.should eq("/Orders/2011-01-01")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should set the right :version" do
|
|
22
|
+
orders.version.should eq("2011-01-01")
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe MWS::API::Products do
|
|
4
|
+
|
|
5
|
+
let(:connection) {MWS::Connection.new({
|
|
6
|
+
aws_access_key_id: "access key",
|
|
7
|
+
aws_secret_access_key: "secret key",
|
|
8
|
+
seller_id: "seller id"
|
|
9
|
+
})}
|
|
10
|
+
|
|
11
|
+
let(:orders) {MWS::API::Products.new(connection)}
|
|
12
|
+
|
|
13
|
+
it "should inheritance from MWS::API::Base" do
|
|
14
|
+
MWS::API::Products.superclass.should eq(MWS::API::Base)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should set the right :uri" do
|
|
18
|
+
orders.uri.should eq("/Products/2011-10-01")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should set the right :version" do
|
|
22
|
+
orders.version.should eq("2011-10-01")
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe MWS::API::Recommendations do
|
|
4
|
+
|
|
5
|
+
let(:connection) {MWS::Connection.new({
|
|
6
|
+
aws_access_key_id: "access key",
|
|
7
|
+
aws_secret_access_key: "secret key",
|
|
8
|
+
seller_id: "seller id"
|
|
9
|
+
})}
|
|
10
|
+
|
|
11
|
+
let(:recommendations) {MWS::API::Recommendations.new(connection)}
|
|
12
|
+
|
|
13
|
+
it "should inheritance from MWS::API::Base" do
|
|
14
|
+
MWS::API::Recommendations.superclass.should eq(MWS::API::Base)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should set the right :uri" do
|
|
18
|
+
recommendations.uri.should eq("/Recommendations/2013-04-01")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should set the right :version" do
|
|
22
|
+
recommendations.version.should eq("2013-04-01")
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe MWS::API::Reports do
|
|
4
|
+
|
|
5
|
+
let(:connection) {MWS::Connection.new({
|
|
6
|
+
aws_access_key_id: "access key",
|
|
7
|
+
aws_secret_access_key: "secret key",
|
|
8
|
+
seller_id: "seller id"
|
|
9
|
+
})}
|
|
10
|
+
|
|
11
|
+
let(:reports) {MWS::API::Reports.new(connection)}
|
|
12
|
+
|
|
13
|
+
it "should inheritance from MWS::API::Base" do
|
|
14
|
+
MWS::API::Reports.superclass.should eq(MWS::API::Base)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should set the right :uri" do
|
|
18
|
+
reports.uri.should eq("/")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should set the right :version" do
|
|
22
|
+
reports.version.should eq("2009-01-01")
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe MWS::API::Sellers do
|
|
4
|
+
|
|
5
|
+
let(:connection) {MWS::Connection.new({
|
|
6
|
+
aws_access_key_id: "access key",
|
|
7
|
+
aws_secret_access_key: "secret key",
|
|
8
|
+
seller_id: "seller id"
|
|
9
|
+
})}
|
|
10
|
+
|
|
11
|
+
let(:sellers) {MWS::API::Sellers.new(connection)}
|
|
12
|
+
|
|
13
|
+
it "should inheritance from MWS::API::Base" do
|
|
14
|
+
MWS::API::Sellers.superclass.should eq(MWS::API::Base)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should set the right :uri" do
|
|
18
|
+
sellers.uri.should eq("/Sellers/2011-07-01")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should set the right :version" do
|
|
22
|
+
sellers.version.should eq("2011-07-01")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should set the right :version" do
|
|
26
|
+
sellers.verb.should eq(:post)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe MWS::Connection do
|
|
4
|
+
|
|
5
|
+
let(:subject) {MWS::Connection.new({
|
|
6
|
+
aws_access_key_id: "access key",
|
|
7
|
+
aws_secret_access_key: "secret key",
|
|
8
|
+
seller_id: "seller id"
|
|
9
|
+
})}
|
|
10
|
+
|
|
11
|
+
it "should have a default host" do
|
|
12
|
+
subject.host.should eq("mws.amazonservices.com")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe "call the right apis" do
|
|
16
|
+
it "should return Feeds when calling .feeds" do
|
|
17
|
+
subject.feeds.instance_of?(MWS::API::Feeds).should == true
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should return FulfillmentInboundShipment when calling .fulfillment_inbound_shipment" do
|
|
21
|
+
subject.fulfillment_inbound_shipment.instance_of?(MWS::API::FulfillmentInboundShipment).should == true
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should return FulfillmentInventory when calling .fulfillment_inventory" do
|
|
25
|
+
subject.fulfillment_inventory.instance_of?(MWS::API::FulfillmentInventory).should == true
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "should return FulfillmentOutboundShipment when calling .fulfillment_outbound_shipment" do
|
|
29
|
+
subject.fulfillment_outbound_shipment.instance_of?(MWS::API::FulfillmentOutboundShipment).should == true
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "should return Orders when calling .orders" do
|
|
33
|
+
subject.orders.instance_of?(MWS::API::Orders).should == true
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "should return Products when calling .products" do
|
|
37
|
+
subject.products.instance_of?(MWS::API::Products).should == true
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "should return Recommendations when calling .recommendations" do
|
|
41
|
+
subject.recommendations.instance_of?(MWS::API::Recommendations).should == true
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "should return Reports when calling .reports" do
|
|
45
|
+
subject.reports.instance_of?(MWS::API::Reports).should == true
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "should return Sellers when calling .sellers" do
|
|
49
|
+
subject.sellers.instance_of?(MWS::API::Sellers).should == true
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
describe "Validations" do
|
|
54
|
+
it "should raise argument error if key, secret or seller_id is not provided" do
|
|
55
|
+
expect {MWS::Connection.new}.to raise_error(ArgumentError)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe MWS::Query do
|
|
4
|
+
let(:query_params) {{
|
|
5
|
+
verb: "GET",
|
|
6
|
+
uri: "/",
|
|
7
|
+
host: "mws-eu.amazonservices.com",
|
|
8
|
+
aws_access_key_id: "key",
|
|
9
|
+
aws_secret_access_key: "secret",
|
|
10
|
+
action: "ListOrders",
|
|
11
|
+
seller_id: "Seller ID",
|
|
12
|
+
version: "2010-01-01",
|
|
13
|
+
timestamp: "2013-01-01T00:00:00-02:00"
|
|
14
|
+
}}
|
|
15
|
+
|
|
16
|
+
let(:query) {MWS::Query.new(query_params)}
|
|
17
|
+
|
|
18
|
+
describe "Initialization" do
|
|
19
|
+
it "should create a MWS::Query object" do
|
|
20
|
+
subject.class.should eq(MWS::Query)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should have some default params" do
|
|
24
|
+
subject.uri.should eq("/")
|
|
25
|
+
subject.verb.should eq("GET")
|
|
26
|
+
subject.signature_method.should eq("HmacSHA256")
|
|
27
|
+
subject.signature_version.should eq(2)
|
|
28
|
+
subject.timestamp.class.should eq(Time)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
describe "Build query" do
|
|
33
|
+
it "should build a simple query" do
|
|
34
|
+
generated_query = "AWSAccessKeyId=key&Action=ListOrders&SellerId=Seller+ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2013-01-01T00%3A00%3A00-02%3A00&Version=2010-01-01"
|
|
35
|
+
query.build_query.should eq(generated_query)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "should build a query with a signature" do
|
|
39
|
+
query.build_query("signature").include?("Signature=signature").should eq true
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "should be a query with custom params" do
|
|
43
|
+
builded_query = MWS::Query.new(query_params.merge(params: {custom_param: "custom"})).build_query
|
|
44
|
+
builded_query.should include("CustomParam=custom")
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe "canonical string" do
|
|
49
|
+
it "should generate a canonical string" do
|
|
50
|
+
canonical = "GET\nmws-eu.amazonservices.com\n/\nAWSAccessKeyId=key&Action=ListOrders&SellerId=Seller+ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2013-01-01T00%3A00%3A00-02%3A00&Version=2010-01-01"
|
|
51
|
+
query.canonical.should eq(canonical)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
describe "signature" do
|
|
56
|
+
it "should generate a valid signature" do
|
|
57
|
+
query.signature.should eq("7XZO1dSv7BHElkee33Rt7L5PNFiBET13pg3pOWKeoo0=")
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
describe "request_uri" do
|
|
62
|
+
it "should generate a valid request uri" do
|
|
63
|
+
request_uri = "https://mws-eu.amazonservices.com/?AWSAccessKeyId=key&Action=ListOrders&SellerId=Seller+ID&Signature=7XZO1dSv7BHElkee33Rt7L5PNFiBET13pg3pOWKeoo0%3D&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2013-01-01T00%3A00%3A00-02%3A00&Version=2010-01-01"
|
|
64
|
+
query.request_uri.should eq(request_uri)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
describe MWS::Query::Helpers do
|
|
69
|
+
subject {MWS::Query::Helpers}
|
|
70
|
+
|
|
71
|
+
describe "escape_date_time_params(params={})" do
|
|
72
|
+
let(:time) {Time.new(2013, 01, 01)}
|
|
73
|
+
|
|
74
|
+
it "should escape a simple hash" do
|
|
75
|
+
subject.escape_date_time_params(time: time).should eq({time: time.iso8601})
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "should escape a nested hash" do
|
|
79
|
+
subject.escape_date_time_params(time: {time: time}).should eq({time: {time: time.iso8601}})
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
describe "camelize_keys(parmas={})" do
|
|
84
|
+
it "should camelize a simple hash" do
|
|
85
|
+
subject.camelize_keys(new_key: "value").should eq("NewKey" => "value")
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it "should camelize a nested hash" do
|
|
89
|
+
subject.camelize_keys(key: {key: "value"}).should eq("Key" => {"Key" => "value"})
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
describe "make_structured_lists" do
|
|
94
|
+
it "should return a new structured list" do
|
|
95
|
+
structured_list = subject.make_structured_lists(ids_list: {label: "Id.id", values: [1,2]})
|
|
96
|
+
structured_list.should eq("Id.id.1" => 1, "Id.id.2" => 2)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
it "should return the same hash if there's no list params" do
|
|
100
|
+
structured_list = subject.make_structured_lists(test: "test")
|
|
101
|
+
structured_list.should eq(test: "test")
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "should return a hash with structured lists and normal values" do
|
|
105
|
+
structured_list = subject.make_structured_lists(test: "test", id_list: {label: "Id.id", values: [1]})
|
|
106
|
+
structured_list.should eq(test: "test", "Id.id.1" => 1)
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|