Skip to content

Commit

Permalink
switch to modular app in tests
Browse files Browse the repository at this point in the history
  • Loading branch information
vast committed Oct 12, 2012
1 parent b63237f commit 8337a95
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 39 deletions.
24 changes: 0 additions & 24 deletions test/sinatra_app.rb

This file was deleted.

27 changes: 27 additions & 0 deletions test/sinatra_modular_app.rb
@@ -0,0 +1,27 @@
require 'sinatra/base'
require './lib/sinatra/simple_auth'

class SinatraModularApp < Sinatra::Base
enable :sessions
register Sinatra::SimpleAuth

set :password, 'hello'
set :home, '/'

get '/' do
"hello, i'm root"
end

get '/public' do
if authorized?
"hello, %username%"
else
"Please login"
end
end

get '/pvt' do
protected!
"private area"
end
end
29 changes: 14 additions & 15 deletions test/sinatra_simple_auth_test.rb
@@ -1,61 +1,60 @@
require 'sinatra_app'
require 'sinatra_modular_app'
require 'test/unit'
require 'rack/test'
begin; require 'turn/autorun'; rescue LoadError; end

set :environment, :test
enable :sessions

class SinatraSimpleAuthTest < Test::Unit::TestCase
include Rack::Test::Methods

def app
Sinatra::Application
SinatraModularApp
end

def test_it_should_login_and_redirect_home
post '/login', {:password => app.password}
assert_redirect app.home
post '/login', :password => app.password
assert_redirected_to app.home
end

def test_it_should_fail_login_and_redirect_back_to_form
post '/login', {:password => 'some fake data'}
assert_redirect '/login'
post '/login', :password => 'some fake data'
assert_redirected_to '/login'
end

def test_it_should_login_and_redirect_back
get '/pvt'
assert_redirect '/login'
assert_redirected_to '/login'

login!
assert_redirect '/pvt'
assert_redirected_to '/pvt'
end

def test_it_should_logout_via_delete
login!
delete '/logout'
assert_redirect '/'
assert_redirected_to '/'
end

def test_it_should_logout_via_get
login!
get '/logout'
assert_redirect '/'
assert_redirected_to '/'
end

def test_authorized_helper_should_work
get '/public'
assert last_response.body.include?("Please login")

login!
get '/public'
assert last_response.body.include?("%username%")
end

protected
def login!
post '/login', {:password => app.password}
post '/login', :password => app.password
end

def assert_redirect(path)
def assert_redirected_to(path)
assert last_response.redirect?
assert_equal path, last_response.headers['Location'].sub('http://example.org', '')
end
Expand Down

0 comments on commit 8337a95

Please sign in to comment.