mws-rb 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|