spec/sucker/request_spec.rb in sucker-1.2.0 vs spec/sucker/request_spec.rb in sucker-1.3.0.pre
- old
+ new
@@ -1,275 +1,92 @@
-require "spec_helper"
+require 'spec_helper'
module Sucker
describe Request do
- use_vcr_cassette "spec/sucker/request", :record => :new_episodes
+ use_vcr_cassette 'spec/sucker/request', :record => :new_episodes
let(:worker) do
Sucker.new(
:locale => :us,
- :key => "key",
- :secret => "secret")
+ :key => 'key',
+ :secret => 'secret')
end
- describe "#<<" do
- it "merges a hash into the existing parameters" do
- worker << { "foo" => "bar" }
- worker.parameters["foo"].should eql "bar"
+ describe '#<<' do
+ it 'merges a hash into the existing parameters' do
+ worker << { 'foo' => 'bar' }
+ worker.parameters['foo'].should eql 'bar'
end
end
- describe "#version=" do
- it "sets the Amazon API version" do
- worker.version = "foo"
- worker.parameters["Version"].should eql "foo"
- end
- end
-
- describe "#associate_tag" do
- it "returns the associate tag for the current locale" do
- worker.instance_variable_set(:@associate_tags, { :us => 'foo-bar'})
-
- worker.associate_tag.should eql 'foo-bar'
- end
-
- it "returns blank if no associate tag is set for the current locale" do
- worker.associate_tag.should be_blank
- end
- end
-
- describe "#associate_tag=" do
- it "sets the associate tag for the current locale" do
- worker.associate_tag = "foo-bar"
- associate_tags = worker.instance_variable_get(:@associate_tags)
-
- associate_tags.keys.size.should eql 1
- associate_tags[:us].should eql 'foo-bar'
- worker.associate_tag.should eql 'foo-bar'
- end
- end
-
- describe "#associate_tags=" do
- it "sets associate tags for the locales" do
- tags = {
- :us => 'foo',
- :uk => 'bar',
- :de => 'baz',
- :ca => 'foo',
- :fr => 'bar',
- :jp => 'baz' }
- worker.associate_tags = tags
-
- worker.instance_variable_get(:@associate_tags).should eql tags
- end
- end
-
- describe "#curl_opts" do
- it "returns options for curl" do
- worker.curl_opts.should be_an_instance_of Hash
- end
-
- context "when given a block" do
-
- it "yields options for curl" do
- worker.curl_opts { |c| c.interface = "eth1" }
-
- worker.curl_opts[:interface].should eql "eth1"
- end
- end
- end
-
- describe "#get" do
- context "when no argument is passed" do
- it "returns a response" do
+ describe '#get' do
+ context 'when no argument is passed' do
+ it 'returns a response' do
worker.get.class.ancestors.should include Response
end
-
- it "sets options on curl" do
- easy = mock
- easy.should_receive(:interface=).once.with("eth1")
- Curl::Easy.stub!(:perform).and_yield(easy)
- Response.should_receive(:new).once
-
- worker.curl_opts { |c| c.interface = 'eth1' }
- worker.get
- end
end
-
- context "when one argument is passed" do
- context "when the argument is is `:all`" do
- it "queries all locales" do
- locales = worker.send(:locales)
- worker.should_receive(:get_multi).with(locales)
- worker.get(:all)
- end
- end
-
- context "when the argument is not `:all`" do
- it "sets current locale to to the argument" do
- worker.should_receive(:locale=).with(:uk)
- worker.get(:uk)
- end
-
- it "calls itself with no argument" do
- worker.class.send :alias_method, :get_original, :get
- worker.should_receive(:get).with(no_args())
- worker.get_original(:uk)
- end
- end
- end
-
- context "when multiple arguments are passed" do
- it "queries multiple locales" do
- worker.should_receive(:get_multi).with([:us, :uk])
- worker.get(:us, :uk)
- end
- end
end
- describe "#key" do
- it "returns the Amazon AWS access key for the current locale" do
- worker.instance_variable_set(:@keys, { :us => 'foo' })
-
- worker.key.should eql 'foo'
+ describe '#version=' do
+ it 'sets the Amazon API version' do
+ worker.version = 'foo'
+ worker.parameters['Version'].should eql 'foo'
end
-
- it "raises an argument error if key is missing" do
- worker.instance_variable_get(:@keys)[:us] = nil
- expect do
- worker.key
- end.to raise_error 'AWS access key missing'
- end
end
- describe "#key=" do
- it "sets a global Amazon AWS access key" do
- worker.key = "foo"
- keys = worker.instance_variable_get(:@keys)
-
- keys.size.should eql Request::HOSTS.size
- keys.values.uniq.should eql ["foo"]
- end
- end
-
- describe "#keys=" do
- it "sets distinct Amazon AWS access keys for the locales" do
- keys = {
- :us => 'foo',
- :uk => 'bar',
- :de => 'baz',
- :ca => 'foo',
- :fr => 'bar',
- :jp => 'baz' }
- worker.keys = keys
-
- worker.instance_variable_get(:@keys).should eql keys
- end
- end
-
- describe "#locale" do
- it "returns the current locale" do
- worker.locale.should eql :us
- end
-
- it "raises an argument error if locale is not set" do
- worker.instance_variable_set(:@locale, nil)
- expect do
- worker.locale
- end.to raise_error 'Locale not set'
- end
- end
-
- describe "#locale=" do
- it "sets the current locale" do
- worker.locale= :uk
- worker.locale.should eql :uk
- end
-
- it "raises an argument error if locale is invalid" do
- expect do
- worker.locale= :br
- end.to raise_error 'Invalid locale'
- end
- end
-
- # private
-
- describe "#build_query" do
+ describe '#build_query' do
let(:query) do
worker.send(:build_query)
end
- it "canonicalizes query" do
- query.should match /Service=([^&]+)&Timestamp=([^&]+)&Version=([^&]+)/
+ it 'canonicalizes query' do
+ query.should match /AWSAccessKeyId=key&AssociateTag=&Service=([^&]+)&Timestamp=([^&]+)&Version=([^&]+)/
end
- it "includes a timestamp" do
+ it 'includes a timestamp' do
query.should include 'Timestamp'
end
- it "sorts query" do
- worker.parameters["A"] = "foo"
+ it 'sorts query' do
+ worker.parameters['A'] = 'foo'
query.should match /^A=foo/
end
end
- describe "#build_signed_query" do
+ describe '#build_signed_query' do
let(:query) { worker.send(:build_signed_query) }
- it "includes the key for the current locale" do
+ it 'includes the key for the current locale' do
worker.key = 'foo'
query.should include 'AWSAccessKeyId=foo'
end
- it "includes the associate tag for the current locale" do
+ it 'includes the associate tag for the current locale' do
worker.associate_tag = 'foo'
query.should include 'AssociateTag=foo'
end
- it "returns a signed query string" do
+ it 'returns a signed query string' do
query = worker.send :build_signed_query
query.should include 'Signature='
end
end
- describe "#escape" do
- it "URL-encodes a string" do
- worker.send(:escape, 'foo,bar').should eql "foo%2Cbar"
+ describe '#escape' do
+ it 'URL-encodes a string' do
+ worker.send(:escape, 'foo,bar').should eql 'foo%2Cbar'
end
end
- describe "#get_multi" do
- it "returns an array of responses" do
- responses = worker.send(:get_multi, [:us, :uk])
-
- responses.should be_an_instance_of Array
- responses.each { |resp| resp.should be_an_instance_of Response }
+ describe '#host' do
+ it 'returns a host' do
+ worker.locale = :fr
+ worker.send(:host).should eql 'ecs.amazonaws.fr'
end
-
- context "when given a block" do
- it "yields responses" do
- locales = worker.send(:locales)
- count = 0
- worker.send(:get_multi, locales) do |resp|
- resp.should be_an_instance_of Response
- count += 1
- end
-
- count.should eql locales.size
- end
- end
end
- describe "#host" do
- it "returns a host" do
- worker.locale = "fr"
- worker.send(:host).should eql "ecs.amazonaws.fr"
- end
- end
-
- describe "#uri" do
- it "returns the URI with which to query Amazon" do
+ describe '#uri' do
+ it 'returns the URI with which to query Amazon' do
worker.send(:uri).should be_an_instance_of URI::HTTP
end
end
end
end