spec.rb in rack-cerberus-0.1.6 vs spec.rb in rack-cerberus-0.2.0
- old
+ new
@@ -9,24 +9,33 @@
describe 'cerberus' do
secret_app = lambda {|env| [200, {'Content-Type'=>'text/plain'}, env['rack.session'].inspect] }
app = Rack::Session::Cookie.new(Cerberus.new(secret_app, {}) {|login,pass| [login,pass]==['mario','bros']})
req = Rack::MockRequest.new(app)
+ app_with_css = app = Rack::Session::Cookie.new(Cerberus.new(secret_app, {:css_location=>'/main.css'}) {|login,pass| [login,pass]==['mario','bros']})
+ req_with_css = Rack::MockRequest.new(app_with_css)
cookie = ''
should 'Raise if there is no session' do
no_session_app = Cerberus.new(secret_app, {}) {|login,pass| [login,pass]==['mario','bros']}
no_session_req = Rack::MockRequest.new(no_session_app)
lambda { no_session_req.get('/') }.should.raise(Cerberus::NoSessionError).message.should=='Cerberus cannot work without Session'
end
- should 'Stop request if you are not already logged in or currently successfully logging' do
+ should 'Stop request if you are not already logged in' do
res = req.get('/')
res.status.should==401
res.body.class==String
- res = req.post('/', :params => {'cerberus_login' => 'fake', 'cerberus_pass' => 'fake'})
+ res.body.should.match(/name="cerberus_login" value="login"/)
+ res.body.should.match(/name="cerberus_pass" value="pass"/)
+ end
+
+ should 'Stop request if you send wrong details and keep query values' do
+ res = req.post('/', :params => {'cerberus_login' => 'fake_login', 'cerberus_pass' => 'fake_pass'})
res.status.should==401
+ res.body.should.match(/name="cerberus_login" value="fake_login"/)
+ res.body.should.match(/name="cerberus_pass" value="fake_pass"/)
end
should 'Give access with the appropriate login and pass' do
res = req.get('/', :params => {'cerberus_login' => 'mario', 'cerberus_pass' => 'bros'})
cookie = res["Set-Cookie"]
@@ -56,8 +65,13 @@
req = Rack::MockRequest.new(Rack::URLMap.new({'/backend' => app}))
res = req.get('/backend/logout', :params => {'cerberus_login' => 'mario', 'cerberus_pass' => 'bros'})
res.status.should==302
res['Location'].should=='/backend'
+ end
+
+ should 'Use an external css file only if requested' do
+ req.get('/').body.should.not.match(/<link/)
+ req_with_css.get('/').body.should.match(/<link/)
end
end
\ No newline at end of file