sbsm 1.3.4 → 1.3.5
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 +4 -4
- data/History.txt +5 -0
- data/lib/sbsm/app.rb +39 -34
- data/lib/sbsm/cgi.rb +0 -1
- data/lib/sbsm/session.rb +85 -75
- data/lib/sbsm/session_store.rb +179 -0
- data/lib/sbsm/state.rb +1 -0
- data/lib/sbsm/validator.rb +4 -3
- data/lib/sbsm/version.rb +1 -1
- data/lib/sbsm/viralstate.rb +1 -1
- data/test/config.ru +11 -0
- data/test/simple_sbsm.rb +17 -15
- data/test/test_application.rb +55 -44
- data/test/test_customized_app.rb +232 -0
- data/test/test_logger.rb +0 -0
- data/test/test_session.rb +94 -61
- data/test/wrk_visit.lua +12 -0
- metadata +9 -7
- data/lib/cgi/drbsession.rb +0 -39
- data/lib/sbsm/drb.rb +0 -22
- data/lib/sbsm/drbserver.rb +0 -167
- data/test/test_drbserver.rb +0 -84
data/lib/sbsm/state.rb
CHANGED
data/lib/sbsm/validator.rb
CHANGED
|
@@ -28,7 +28,6 @@
|
|
|
28
28
|
require 'digest/md5'
|
|
29
29
|
require 'mail'
|
|
30
30
|
require 'date'
|
|
31
|
-
require 'drb/drb'
|
|
32
31
|
require 'uri'
|
|
33
32
|
require 'stringio'
|
|
34
33
|
require 'hpricot'
|
|
@@ -97,6 +96,7 @@ module SBSM
|
|
|
97
96
|
def validate(key, value)
|
|
98
97
|
value = value.pop if value.is_a? Array
|
|
99
98
|
return nil if value.nil?
|
|
99
|
+
# SBSM.info("validate #{key} #{value.class} #{value}")
|
|
100
100
|
if value.is_a?(StringIO)
|
|
101
101
|
if(@files.include?(key))
|
|
102
102
|
return validate_file(key, value)
|
|
@@ -107,7 +107,7 @@ module SBSM
|
|
|
107
107
|
p e
|
|
108
108
|
end
|
|
109
109
|
end
|
|
110
|
-
elsif(value.is_a?
|
|
110
|
+
elsif(value.is_a?(Array)) # TODO::
|
|
111
111
|
value = value[0]
|
|
112
112
|
if(@files.include?(key))
|
|
113
113
|
return validate_file(key, value)
|
|
@@ -123,7 +123,8 @@ module SBSM
|
|
|
123
123
|
end
|
|
124
124
|
def perform_validation(key, value)
|
|
125
125
|
value = value.to_s.strip
|
|
126
|
-
|
|
126
|
+
# require 'pry'; binding.pry if /event/.match(key.to_s)
|
|
127
|
+
begin
|
|
127
128
|
if(key==:event)
|
|
128
129
|
symbol = value.to_sym
|
|
129
130
|
symbol if @events.include?(symbol)
|
data/lib/sbsm/version.rb
CHANGED
data/lib/sbsm/viralstate.rb
CHANGED
data/test/config.ru
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#\ -w -p 6789
|
|
2
|
+
# 6789 must be in sync with TEST_APP_URI from test_application.rb
|
|
3
|
+
root_dir = File.expand_path(File.join(__FILE__, '..', '..'))
|
|
4
|
+
$LOAD_PATH << File.join(root_dir, 'test')
|
|
5
|
+
require 'simple_sbsm'
|
|
6
|
+
use Rack::CommonLogger, TEST_LOGGER
|
|
7
|
+
use Rack::Reloader, 0
|
|
8
|
+
use Rack::ContentLength
|
|
9
|
+
use(Rack::Static, urls: ["/doc/"])
|
|
10
|
+
app = Rack::ShowExceptions.new(Rack::Lint.new(Demo::SimpleSBSM.new(cookie_name: ::TEST_COOKIE_NAME)))
|
|
11
|
+
run app
|
data/test/simple_sbsm.rb
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
#!/usr/local/bin/ruby
|
|
2
2
|
# Niklaus Giger, November 2016
|
|
3
3
|
# A simple example on how to use SBSM with webrick
|
|
4
|
-
require 'drb/drb'
|
|
5
4
|
require 'sbsm/logger'
|
|
6
|
-
require 'sbsm/
|
|
7
|
-
require 'sbsm/validator'
|
|
8
|
-
require 'sbsm/drbserver'
|
|
9
|
-
require 'sbsm/state'
|
|
5
|
+
require 'sbsm/app'
|
|
10
6
|
|
|
11
|
-
|
|
7
|
+
root_dir = File.expand_path(File.join(__FILE__, '..', '..'))
|
|
8
|
+
TEST_LOGGER = ChronoLogger.new(File.join(root_dir, 'test.log'))
|
|
9
|
+
SBSM.logger=TEST_LOGGER
|
|
10
|
+
|
|
11
|
+
TEST_APP_URI = 'druby://localhost:9876'
|
|
12
12
|
SERVER_NAME = 'localhost:9878'
|
|
13
|
+
TEST_COOKIE_NAME = 'test-cookie'
|
|
13
14
|
|
|
14
15
|
# Some string shared with the unit test
|
|
15
16
|
HOME_HTML_CONTENT = 'Überall zu Hause' # mit UTF-8!
|
|
@@ -19,6 +20,10 @@ FEEDBACK_HTML_CONTENT = 'Give us your feedback about SBSM'
|
|
|
19
20
|
CONFIRM_HTML_CONTENT = 'Please confirm your feedback'
|
|
20
21
|
SENT_HTML_CONTENT = 'Thanks for you feedback! Hope to see you soon'
|
|
21
22
|
|
|
23
|
+
begin
|
|
24
|
+
require 'pry'
|
|
25
|
+
rescue LoadError
|
|
26
|
+
end
|
|
22
27
|
|
|
23
28
|
module Demo
|
|
24
29
|
class GlobalState < SBSM::State
|
|
@@ -45,7 +50,7 @@ module Demo
|
|
|
45
50
|
}
|
|
46
51
|
@@class_counter = 0
|
|
47
52
|
def initialize(session, user)
|
|
48
|
-
SBSM.info "HomeState #{session}
|
|
53
|
+
SBSM.info "HomeState #{session}"
|
|
49
54
|
@session = session
|
|
50
55
|
@member_counter = 0
|
|
51
56
|
super(session, user)
|
|
@@ -135,7 +140,7 @@ module Demo
|
|
|
135
140
|
def ready?
|
|
136
141
|
unless @email
|
|
137
142
|
false
|
|
138
|
-
|
|
143
|
+
elseustomized
|
|
139
144
|
true
|
|
140
145
|
end
|
|
141
146
|
end
|
|
@@ -211,18 +216,15 @@ module Demo
|
|
|
211
216
|
end
|
|
212
217
|
class Session < SBSM::Session
|
|
213
218
|
DEFAULT_STATE = HomeState
|
|
214
|
-
def initialize(key, app, validator=Validator.new)
|
|
215
|
-
SBSM.info "Session #{app}"
|
|
216
|
-
super(key, app, validator)
|
|
217
|
-
end
|
|
218
219
|
end
|
|
220
|
+
|
|
219
221
|
class SimpleSBSM < SBSM::App
|
|
220
222
|
SESSION = Session
|
|
221
|
-
attr_reader :drb_uri
|
|
222
223
|
def initialize(cookie_name: nil)
|
|
223
|
-
@drb_uri = SERVER_URI
|
|
224
224
|
SBSM.info "SimpleSBSM.new"
|
|
225
|
-
super(:
|
|
225
|
+
super(validator: Validator.new,
|
|
226
|
+
trans_handler: SBSM::TransHandler.instance,
|
|
227
|
+
session_class: SESSION,
|
|
226
228
|
cookie_name: cookie_name)
|
|
227
229
|
end
|
|
228
230
|
end
|
data/test/test_application.rb
CHANGED
|
@@ -12,58 +12,47 @@ require 'sbsm/app'
|
|
|
12
12
|
require 'sbsm/session'
|
|
13
13
|
require 'simple_sbsm'
|
|
14
14
|
require 'nokogiri'
|
|
15
|
-
begin
|
|
16
|
-
require 'pry'
|
|
17
|
-
rescue LoadError
|
|
18
|
-
end
|
|
19
15
|
|
|
20
|
-
|
|
16
|
+
RUN_ALL_TESTS=true
|
|
17
|
+
# Here we test, whether setting various class constant have the desired effect
|
|
18
|
+
|
|
19
|
+
class AppVariantTest < Minitest::Test
|
|
21
20
|
include Rack::Test::Methods
|
|
22
|
-
|
|
21
|
+
attr_reader :app
|
|
23
22
|
def setup
|
|
24
|
-
|
|
25
|
-
SBSM.info msg = "Starting #{SERVER_URI}"
|
|
26
|
-
DRb.start_service(SERVER_URI, @@myapp)
|
|
27
|
-
sleep(0.1)
|
|
28
|
-
end
|
|
29
|
-
def teardown
|
|
30
|
-
DRb.stop_service
|
|
23
|
+
@app = Demo::SimpleSBSM.new(cookie_name: TEST_COOKIE_NAME)
|
|
31
24
|
end
|
|
32
|
-
def app
|
|
33
|
-
@@myapp
|
|
34
|
-
end
|
|
35
|
-
|
|
36
25
|
def test_post_feedback
|
|
37
26
|
get '/de/page' do # needed to set cookie
|
|
38
|
-
last_response.set_cookie(
|
|
27
|
+
last_response.set_cookie(TEST_COOKIE_NAME, :value => Hash.new('anrede' => 'value2'))
|
|
39
28
|
end
|
|
40
29
|
get '/de/page/feedback' do
|
|
41
30
|
end
|
|
42
|
-
assert_equal ["_session_id",
|
|
43
|
-
skip "Cannot test cookie_input"
|
|
44
|
-
assert_equal ['anrede', 'name'],
|
|
45
|
-
assert_equal 'xxx',
|
|
31
|
+
assert_equal ["_session_id", TEST_COOKIE_NAME], last_request.cookies.keys
|
|
32
|
+
skip "Cannot content for test cookie_input"
|
|
33
|
+
assert_equal ['anrede', 'name'], @app.cookie_input.keys
|
|
34
|
+
assert_equal 'xxx', @app.persistent_user_input(:anrede)
|
|
46
35
|
|
|
47
|
-
assert_equal ['value2', 'value3'],
|
|
36
|
+
assert_equal ['value2', 'value3'], @app.cookie_input.values
|
|
48
37
|
assert_match /anrede=value2/, CGI.unescape(last_response.headers['Set-Cookie'])
|
|
49
38
|
end
|
|
50
|
-
end
|
|
39
|
+
end if RUN_ALL_TESTS
|
|
51
40
|
|
|
52
|
-
class AppTest <
|
|
41
|
+
class AppTest < Minitest::Test
|
|
53
42
|
include Rack::Test::Methods
|
|
43
|
+
attr_reader :app
|
|
54
44
|
|
|
55
45
|
def setup
|
|
56
|
-
|
|
57
|
-
SBSM.info msg = "Starting #{SERVER_URI}"
|
|
58
|
-
DRb.start_service(SERVER_URI, @@myapp)
|
|
59
|
-
sleep(0.1)
|
|
60
|
-
end
|
|
61
|
-
def teardown
|
|
62
|
-
DRb.stop_service
|
|
63
|
-
end
|
|
64
|
-
def app
|
|
65
|
-
@@myapp
|
|
46
|
+
@app = Demo::SimpleSBSM.new
|
|
66
47
|
end
|
|
48
|
+
|
|
49
|
+
def test_session_redirect
|
|
50
|
+
get '/de/page/redirect'
|
|
51
|
+
assert_equal 303,last_response.status
|
|
52
|
+
assert_equal 'feedback',last_response.headers['Location']
|
|
53
|
+
assert_match REDIRECT_HTML_CONTENT, last_response.body
|
|
54
|
+
assert_match /utf-8/i, last_response.headers['Content-Type']
|
|
55
|
+
end if RUN_ALL_TESTS
|
|
67
56
|
def test_post_feedback
|
|
68
57
|
get '/de/page' do # needed to set cookie
|
|
69
58
|
last_response.set_cookie(SBSM::Session::PERSISTENT_COOKIE_NAME, :value => Hash.new('anrede' => 'value2', 'name' => 'values'))
|
|
@@ -76,10 +65,10 @@ class AppTest < MiniTest::Unit::TestCase
|
|
|
76
65
|
skip "Cannot test cookie_input"
|
|
77
66
|
assert_match /anrede.*=.*value2/, CGI.unescape(last_response.headers['Set-Cookie'])
|
|
78
67
|
assert_match FEEDBACK_HTML_CONTENT, last_response.body
|
|
79
|
-
assert_equal ['anrede'],
|
|
80
|
-
assert_equal ['value2'],
|
|
81
|
-
assert_equal ['anrede', 'name'],
|
|
82
|
-
assert_equal ['value2', 'value3'],
|
|
68
|
+
assert_equal ['anrede'], @app.cookie_input.keys
|
|
69
|
+
assert_equal ['value2'], @app.cookie_input.values
|
|
70
|
+
assert_equal ['anrede', 'name'], @app.cookie_input.keys
|
|
71
|
+
assert_equal ['value2', 'value3'], @app.cookie_input.values
|
|
83
72
|
page = Nokogiri::HTML(last_response.body)
|
|
84
73
|
x = page.css('div')
|
|
85
74
|
skip 'We must add here an input form or we cannot continue testing'
|
|
@@ -95,7 +84,7 @@ class AppTest < MiniTest::Unit::TestCase
|
|
|
95
84
|
assert last_response.ok?
|
|
96
85
|
assert_match CONFIRM_DONE_HTML_CONTENT, last_response.body
|
|
97
86
|
end
|
|
98
|
-
|
|
87
|
+
if RUN_ALL_TESTS
|
|
99
88
|
def test_session_home
|
|
100
89
|
get '/home'
|
|
101
90
|
assert last_response.ok?
|
|
@@ -149,6 +138,7 @@ class AppTest < MiniTest::Unit::TestCase
|
|
|
149
138
|
assert_match /^request_path is \/$/, body
|
|
150
139
|
assert_match /member_counter is 1$/, body
|
|
151
140
|
assert_match HOME_HTML_CONTENT, body
|
|
141
|
+
# Getting the request a second time must increment the class, but not the member counter
|
|
152
142
|
m = /class_counter is (\d+)$/.match(body)
|
|
153
143
|
counter = m[1]
|
|
154
144
|
assert_match /class_counter is (\d+)$/, body
|
|
@@ -156,9 +146,21 @@ class AppTest < MiniTest::Unit::TestCase
|
|
|
156
146
|
assert last_response.ok?
|
|
157
147
|
body = last_response.body.clone
|
|
158
148
|
assert_match /^request_path is \/$/, body
|
|
159
|
-
|
|
160
|
-
assert_match /class_counter is #{counter.to_i+1}$/,
|
|
149
|
+
class_line = /class_counter.*/.match(body)[0]
|
|
150
|
+
assert_match /class_counter is #{counter.to_i+1}$/, class_line
|
|
151
|
+
member_line = /member_counter.*/.match(body)[0]
|
|
152
|
+
assert_match /member_counter is 1$/, member_line
|
|
153
|
+
end
|
|
154
|
+
def test_session_home_then_fr_about
|
|
155
|
+
get '/home'
|
|
156
|
+
assert last_response.ok?
|
|
157
|
+
assert_match /^request_path is \/home$/, last_response.body
|
|
158
|
+
assert_match HOME_HTML_CONTENT, last_response.body
|
|
159
|
+
get '/fr/page/about'
|
|
160
|
+
assert last_response.ok?
|
|
161
|
+
assert_match ABOUT_HTML_CONTENT, last_response.body
|
|
161
162
|
end
|
|
163
|
+
|
|
162
164
|
def test_session_home_then_fr_about
|
|
163
165
|
get '/home'
|
|
164
166
|
assert last_response.ok?
|
|
@@ -168,9 +170,18 @@ class AppTest < MiniTest::Unit::TestCase
|
|
|
168
170
|
assert last_response.ok?
|
|
169
171
|
assert_match ABOUT_HTML_CONTENT, last_response.body
|
|
170
172
|
end
|
|
173
|
+
def test_session_about_then_root
|
|
174
|
+
get '/fr/page/about'
|
|
175
|
+
assert last_response.ok?
|
|
176
|
+
assert_match ABOUT_HTML_CONTENT, last_response.body
|
|
177
|
+
get '/'
|
|
178
|
+
assert last_response.ok?
|
|
179
|
+
assert_match HOME_HTML_CONTENT, last_response.body
|
|
180
|
+
end
|
|
171
181
|
|
|
172
182
|
def test_show_stats
|
|
173
183
|
# We add it here to get some more or less useful statistics
|
|
174
|
-
Session.show_stats '/de/page'
|
|
175
|
-
end
|
|
184
|
+
::SBSM::Session.show_stats '/de/page'
|
|
185
|
+
end if RUN_ALL_TESTS
|
|
186
|
+
end
|
|
176
187
|
end
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
$: << File.dirname(__FILE__)
|
|
4
|
+
$:.unshift File.expand_path('../lib', File.dirname(__FILE__))
|
|
5
|
+
require 'minitest/autorun'
|
|
6
|
+
require 'rack/test'
|
|
7
|
+
require 'sbsm/app'
|
|
8
|
+
require 'sbsm/session'
|
|
9
|
+
require 'nokogiri'
|
|
10
|
+
require 'sbsm/state'
|
|
11
|
+
require 'simple_sbsm'
|
|
12
|
+
|
|
13
|
+
ENV['RACK_ENV'] = 'test'
|
|
14
|
+
ENV['REQUEST_METHOD'] = 'GET'
|
|
15
|
+
RUN_ALL_TESTS = true
|
|
16
|
+
|
|
17
|
+
# Overriding some stuff from the simple_sbsm
|
|
18
|
+
module Demo
|
|
19
|
+
class AboutState < GlobalState
|
|
20
|
+
DIRECT_EVENT = :about
|
|
21
|
+
def initialize(session, user)
|
|
22
|
+
SBSM.info "AboutState #{session}"
|
|
23
|
+
super(session, user)
|
|
24
|
+
session.login
|
|
25
|
+
end
|
|
26
|
+
def http_headers
|
|
27
|
+
{ "foo" => "bar" }
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
DEMO_PERSISTENT_COOKIE_NAME = 'demo-simple-sbsm'
|
|
33
|
+
class Demo::CustomizedSBSM_COOKIE < SBSM::App
|
|
34
|
+
PERSISTENT_COOKIE_NAME = DEMO_PERSISTENT_COOKIE_NAME
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
class CustomLookandfeel < SBSM::Lookandfeel
|
|
38
|
+
LANGUAGES = ['fr']
|
|
39
|
+
|
|
40
|
+
DICTIONARIES = {
|
|
41
|
+
'fr' => {
|
|
42
|
+
hello: 'Bonjour'
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
class CustomizedValidator < SBSM::Validator
|
|
48
|
+
def initialize
|
|
49
|
+
SBSM.debug "CustomizedValidator init"
|
|
50
|
+
@@visited_init = true
|
|
51
|
+
super
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def self.get_visited_init
|
|
55
|
+
defined?(@@visited_init) ? @@visited_init : :not_initialized
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
class CustomizedSession < SBSM::Session
|
|
60
|
+
DEFAULT_STATE = AboutState
|
|
61
|
+
SERVER_NAME = 'custom_server'
|
|
62
|
+
DEFAULT_ZONE = :custome_zone
|
|
63
|
+
DEFAULT_LANGUAGE = 'fr'
|
|
64
|
+
PERSISTENT_COOKIE_NAME = 'CustomizedSession-cookie'
|
|
65
|
+
LOOKANDFEEL = CustomLookandfeel
|
|
66
|
+
|
|
67
|
+
def initialize(args)
|
|
68
|
+
SBSM.debug "session args #{args}"
|
|
69
|
+
@@active_stated_visited = false
|
|
70
|
+
@@login_visited = false
|
|
71
|
+
@@visited_init = true
|
|
72
|
+
super(args)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def flavor
|
|
76
|
+
SBSM.info 'test-flavor'
|
|
77
|
+
'test-flavor'
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def active_state
|
|
81
|
+
SBSM.info '@active_stated_visited'
|
|
82
|
+
@@active_stated_visited = true
|
|
83
|
+
@active_state = super
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def flavor
|
|
87
|
+
SBSM.info 'test-flavor'
|
|
88
|
+
'test-flavor'
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def login
|
|
92
|
+
@@login_visited = true
|
|
93
|
+
SBSM.info '@login_visited'
|
|
94
|
+
'user'
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def self.get_visited_init
|
|
98
|
+
defined?(@@visited_init) ? @@visited_init : :not_initialized
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def self.get_visited_active_state
|
|
102
|
+
defined?(@@active_stated_visited) ? @@active_stated_visited : :not_initialized
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def self.get_visited_login
|
|
106
|
+
defined?(@@login_visited) ? @@login_visited : :not_initialized
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
class CustomizedSBSM < SBSM::App
|
|
111
|
+
SESSION = CustomizedSession
|
|
112
|
+
def initialize(validator: CustomizedValidator.new,
|
|
113
|
+
trans_handler: SBSM::TransHandler.instance,
|
|
114
|
+
cookie_name: nil,
|
|
115
|
+
session_class: SESSION)
|
|
116
|
+
SBSM.info "CustomizedSBSM.new SESSION #{SESSION}"
|
|
117
|
+
|
|
118
|
+
super(validator: validator,
|
|
119
|
+
trans_handler: trans_handler,
|
|
120
|
+
cookie_name: cookie_name,
|
|
121
|
+
session_class: session_class)
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
class CustomizedAppInvalidValidator < Minitest::Test
|
|
127
|
+
include Rack::Test::Methods
|
|
128
|
+
attr_reader :app
|
|
129
|
+
|
|
130
|
+
def test_raise_exeption_if_class
|
|
131
|
+
@app = Demo::CustomizedSBSM.new(validator: ::SBSM::Validator)
|
|
132
|
+
assert_raises { get '/' do end }
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def test_valid_if_validator
|
|
136
|
+
@app = Demo::CustomizedSBSM.new(validator: ::SBSM::Validator.new)
|
|
137
|
+
get '/' do end
|
|
138
|
+
end
|
|
139
|
+
end if RUN_ALL_TESTS
|
|
140
|
+
|
|
141
|
+
class CustomizedAppInvalidTranshandler < Minitest::Test
|
|
142
|
+
include Rack::Test::Methods
|
|
143
|
+
attr_reader :app
|
|
144
|
+
|
|
145
|
+
def test_raise_exeption_if_class
|
|
146
|
+
@app = Demo::CustomizedSBSM.new(trans_handler: ::SBSM::TransHandler)
|
|
147
|
+
assert_raises { get '/' do end }
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def test_valid_if_validator_instance
|
|
151
|
+
@app = Demo::CustomizedSBSM.new(trans_handler: ::SBSM::TransHandler.instance)
|
|
152
|
+
get '/' do end
|
|
153
|
+
end
|
|
154
|
+
end if RUN_ALL_TESTS
|
|
155
|
+
|
|
156
|
+
class CustomizedAppSessionValidatorLnf < Minitest::Test
|
|
157
|
+
include Rack::Test::Methods
|
|
158
|
+
attr_reader :app
|
|
159
|
+
def setup
|
|
160
|
+
@app = Demo::CustomizedSBSM.new
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
def test_customized_active_state
|
|
164
|
+
get '/' do
|
|
165
|
+
end
|
|
166
|
+
assert last_response.ok?
|
|
167
|
+
assert_equal true, Demo::CustomizedSession.get_visited_active_state, 'Should have visited customized active_state'
|
|
168
|
+
end if RUN_ALL_TESTS
|
|
169
|
+
def test_customized_session_init
|
|
170
|
+
get '/' do
|
|
171
|
+
end
|
|
172
|
+
assert last_response.ok?
|
|
173
|
+
assert_equal true, Demo::CustomizedSession.get_visited_init, 'Should have visited customized session init'
|
|
174
|
+
end if RUN_ALL_TESTS
|
|
175
|
+
|
|
176
|
+
def test_customized_validator
|
|
177
|
+
# @app = Demo::CustomizedSBSM.new(validator: Demo::CustomizedValidator.new)
|
|
178
|
+
get '/' do
|
|
179
|
+
end
|
|
180
|
+
assert last_response.ok?
|
|
181
|
+
assert_equal true, Demo::CustomizedValidator.get_visited_init, 'Should have initialized customized validator'
|
|
182
|
+
end if RUN_ALL_TESTS
|
|
183
|
+
|
|
184
|
+
def test_customized_login
|
|
185
|
+
get '/fr/page/about' do # we patched to force a login
|
|
186
|
+
end
|
|
187
|
+
assert last_response.ok?
|
|
188
|
+
assert_equal true, Demo::CustomizedSession.get_visited_login, 'Should have visited customized login'
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
def test_customized_http_header
|
|
192
|
+
get '/fr/page/about' do # we patched to force a login
|
|
193
|
+
end
|
|
194
|
+
assert last_response.ok?
|
|
195
|
+
assert_equal 'bar', last_response.headers['foo']
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
def test_process_state
|
|
199
|
+
get '/fr/page/home' do # we patched to force a login
|
|
200
|
+
end
|
|
201
|
+
assert_equal Demo::AboutState, @app.last_session.active_state.class
|
|
202
|
+
assert_equal(1, @app.last_session.attended_states.size)
|
|
203
|
+
get '/fr/page/feedback' do # we patched to force a login
|
|
204
|
+
end
|
|
205
|
+
assert_equal(1, @app.last_session.attended_states.size)
|
|
206
|
+
assert_equal Demo::FeedbackState, @app.last_session.active_state.class
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
def test_customized_cookie_name
|
|
210
|
+
@app = Demo::CustomizedSBSM.new(cookie_name: TEST_COOKIE_NAME)
|
|
211
|
+
get '/' do
|
|
212
|
+
end
|
|
213
|
+
assert last_response.ok?
|
|
214
|
+
# TEST_COOKIE_NAME set via param to app
|
|
215
|
+
assert_equal TEST_COOKIE_NAME, last_response.get_header('Set-Cookie').split("\n").first.split('=').first
|
|
216
|
+
end if RUN_ALL_TESTS
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
class CustomizedAppCookieName < Minitest::Test
|
|
220
|
+
include Rack::Test::Methods
|
|
221
|
+
attr_reader :app
|
|
222
|
+
def setup
|
|
223
|
+
@app = SBSM::App.new(cookie_name: Demo::DEMO_PERSISTENT_COOKIE_NAME)
|
|
224
|
+
end
|
|
225
|
+
def test_customized_cookie_name
|
|
226
|
+
get '/' do
|
|
227
|
+
end
|
|
228
|
+
assert last_response.ok?
|
|
229
|
+
assert_equal Demo::DEMO_PERSISTENT_COOKIE_NAME, last_response.get_header('Set-Cookie').split("\n").first.split('=').first
|
|
230
|
+
end if RUN_ALL_TESTS
|
|
231
|
+
end
|
|
232
|
+
|