Skip to content

Instantly share code, notes, and snippets.

@djanowski
Forked from alexch/current_failures.txt
Created June 17, 2009 18:15
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save djanowski/131401 to your computer and use it in GitHub Desktop.
Save djanowski/131401 to your computer and use it in GitHub Desktop.
require 'rubygems'
require "sinatra"
enable :sessions
#use Rack::Session::Cookie
#use Rack::Session::Pool
get '/' do
if session[:username]
"hi, #{session[:username]}"
else
"please log in: <form action='/login' method='get'><input name='username'><input type='submit'></form>"
end
end
get '/login' do
session[:username] = params[:username]
"logged in as #{session[:username]}"
end
get '/logout' do
old_user = session[:username]
session[:username] = nil
"logged out #{old_user}"
end
ENV['RACK_ENV'] = 'test'
require 'rubygems'
require 'rack'
require 'test/unit'
require "rack/test"
require 'login_app'
class AppTest < Test::Unit::TestCase
include Rack::Test::Methods
def app
Sinatra::Application
end
def session
last_request.env['rack.session']
end
def test_login
get '/login', :username => "barack"
assert_equal "logged in as barack", last_response.body
assert_equal "barack", session[:username]
end
def test_logout
get '/login', :username => "barack"
assert_equal "barack", session[:username]
get '/logout'
assert_nil session[:username]
assert_equal "logged out barack", last_response.body
end
def test_logout_with_session_passed_explicitly
get '/logout', {}, 'rack.session' => {:username => 'barry'}
assert_nil session[:username]
assert_equal "logged out barry", last_response.body
end
def test_main_page
get '/login', :username => "barack"
assert_equal "barack", session[:username]
assert_equal "logged in as barack", last_response.body
get '/'
assert last_response.body =~ /hi, barack/
get '/logout'
assert_equal "logged out barack", last_response.body
assert_nil session[:username]
get '/'
assert last_response.body =~ /please log in/
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment