12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- require 'test_helper'
- class SessionTest < Test::Unit::TestCase
-
- context "Session" do
- should "not be valid without a url" do
- session = ShopifyAPI::Session.new(nil, "any-token")
- assert_not session.valid?
- end
-
- should "not be valid without token" do
- session = ShopifyAPI::Session.new("testshop.myshopify.com")
- assert_not session.valid?
- end
- should "be valid with any token and any url" do
- session = ShopifyAPI::Session.new("testshop.myshopify.com", "any-token")
- assert session.valid?
- end
-
- should "not raise error without params" do
- assert_nothing_raised do
- session = ShopifyAPI::Session.new("testshop.myshopify.com", "any-token")
- end
- end
- should "raise error if params passed but signature omitted" do
- assert_raises(RuntimeError) do
- session = ShopifyAPI::Session.new("testshop.myshopify.com", "any-token", {'foo' => 'bar'})
- end
- end
- should "setup api_key and secret for all sessions" do
- ShopifyAPI::Session.setup(:api_key => "My test key", :secret => "My test secret")
- assert_equal "My test key", ShopifyAPI::Session.api_key
- assert_equal "My test secret", ShopifyAPI::Session.secret
- end
-
- should "use 'https' protocol by default for all sessions" do
- assert_equal 'https', ShopifyAPI::Session.protocol
- end
- should "#temp reset ShopifyAPI::Base.site to original value" do
-
- ShopifyAPI::Session.setup(:api_key => "key", :secret => "secret")
- session1 = ShopifyAPI::Session.new('fakeshop.myshopify.com', 'token1')
- ShopifyAPI::Base.activate_session(session1)
- ShopifyAPI::Session.temp("testshop.myshopify.com", "any-token") {
- @assigned_site = ShopifyAPI::Base.site
- }
- assert_equal 'https://testshop.myshopify.com/admin', @assigned_site.to_s
- assert_equal 'https://fakeshop.myshopify.com/admin', ShopifyAPI::Base.site.to_s
- end
- should "return site for session" do
- session = ShopifyAPI::Session.new("testshop.myshopify.com", "any-token")
- assert_equal "https://testshop.myshopify.com/admin", session.site
- end
- should "raise error if signature does not match expected" do
- ShopifyAPI::Session.secret = 'secret'
- params = {:foo => 'hello', :foo => 'world', :timestamp => Time.now}
- sorted_params = params.except(:signature, :action, :controller).collect{|k,v|"#{k}=#{v}"}.sort.join
- signature = Digest::MD5.hexdigest(ShopifyAPI::Session.secret + sorted_params)
- session = ShopifyAPI::Session.new("testshop.myshopify.com", "any-token", params.merge(:signature => signature))
- end
- end
- end
|