tracks/test/integration/stories_test.rb

97 lines
2.6 KiB
Ruby
Raw Normal View History

2014-05-16 18:03:13 -04:00
require 'test_helper'
require 'support/stub_site_config_helper'
2013-05-11 23:13:16 +02:00
class StoriesTest < ActionDispatch::IntegrationTest
include StubSiteConfigHelper
# ####################################################
# Testing login and signup by different kinds of users
# ####################################################
def test_signup_new_user_by_admin
admin = new_session_as(:admin_user,"abracadabra")
admin.goes_to_signup
2012-04-27 14:22:16 +02:00
admin.signs_up_with(:user => {:login => "newbie",
:password => "newbiepass",
:password_confirmation => "newbiepass"})
end
def test_signup_new_user_by_nonadmin
stub_site_config do
SITE_CONFIG['open_signups'] = false
other_user = new_session_as(:other_user,"sesame")
other_user.goes_to_signup_as_nonadmin
end
end
def test_open_signup_new_user
stub_site_config do
SITE_CONFIG['open_signups'] = true
get "/signup"
assert_response :success
assert_template "users/new"
post "/users", :user => {:login => "newbie",
:password => "newbiepass",
:password_confirmation => "newbiepass"}
assert_response :redirect
follow_redirect!
assert_response :success
assert_template "todos/index"
end
end
private
module CustomAssertions
attr_reader :user
def logs_in_as(user,plain_pass)
@user = user
2012-04-27 14:22:16 +02:00
post "/login", :user_login => @user.login,
:user_password => plain_pass,
:user_noexpiry => 'n'
assert_response :redirect
follow_redirect!
assert_response :success
assert_template "todos/index"
end
def goes_to_login
get "/login"
assert_response :success
assert_template "login/login"
end
def goes_to_signup
get "/signup"
assert_response :success
assert_template "users/new"
end
def goes_to_signup_as_nonadmin
get "/signup"
assert_response :success
assert_template "users/nosignup"
end
def signs_up_with(options)
post "/users", options
assert_response :redirect
follow_redirect!
assert_response :success
assert_template "todos/index"
end
end
def new_session_as(user,plainpass)
open_session do |sess|
sess.extend(CustomAssertions)
sess.goes_to_login
sess.logs_in_as(users(user),plainpass)
yield sess if block_given?
end
end
end