shopify_app_lrb3 5.0.0
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.
- checksums.yaml +7 -0
- data/.gitignore +7 -0
- data/CHANGELOG +5 -0
- data/Gemfile +4 -0
- data/LICENSE +19 -0
- data/README.md +182 -0
- data/RELEASING +16 -0
- data/Rakefile +11 -0
- data/install.rb +25 -0
- data/lib/generators/shopify_app/README +23 -0
- data/lib/generators/shopify_app/USAGE +22 -0
- data/lib/generators/shopify_app/shopify_app_generator.rb +69 -0
- data/lib/generators/shopify_app/templates/app/assets/images/favicon.png +0 -0
- data/lib/generators/shopify_app/templates/app/assets/images/grid-18px.png +0 -0
- data/lib/generators/shopify_app/templates/app/assets/images/shopify-114.png +0 -0
- data/lib/generators/shopify_app/templates/app/assets/images/shopify-57.png +0 -0
- data/lib/generators/shopify_app/templates/app/assets/images/shopify-72.png +0 -0
- data/lib/generators/shopify_app/templates/app/assets/images/shopify.png +0 -0
- data/lib/generators/shopify_app/templates/app/assets/javascripts/application.js +15 -0
- data/lib/generators/shopify_app/templates/app/assets/stylesheets/application.css +10 -0
- data/lib/generators/shopify_app/templates/app/assets/stylesheets/imports.css.less +5 -0
- data/lib/generators/shopify_app/templates/app/assets/stylesheets/shopify_app.css.scss +150 -0
- data/lib/generators/shopify_app/templates/app/assets/stylesheets/shopify_app_buttons.css.less +77 -0
- data/lib/generators/shopify_app/templates/app/controllers/application_controller.rb +13 -0
- data/lib/generators/shopify_app/templates/app/controllers/home_controller.rb +18 -0
- data/lib/generators/shopify_app/templates/app/controllers/sessions_controller.rb +52 -0
- data/lib/generators/shopify_app/templates/app/helpers/home_helper.rb +9 -0
- data/lib/generators/shopify_app/templates/app/helpers/login_helper.rb +3 -0
- data/lib/generators/shopify_app/templates/app/helpers/tabs_helper.rb +11 -0
- data/lib/generators/shopify_app/templates/app/views/home/design.html.erb +3542 -0
- data/lib/generators/shopify_app/templates/app/views/home/index.html.erb +168 -0
- data/lib/generators/shopify_app/templates/app/views/home/welcome.html.erb +110 -0
- data/lib/generators/shopify_app/templates/app/views/layouts/application.html.erb +79 -0
- data/lib/generators/shopify_app/templates/app/views/sessions/new.html.erb +21 -0
- data/lib/generators/shopify_app/templates/config/initializers/omniauth.rb +14 -0
- data/lib/generators/shopify_app/templates/config/initializers/shopify_session_repository.rb +21 -0
- data/lib/generators/shopify_app/templates/public/404.html +40 -0
- data/lib/generators/shopify_app/templates/public/422.html +40 -0
- data/lib/generators/shopify_app/templates/public/500.html +40 -0
- data/lib/generators/shopify_app/templates/public/favicon.png +0 -0
- data/lib/generators/shopify_app/templates/public/shopify-114.png +0 -0
- data/lib/generators/shopify_app/templates/public/shopify-57.png +0 -0
- data/lib/generators/shopify_app/templates/public/shopify-72.png +0 -0
- data/lib/shopify_app.rb +20 -0
- data/lib/shopify_app/configuration.rb +46 -0
- data/lib/shopify_app/in_memory_session_store.rb +25 -0
- data/lib/shopify_app/login_protection.rb +39 -0
- data/lib/shopify_app/railtie.rb +17 -0
- data/lib/shopify_app/shopify_session_repository.rb +22 -0
- data/lib/shopify_app/version.rb +3 -0
- data/shipit.rubygems.yml +1 -0
- data/shopify_app.gemspec +30 -0
- data/test/config/development_config_file.yml +7 -0
- data/test/config/empty_config_file.yml +1 -0
- data/test/config/other_config_file.yml +3 -0
- data/test/config/shopify_app.yml +3 -0
- data/test/lib/shopify_app/configuration_test.rb +78 -0
- data/test/lib/shopify_app/in_memory_session_store_test.rb +35 -0
- data/test/lib/shopify_app/shopify_session_repository_test.rb +57 -0
- data/test/test_helper.rb +5 -0
- metadata +214 -0
@@ -0,0 +1,40 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>422 Error: Your change was rejected</title>
|
5
|
+
|
6
|
+
<style>
|
7
|
+
.container { text-align:center;}
|
8
|
+
.navbar .brand { float:none;}
|
9
|
+
</style>
|
10
|
+
</head>
|
11
|
+
|
12
|
+
<body>
|
13
|
+
<div class="navbar navbar-fixed-top">
|
14
|
+
<div class="navbar-inner">
|
15
|
+
<div class="container">
|
16
|
+
<a href="/" class="brand">Shopify Demo App</a>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<div class="container">
|
22
|
+
<div class="content">
|
23
|
+
|
24
|
+
<div class="page-header">
|
25
|
+
<h1>422 Error</h1>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<h3><i class="icon-warning-sign" style="margin-top:6px; opacity:.5;"></i> Sorry, the change you requested was rejected.</h3>
|
29
|
+
<p class="muted">Did you try to change something you don't have access to?</p>
|
30
|
+
|
31
|
+
<p><button type="button" value ="back" onClick="window.history.back();" class='btn btn-primary'><i class="icon-chevron-left" style="opacity:.25"></i> Back to the app</button></p>
|
32
|
+
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<footer>
|
36
|
+
<p>A Shopify app by (company name here)</p>
|
37
|
+
</footer>
|
38
|
+
</div> <!-- /container -->
|
39
|
+
</body>
|
40
|
+
</html>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>500 Error: Something went horribly wrong</title>
|
5
|
+
|
6
|
+
<style>
|
7
|
+
.container { text-align:center;}
|
8
|
+
.navbar .brand { float:none;}
|
9
|
+
</style>
|
10
|
+
</head>
|
11
|
+
|
12
|
+
<body>
|
13
|
+
<div class="navbar navbar-fixed-top">
|
14
|
+
<div class="navbar-inner">
|
15
|
+
<div class="container">
|
16
|
+
<a href="/" class="brand">Shopify Demo App</a>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<div class="container">
|
22
|
+
<div class="content">
|
23
|
+
|
24
|
+
<div class="page-header">
|
25
|
+
<h1>AH! 500 Error!</h1>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<h3><i class="icon-warning-sign" style="margin-top:6px; opacity:.5;"></i> We're sorry, but something went wrong.</h3>
|
29
|
+
<p class="muted">The developer of this app has been notified.</p>
|
30
|
+
|
31
|
+
<p><button type="button" value ="back" onClick="window.history.back();" class='btn btn-primary'><i class="icon-chevron-left" style="opacity:.25"></i> Back to the app</button></p>
|
32
|
+
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<footer>
|
36
|
+
<p>A Shopify app by (company name here)</p>
|
37
|
+
</footer>
|
38
|
+
</div> <!-- /container -->
|
39
|
+
</body>
|
40
|
+
</html>
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/lib/shopify_app.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'shopify_api'
|
2
|
+
require 'omniauth-shopify-oauth2'
|
3
|
+
|
4
|
+
module ShopifyApp
|
5
|
+
|
6
|
+
def self.configuration
|
7
|
+
@configuration ||= ShopifyApp::Configuration.new
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.setup_session
|
11
|
+
ShopifyAPI::Session.setup(:api_key => ShopifyApp.configuration.api_key, :secret => ShopifyApp.configuration.secret)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
require 'shopify_app/shopify_session_repository'
|
16
|
+
require 'shopify_app/in_memory_session_store'
|
17
|
+
require 'shopify_app/login_protection'
|
18
|
+
require 'shopify_app/configuration'
|
19
|
+
require 'shopify_app/railtie'
|
20
|
+
require 'shopify_app/version'
|
@@ -0,0 +1,46 @@
|
|
1
|
+
class ShopifyApp::Configuration
|
2
|
+
VALID_KEYS = [:api_key, :secret]
|
3
|
+
attr_writer *VALID_KEYS
|
4
|
+
|
5
|
+
def initialize(params={})
|
6
|
+
self.params = default_params.merge(params)
|
7
|
+
end
|
8
|
+
|
9
|
+
VALID_KEYS.each do |meth|
|
10
|
+
define_method meth do
|
11
|
+
meth = meth.to_s
|
12
|
+
config_from_env(meth) || config_from_rails(meth) || config_from_file(meth) || ''
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
attr_accessor :params
|
19
|
+
|
20
|
+
def config_from_env(meth)
|
21
|
+
ENV["SHOPIFY_APP_#{meth.upcase}"]
|
22
|
+
end
|
23
|
+
|
24
|
+
def config_from_rails(meth)
|
25
|
+
instance_variable_get("@#{meth}")
|
26
|
+
end
|
27
|
+
|
28
|
+
def config_from_file(meth)
|
29
|
+
@config_file ||= load_config
|
30
|
+
@config_file[Rails.env].try(:[], meth) || @config_file['common'].try(:[], meth)
|
31
|
+
end
|
32
|
+
|
33
|
+
def load_config
|
34
|
+
File.exist?(config_filepath) ? YAML.load_file(config_filepath) : {}
|
35
|
+
end
|
36
|
+
|
37
|
+
def config_filepath
|
38
|
+
params[:config_file]
|
39
|
+
end
|
40
|
+
|
41
|
+
def default_params
|
42
|
+
{
|
43
|
+
config_file: File.join(Rails.root, 'config', 'shopify_app.yml')
|
44
|
+
}
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# WARNING - This really only works for development, see README for more details
|
2
|
+
class InMemorySessionStore
|
3
|
+
class EnvironmentError < StandardError; end
|
4
|
+
|
5
|
+
def self.retrieve(id)
|
6
|
+
repo[id]
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.store(session)
|
10
|
+
id = SecureRandom.uuid
|
11
|
+
repo[id] = session
|
12
|
+
id
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.clear
|
16
|
+
@@repo = nil
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.repo
|
20
|
+
if Rails.env.production?
|
21
|
+
raise EnvironmentError.new("Cannot use InMemorySessionStore in a Production environment")
|
22
|
+
end
|
23
|
+
@@repo ||= {}
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module ShopifyApp::LoginProtection
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
included do
|
5
|
+
rescue_from ActiveResource::UnauthorizedAccess, :with => :close_session
|
6
|
+
end
|
7
|
+
|
8
|
+
def shopify_session
|
9
|
+
if shop_session
|
10
|
+
begin
|
11
|
+
# session[:shopify] set in LoginController#show
|
12
|
+
ShopifyAPI::Base.activate_session(shop_session)
|
13
|
+
yield
|
14
|
+
ensure
|
15
|
+
ShopifyAPI::Base.clear_session
|
16
|
+
end
|
17
|
+
else
|
18
|
+
session[:return_to] = request.fullpath if request.get?
|
19
|
+
redirect_to login_path(shop: params[:shop])
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def shop_session
|
24
|
+
ShopifySessionRepository.retrieve(session[:shopify])
|
25
|
+
end
|
26
|
+
|
27
|
+
def login_again_if_different_shop
|
28
|
+
if shop_session && params[:shop] && params[:shop].is_a?(String) && shop_session.url != params[:shop]
|
29
|
+
redirect_to login_path(shop: params[:shop])
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
protected
|
34
|
+
|
35
|
+
def close_session
|
36
|
+
session[:shopify] = nil
|
37
|
+
redirect_to login_path
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'rails'
|
2
|
+
|
3
|
+
class ShopifyApp::Railtie < ::Rails::Railtie
|
4
|
+
|
5
|
+
config.before_configuration do
|
6
|
+
config.shopify = ShopifyApp.configuration
|
7
|
+
end
|
8
|
+
|
9
|
+
initializer "shopify_app.action_controller_integration" do
|
10
|
+
ActionController::Base.send :include, ShopifyApp::LoginProtection
|
11
|
+
ActionController::Base.send :helper_method, :shop_session
|
12
|
+
end
|
13
|
+
|
14
|
+
initializer "shopify_app.setup_session" do
|
15
|
+
ShopifyApp.setup_session
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class ShopifySessionRepository
|
2
|
+
class ConfigurationError < StandardError; end
|
3
|
+
|
4
|
+
def self.storage=(storage)
|
5
|
+
@@storage = storage
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.retrieve(id)
|
9
|
+
validate
|
10
|
+
@@storage.retrieve(id)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.store(session)
|
14
|
+
validate
|
15
|
+
@@storage.store(session)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.validate
|
19
|
+
raise ConfigurationError.new("ShopifySessionRepository.store is not configured!") unless @@storage
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
data/shipit.rubygems.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# using the default shipit config
|
data/shopify_app.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "shopify_app/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "shopify_app_lrb3"
|
7
|
+
s.version = ShopifyApp::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.author = "Shopify"
|
10
|
+
s.email = ["gareth@bencrudo.com"]
|
11
|
+
s.homepage = "http://www.shopify.com/developers"
|
12
|
+
s.summary = %q{Fork of shopify_app upgrade to Less Rails Bootstrap 3.1.1}
|
13
|
+
s.description = %q{Required Boostrap 3 so cloned and upgraded to Less Rails Bootstrap 3.1.1}
|
14
|
+
|
15
|
+
s.rubyforge_project = "shopify-api"
|
16
|
+
|
17
|
+
s.add_runtime_dependency('rails', '>= 3.1', '< 5.0')
|
18
|
+
s.add_runtime_dependency('shopify_api', '~> 3.2.0')
|
19
|
+
s.add_runtime_dependency('omniauth-shopify-oauth2', '~> 1.1.4')
|
20
|
+
s.add_runtime_dependency('less-rails-bootstrap', '~> 3.1.1')
|
21
|
+
|
22
|
+
s.add_development_dependency('rake')
|
23
|
+
s.add_development_dependency('minitest')
|
24
|
+
s.add_development_dependency('mocha')
|
25
|
+
|
26
|
+
s.files = `git ls-files`.split("\n")
|
27
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
28
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
29
|
+
s.require_paths = ["lib"]
|
30
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
common:
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ConfigurationTest < Minitest::Test
|
4
|
+
def setup
|
5
|
+
Rails.stubs(:env).returns('development')
|
6
|
+
Rails.stubs(:root).returns(File.expand_path('../..', File.dirname(__FILE__)))
|
7
|
+
end
|
8
|
+
|
9
|
+
def config_file(filename)
|
10
|
+
filepath = File.expand_path("../../config/#{filename}", File.dirname(__FILE__))
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_define_method_creates_readers
|
14
|
+
config = ShopifyApp::Configuration.new
|
15
|
+
config.respond_to?(:api_key)
|
16
|
+
config.respond_to?(:secret)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_defaults_to_empty_string
|
20
|
+
config = ShopifyApp::Configuration.new(config_file: config_file('empty_config_file.yml'))
|
21
|
+
|
22
|
+
assert_equal '', config.api_key
|
23
|
+
assert_equal '', config.secret
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_environment_has_precedence_over_common
|
27
|
+
config = ShopifyApp::Configuration.new(config_file: config_file('development_config_file.yml'))
|
28
|
+
|
29
|
+
assert_equal 'development key', config.api_key
|
30
|
+
assert_equal 'development secret', config.secret
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_rails_has_precedence_over_environment
|
34
|
+
config = ShopifyApp::Configuration.new(config_file: config_file('development_config_file.yml'))
|
35
|
+
|
36
|
+
assert_equal 'development key', config.api_key
|
37
|
+
assert_equal 'development secret', config.secret
|
38
|
+
|
39
|
+
config.api_key = 'rails key'
|
40
|
+
config.secret = 'rails secret'
|
41
|
+
|
42
|
+
assert_equal 'rails key', config.api_key
|
43
|
+
assert_equal 'rails secret', config.secret
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_env_has_precedence_over_rails
|
47
|
+
config = ShopifyApp::Configuration.new
|
48
|
+
config.api_key = 'rails key'
|
49
|
+
config.secret = 'rails secret'
|
50
|
+
|
51
|
+
assert_equal 'rails key', config.api_key
|
52
|
+
assert_equal 'rails secret', config.secret
|
53
|
+
|
54
|
+
ENV.expects(:[]).with('SHOPIFY_APP_API_KEY').returns('env key')
|
55
|
+
ENV.expects(:[]).with('SHOPIFY_APP_SECRET').returns('env secret')
|
56
|
+
|
57
|
+
assert_equal 'env key', config.api_key
|
58
|
+
assert_equal 'env secret', config.secret
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_reads_config_from_default_config_file
|
62
|
+
config = ShopifyApp::Configuration.new
|
63
|
+
assert_equal 'api key from default file', config.api_key
|
64
|
+
assert_equal 'secret from default file', config.secret
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_reads_config_from_specified_config_file
|
68
|
+
config = ShopifyApp::Configuration.new(config_file: config_file('other_config_file.yml'))
|
69
|
+
assert_equal 'api key from other file', config.api_key
|
70
|
+
assert_equal 'secret from other file', config.secret
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_handles_missing_config_file
|
74
|
+
config = ShopifyApp::Configuration.new(config_file: config_file('missing_config_file.yml'))
|
75
|
+
assert_equal '', config.api_key
|
76
|
+
assert_equal '', config.secret
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class InMemorySessionStoreTest < Minitest::Test
|
4
|
+
def teardown
|
5
|
+
InMemorySessionStore.clear
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_storing_a_session
|
9
|
+
uuid = InMemorySessionStore.store('something')
|
10
|
+
assert_equal 'something', InMemorySessionStore.repo[uuid]
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_retrieving_a_session
|
14
|
+
InMemorySessionStore.repo['abra'] = 'something'
|
15
|
+
assert_equal 'something', InMemorySessionStore.retrieve('abra')
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_clearing_the_store
|
19
|
+
uuid = InMemorySessionStore.store('data')
|
20
|
+
assert_equal 'data', InMemorySessionStore.retrieve(uuid)
|
21
|
+
InMemorySessionStore.clear
|
22
|
+
assert !InMemorySessionStore.retrieve(uuid), 'The sessions should have been removed'
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_it_should_raise_when_the_environment_is_not_valid
|
26
|
+
Rails.env.stubs(:production?).returns(true)
|
27
|
+
assert_raises InMemorySessionStore::EnvironmentError do
|
28
|
+
InMemorySessionStore.store('data')
|
29
|
+
end
|
30
|
+
|
31
|
+
assert_raises InMemorySessionStore::EnvironmentError do
|
32
|
+
InMemorySessionStore.retrieve('abracadabra')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestSessionStore
|
4
|
+
attr_reader :storage
|
5
|
+
def initialize
|
6
|
+
@storage = []
|
7
|
+
end
|
8
|
+
|
9
|
+
def retrieve(id)
|
10
|
+
storage[id]
|
11
|
+
end
|
12
|
+
|
13
|
+
def store(session)
|
14
|
+
id = storage.length
|
15
|
+
storage[id] = session
|
16
|
+
id
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class ShopifySessionRepositoryTest < Minitest::Test
|
21
|
+
attr_reader :session_store, :session
|
22
|
+
def setup
|
23
|
+
@session_store = TestSessionStore.new
|
24
|
+
@session = ShopifyAPI::Session.new('shop.myshopify.com', 'abracadabra')
|
25
|
+
ShopifySessionRepository.storage = session_store
|
26
|
+
end
|
27
|
+
|
28
|
+
def teardown
|
29
|
+
ShopifySessionRepository.storage = nil
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_adding_a_session_to_the_repository
|
33
|
+
assert_equal 0, ShopifySessionRepository.store(session)
|
34
|
+
assert_equal session, session_store.retrieve(0)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_retrieving_a_session_from_the_repository
|
38
|
+
session_store.storage[9] = session
|
39
|
+
assert_equal session, ShopifySessionRepository.retrieve(9)
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_retrieving_a_session_for_an_id_that_does_not_exist
|
43
|
+
ShopifySessionRepository.store(session)
|
44
|
+
assert !ShopifySessionRepository.retrieve(100), "The session with id 100 should not exist in the Repository"
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_retrieving_a_session_for_a_misconfigured_shops_repository
|
48
|
+
ShopifySessionRepository.storage = nil
|
49
|
+
assert_raises ShopifySessionRepository::ConfigurationError do
|
50
|
+
ShopifySessionRepository.retrieve(0)
|
51
|
+
end
|
52
|
+
|
53
|
+
assert_raises ShopifySessionRepository::ConfigurationError do
|
54
|
+
ShopifySessionRepository.store(session)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|