merbful_authentication 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +25 -0
- data/README +69 -0
- data/Rakefile +35 -0
- data/TODO +5 -0
- data/activerecord_generators/merbful_authentication_model/merbful_authentication_model_generator.rb +65 -0
- data/activerecord_generators/merbful_authentication_model/templates/authenticated_system_orm_map.rb +34 -0
- data/activerecord_generators/merbful_authentication_model/templates/migration.rb +20 -0
- data/activerecord_generators/merbful_authentication_model/templates/model.rb +63 -0
- data/datamapper_generators/merbful_authentication_model/merbful_authentication_model_generator.rb +60 -0
- data/datamapper_generators/merbful_authentication_model/templates/authenticated_system_orm_map.rb +34 -0
- data/datamapper_generators/merbful_authentication_model/templates/model.rb +78 -0
- data/lib/merbful_authentication.rb +10 -0
- data/lib/merbful_authentication/merbtasks.rb +6 -0
- data/merb_generators/authentication/USAGE +5 -0
- data/merb_generators/authentication/authentication_generator.rb +256 -0
- data/merb_generators/authentication/templates/activation.html.erb +1 -0
- data/merb_generators/authentication/templates/activation.text.erb +1 -0
- data/merb_generators/authentication/templates/authenticated_system_controller.rb +132 -0
- data/merb_generators/authentication/templates/authenticated_system_model.rb +97 -0
- data/merb_generators/authentication/templates/login.html.erb +14 -0
- data/merb_generators/authentication/templates/mail_controller.rb +13 -0
- data/merb_generators/authentication/templates/model_controller.rb +33 -0
- data/merb_generators/authentication/templates/new_model.html.erb +18 -0
- data/merb_generators/authentication/templates/session_controller.rb +33 -0
- data/merb_generators/authentication/templates/signup.html.erb +8 -0
- data/merb_generators/authentication/templates/signup.text.erb +8 -0
- data/rspec_generators/merbful_authentication_tests/merbful_authentication_tests_generator.rb +83 -0
- data/rspec_generators/merbful_authentication_tests/templates/authenticated_system_spec_helper.rb +22 -0
- data/rspec_generators/merbful_authentication_tests/templates/model_controller_spec.rb +78 -0
- data/rspec_generators/merbful_authentication_tests/templates/model_spec.rb +357 -0
- data/rspec_generators/merbful_authentication_tests/templates/model_spec_helper.rb +8 -0
- data/rspec_generators/merbful_authentication_tests/templates/session_controller_spec.rb +101 -0
- data/rspec_generators/merbful_authentication_tests/templates/user_mailer_spec.rb +70 -0
- data/test_unit_generators/merbful_authentication_tests/USAGE +5 -0
- data/test_unit_generators/merbful_authentication_tests/merbful_authentication_tests_generator.rb +84 -0
- data/test_unit_generators/merbful_authentication_tests/templates/authenticated_system_test_helper.rb +50 -0
- data/test_unit_generators/merbful_authentication_tests/templates/functional_test.rb +92 -0
- data/test_unit_generators/merbful_authentication_tests/templates/mailer_test.rb +66 -0
- data/test_unit_generators/merbful_authentication_tests/templates/model_functional_test.rb +92 -0
- data/test_unit_generators/merbful_authentication_tests/templates/model_test_helper.rb +8 -0
- data/test_unit_generators/merbful_authentication_tests/templates/unit_test.rb +142 -0
- metadata +114 -0
@@ -0,0 +1,101 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
|
2
|
+
require File.join( File.dirname(__FILE__), "..", "<%= singular_name %>_spec_helper")
|
3
|
+
require File.join( File.dirname(__FILE__), "..", "authenticated_system_spec_helper")
|
4
|
+
require 'cgi'
|
5
|
+
|
6
|
+
describe "<%= controller_class_name %> Controller", "index action" do
|
7
|
+
include <%= class_name %>SpecHelper
|
8
|
+
|
9
|
+
before(:each) do
|
10
|
+
<%= class_name %>.clear_database_table
|
11
|
+
@quentin = <%= class_name %>.create(valid_<%= singular_name %>_hash.with(:login => "quentin", :password => "test", :password_confirmation => "test"))
|
12
|
+
@controller = <%= controller_class_name %>.build(fake_request)
|
13
|
+
<% if include_activation -%>
|
14
|
+
@quentin.activate
|
15
|
+
<% end -%>
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should have a route to <%= controller_class_name %>#new from '/login'" do
|
19
|
+
with_route("/login") do |params|
|
20
|
+
params[:controller].should == "<%= controller_class_name %>"
|
21
|
+
params[:action].should == "create"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should route to <%= controller_class_name %>#create from '/login' via post" do
|
26
|
+
with_route("/login", "POST") do |params|
|
27
|
+
params[:controller].should == "<%= controller_class_name %>"
|
28
|
+
params[:action].should == "create"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should have a named route :login" do
|
33
|
+
controller.url(:login).should == "/login"
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should have route to <%= controller_class_name %>#destroy from '/logout' via delete" do
|
37
|
+
with_route("/logout", "DELETE") do |params|
|
38
|
+
params[:controller].should == "<%= controller_class_name %>"
|
39
|
+
params[:action].should == "destroy"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should route to <%= controller_class_name %>#destroy from '/logout' via get" do
|
44
|
+
with_route("/logout", "GET") do |params|
|
45
|
+
params[:controller].should == "<%= controller_class_name %>"
|
46
|
+
params[:action].should == "destroy"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'logins and redirects' do
|
51
|
+
post "/login", :login => 'quentin', :password => 'test'
|
52
|
+
session[:<%= singular_name %>].should_not be_nil
|
53
|
+
session[:<%= singular_name %>].should == @quentin.id
|
54
|
+
controller.should redirect_to("/")
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'fails login and does not redirect' do
|
58
|
+
post "/login", :login => 'quentin', :password => 'bad password'
|
59
|
+
session[:<%= singular_name %>].should be_nil
|
60
|
+
controller.template.should match(/^new\./)
|
61
|
+
controller.should be_success
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'logs out' do
|
65
|
+
get("/logout"){|response| response.stub!(:current_<%= singular_name %>).and_return(@quentin) }
|
66
|
+
session[:<%= singular_name %>].should be_nil
|
67
|
+
controller.should redirect
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'remembers me' do
|
71
|
+
post "/login", :login => 'quentin', :password => 'test', :remember_me => "1"
|
72
|
+
cookies["auth_token"].should_not be_nil
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'does not remember me' do
|
76
|
+
post "login", :login => 'quentin', :password => 'test', :remember_me => "0"
|
77
|
+
cookies["auth_token"].should be_nil
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'deletes token on logout' do
|
81
|
+
get("/logout") {|request| request.stub!(:current_<%= singular_name %>).and_return(@quentin) }
|
82
|
+
cookies["auth_token"].should == nil
|
83
|
+
end
|
84
|
+
|
85
|
+
|
86
|
+
it 'logs in with cookie' do
|
87
|
+
@quentin.remember_me
|
88
|
+
get "/login" do |request|
|
89
|
+
request.env[Merb::Const::HTTP_COOKIE] = "auth_token=#{@quentin.remember_token}"
|
90
|
+
end
|
91
|
+
controller.should be_logged_in
|
92
|
+
end
|
93
|
+
|
94
|
+
def auth_token(token)
|
95
|
+
CGI::Cookie.new('name' => 'auth_token', 'value' => token)
|
96
|
+
end
|
97
|
+
|
98
|
+
def cookie_for(<%= singular_name %>)
|
99
|
+
auth_token <%= singular_name %>.remember_token
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
|
2
|
+
require File.join( File.dirname(__FILE__), "..", "<%= singular_name %>_spec_helper")
|
3
|
+
require File.join( File.dirname(__FILE__), "..", "authenticated_system_spec_helper")
|
4
|
+
|
5
|
+
describe <%= class_name %>Mailer do
|
6
|
+
|
7
|
+
def deliver(action, mail_opts= {},opts = {})
|
8
|
+
<%= class_name %>Mailer.dispatch_and_deliver action, mail_opts, opts
|
9
|
+
@delivery = Merb::Mailer.deliveries.last
|
10
|
+
end
|
11
|
+
|
12
|
+
before(:each) do
|
13
|
+
@u = <%= class_name %>.new(:email => "homer@simpsons.com", :login => "homer", :activation_code => "12345")
|
14
|
+
@mailer_params = { :from => "info@mysite.com",
|
15
|
+
:to => @u.email,
|
16
|
+
:subject => "Welcome to MySite.com" }
|
17
|
+
end
|
18
|
+
|
19
|
+
after(:each) do
|
20
|
+
Merb::Mailer.deliveries.clear
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should send mail to homer@simpsons.com for the signup email" do
|
24
|
+
deliver(:signup_notification, @mailer_params, :<%= singular_name %> => @u)
|
25
|
+
@delivery.assigns(:headers).should include("to: homer@simpsons.com")
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should send the mail from 'info@mysite.com' for the signup email" do
|
29
|
+
deliver(:signup_notification, @mailer_params, :<%= singular_name %> => @u)
|
30
|
+
@delivery.assigns(:headers).should include("from: info@mysite.com")
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should mention the <%= plural_name %> login in the text signup mail" do
|
34
|
+
deliver(:signup_notification, @mailer_params, :<%= singular_name %> => @u)
|
35
|
+
@delivery.text.should include(@u.login)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should mention the <%= plural_name %> login in the HTML signup mail" do
|
39
|
+
deliver(:signup_notification, @mailer_params, :<%= singular_name %> => @u)
|
40
|
+
@delivery.html.should include(@u.login)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should mention the activation link in the signup emails" do
|
44
|
+
deliver(:signup_notification, @mailer_params, :<%= singular_name %> => @u)
|
45
|
+
the_url = <%= class_name %>Mailer.new.url(:<%= singular_name %>_activation, :activation_code => @u.activation_code)
|
46
|
+
the_url.should_not be_nil
|
47
|
+
@delivery.text.should include( the_url )
|
48
|
+
@delivery.html.should include( the_url )
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should send mail to homer@simpson.com for the activation email" do
|
52
|
+
deliver(:activation_notification, @mailer_params, :<%= singular_name %> => @u)
|
53
|
+
@delivery.assigns(:headers).should include("to: homer@simpsons.com")
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should send the mail from 'info@mysite.com' for the activation email" do
|
57
|
+
deliver(:activation_notification, @mailer_params, :<%= singular_name %> => @u)
|
58
|
+
@delivery.assigns(:headers).should include("from: info@mysite.com")
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should mention ther <%= plural_name %> login in the text activation mail" do
|
62
|
+
deliver(:activation_notification, @mailer_params, :<%= singular_name %> => @u)
|
63
|
+
@delivery.text.should include(@u.login)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should mention the suers login in the html activation mail" do
|
67
|
+
deliver(:activation_notification, @mailer_params, :<%= singular_name %> => @u)
|
68
|
+
@delivery.html.should include(@u.login)
|
69
|
+
end
|
70
|
+
end
|
data/test_unit_generators/merbful_authentication_tests/merbful_authentication_tests_generator.rb
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
class MerbfulAuthenticationTestsGenerator < RubiGen::Base
|
2
|
+
|
3
|
+
attr_reader :name,
|
4
|
+
:class_name,
|
5
|
+
:class_path,
|
6
|
+
:file_name,
|
7
|
+
:class_nesting,
|
8
|
+
:class_nesting_depth,
|
9
|
+
:plural_name,
|
10
|
+
:singular_name,
|
11
|
+
:controller_name,
|
12
|
+
:controller_class_path,
|
13
|
+
:controller_file_path,
|
14
|
+
:controller_class_nesting,
|
15
|
+
:controller_class_nesting_depth,
|
16
|
+
:controller_class_name,
|
17
|
+
:controller_singular_name,
|
18
|
+
:controller_plural_name,
|
19
|
+
:model_controller_name,
|
20
|
+
:model_controller_class_path,
|
21
|
+
:model_controller_file_path,
|
22
|
+
:model_controller_class_nesting,
|
23
|
+
:model_controller_class_nesting_depth,
|
24
|
+
:model_controller_class_name,
|
25
|
+
:model_controller_singular_name,
|
26
|
+
:model_controller_plural_name,
|
27
|
+
:include_activation
|
28
|
+
|
29
|
+
def initialize(runtime_args, runtime_options = {})
|
30
|
+
super
|
31
|
+
usage if args.empty?
|
32
|
+
@name = args.shift
|
33
|
+
extract_options
|
34
|
+
runtime_options.each{ |k,v| self.instance_variable_set("@#{k}", v) }
|
35
|
+
end
|
36
|
+
|
37
|
+
def manifest
|
38
|
+
record do |m|
|
39
|
+
# Ensure appropriate folder(s) exists
|
40
|
+
m.directory "test"
|
41
|
+
m.directory "test/unit"
|
42
|
+
m.directory "test/functional"
|
43
|
+
|
44
|
+
m.directory "test/mailers" if include_activation
|
45
|
+
# Create stubs
|
46
|
+
m.template "model_test_helper.rb", File.join("test", "#{file_name}_test_helper.rb")
|
47
|
+
m.template "authenticated_system_test_helper.rb", File.join("test", "authenticated_system_test_helper.rb")
|
48
|
+
m.template "model_functional_test.rb", File.join("test", "functional", "#{model_controller_file_path}_test.rb")
|
49
|
+
m.template "functional_test.rb", File.join("test", "functional", "#{controller_file_path}_test.rb")
|
50
|
+
m.template "unit_test.rb", File.join("test", "unit", "#{singular_name}_test.rb")
|
51
|
+
|
52
|
+
if include_activation
|
53
|
+
m.template "mailer_test.rb", File.join("test/mailers", "#{singular_name}_mailer_test.rb")
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
protected
|
59
|
+
def banner
|
60
|
+
<<-EOS
|
61
|
+
Creates a ...
|
62
|
+
|
63
|
+
USAGE: #{$0} #{spec.name} name"
|
64
|
+
EOS
|
65
|
+
end
|
66
|
+
|
67
|
+
def add_options!(opts)
|
68
|
+
# opts.separator ''
|
69
|
+
# opts.separator 'Options:'
|
70
|
+
# For each option below, place the default
|
71
|
+
# at the top of the file next to "default_options"
|
72
|
+
# opts.on("-a", "--author=\"Your Name\"", String,
|
73
|
+
# "Some comment about this option",
|
74
|
+
# "Default: none") { |options[:author]| }
|
75
|
+
# opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
|
76
|
+
end
|
77
|
+
|
78
|
+
def extract_options
|
79
|
+
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
80
|
+
# Templates can access these value via the attr_reader-generated methods, but not the
|
81
|
+
# raw instance variable value.
|
82
|
+
# @author = options[:author]
|
83
|
+
end
|
84
|
+
end
|
data/test_unit_generators/merbful_authentication_tests/templates/authenticated_system_test_helper.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
class Merb::Controller
|
2
|
+
require "merb/session/memory_session"
|
3
|
+
Merb::MemorySessionContainer.setup
|
4
|
+
include ::Merb::SessionMixin
|
5
|
+
self.session_secret_key = "foo to the bar to the baz"
|
6
|
+
end
|
7
|
+
|
8
|
+
class Merb::Mailer
|
9
|
+
self.delivery_method = :test_send
|
10
|
+
end
|
11
|
+
|
12
|
+
class Hash
|
13
|
+
|
14
|
+
def with( opts )
|
15
|
+
self.merge(opts)
|
16
|
+
end
|
17
|
+
|
18
|
+
def without(*args)
|
19
|
+
self.dup.delete_if{ |k,v| args.include?(k)}
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
# Assert difference(s) methods were taken from RubyOnRails to support the port of restful_authentication
|
25
|
+
|
26
|
+
def assert_difference(expressions, difference = 1, message = nil, &block)
|
27
|
+
expression_evaluations = Array(expressions).collect{ |expression| lambda { eval(expression, block.send(:binding)) } }
|
28
|
+
|
29
|
+
original_values = expression_evaluations.inject([]) { |memo, expression| memo << expression.call }
|
30
|
+
yield
|
31
|
+
expression_evaluations.each_with_index do |expression, i|
|
32
|
+
assert_equal original_values[i] + difference, expression.call, message
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def assert_no_difference(expressions, message = nil, &block)
|
37
|
+
assert_difference expressions, 0, message, &block
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
def assert_response(code = :success)
|
42
|
+
case code
|
43
|
+
when :success
|
44
|
+
assert_equal 200, controller.status
|
45
|
+
when :redirect
|
46
|
+
assert_equal 302, controller.status
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
require (File.dirname(__FILE__) / '../authenticated_system_test_helper')
|
3
|
+
require (File.dirname(__FILE__) / ".." / "<%= singular_name %>_test_helper")
|
4
|
+
include <%= class_name %>TestHelper
|
5
|
+
|
6
|
+
# Re-raise errors caught by the controller.
|
7
|
+
class <%= controller_class_name %>; def rescue_action(e) raise e end; end
|
8
|
+
|
9
|
+
class <%= controller_class_name %>ControllerTest < Test::Unit::TestCase
|
10
|
+
|
11
|
+
def setup
|
12
|
+
<%= class_name %>.clear_database_table
|
13
|
+
@controller = <%= controller_class_name %>.build(fake_request)
|
14
|
+
@request = @controller.request
|
15
|
+
@response = @controller.response
|
16
|
+
|
17
|
+
@<%= singular_name %> = <%= class_name %>.new(valid_<%= singular_name %>_hash.with(:login => 'quentin', :password => 'test', :password_confirmation => 'test'))
|
18
|
+
@<%= singular_name %>.save
|
19
|
+
<% if options[:include_activation] -%>
|
20
|
+
@<%= singular_name %>.activate
|
21
|
+
<% end -%>
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_should_login_and_redirect
|
25
|
+
controller.params.merge!(:login => 'quentin', :password => 'test')
|
26
|
+
controller.dispatch(:create)
|
27
|
+
assert controller.session[:<%= singular_name %>]
|
28
|
+
assert_response :redirect
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_should_fail_login_and_not_redirect
|
32
|
+
controller.params.merge!(:login => 'quentin', :password => 'bad password')
|
33
|
+
controller.dispatch(:create)
|
34
|
+
assert_nil controller.session[:<%= file_name %>]
|
35
|
+
assert_response :success
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_should_logout
|
39
|
+
login_as :quentin
|
40
|
+
controller.dispatch(:destroy)
|
41
|
+
assert_nil controller.session[:<%= file_name %>]
|
42
|
+
assert_response :redirect
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_should_remember_me
|
46
|
+
controller.params.merge!(:login => 'quentin', :password => 'test', :remember_me => '1')
|
47
|
+
controller.dispatch(:create)
|
48
|
+
assert_not_nil controller.cookies["auth_token"]
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_should_not_remember_me
|
52
|
+
controller.params.merge!(:login => 'quentin', :password => 'test', :remember_me => '0')
|
53
|
+
controller.dispatch(:create)
|
54
|
+
assert_nil controller.cookies["auth_token"]
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_should_delete_token_on_logout
|
58
|
+
login_as :quentin
|
59
|
+
controller.dispatch(:destroy)
|
60
|
+
assert_nil controller.cookies["auth_token"]
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_should_login_with_cookie
|
64
|
+
@user.remember_me
|
65
|
+
controller.cookies["auth_token"] = @<%= singular_name %>.remember_token
|
66
|
+
controller.dispatch(:new)
|
67
|
+
assert controller.send(:logged_in?)
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_should_fail_expired_cookie_login
|
71
|
+
@<%= singular_name %>.remember_me
|
72
|
+
@<%= singular_name %>.remember_token_expires_at = (Time.now - (5 * 60))
|
73
|
+
@<%= singular_name %>.save
|
74
|
+
controller.cookies["auth_token"] = @<%= singular_name %>.remember_token
|
75
|
+
controller.dispatch(:new)
|
76
|
+
assert !(controller.send(:logged_in?))
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_should_fail_cookie_login
|
80
|
+
@<%= singular_name %>.remember_me
|
81
|
+
controller.cookies["auth_token"] = 'invalid_auth_token'
|
82
|
+
controller.dispatch(:new)
|
83
|
+
assert !controller.send(:logged_in?)
|
84
|
+
end
|
85
|
+
|
86
|
+
protected
|
87
|
+
|
88
|
+
def login_as(login = :quentin)
|
89
|
+
<%= singular_name %> = <%= class_name %>.find_with_conditions(:login => login.to_s)
|
90
|
+
@controller.session[:<%= singular_name %>] = <%= singular_name %> ? <%= singular_name %>.id : nil
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
require (File.dirname(__FILE__) / '../authenticated_system_test_helper')
|
3
|
+
require (File.dirname(__FILE__) / ".." / "<%= singular_name %>_test_helper")
|
4
|
+
include <%= class_name %>TestHelper
|
5
|
+
|
6
|
+
class <%= class_name %>MailerTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@<%= singular_name %> = <%= class_name %>.new(:email => "homer@simpsons.com", :login => "homer", :activation_code => "12345")
|
10
|
+
@mailer_params = { :from => "info@mysite.com",
|
11
|
+
:to => @<%= singular_name %>.email,
|
12
|
+
:subject => "Welcome to MySite.com" }
|
13
|
+
end
|
14
|
+
|
15
|
+
def tear_down
|
16
|
+
Merb::Mailer.deliveries.clear
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_signup_email_goes_to_the_right_place
|
20
|
+
deliver(:signup_notification, @mailer_params, :<%= singular_name %> => @<%= singular_name %>)
|
21
|
+
assert @delivery.assigns(:headers).any? {|v| v == "to: homer@simpsons.com"}
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_signup_email_should_come_from_the_right_place
|
25
|
+
deliver(:signup_notification, @mailer_params, :<%= singular_name %> => @<%= singular_name %>)
|
26
|
+
assert @delivery.assigns(:headers).any? {|v| v == "from: info@mysite.com"}
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_signup_email_should_mention_the_login_name
|
30
|
+
deliver(:signup_notification, @mailer_params, :<%= singular_name %> => @<%= singular_name %>)
|
31
|
+
assert_match %r(#{@<%= singular_name %>.login}), @delivery.text
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_signup_html_email_should_mention_the_login_name
|
35
|
+
deliver(:signup_notification, @mailer_params, :<%= singular_name %> => @<%= singular_name %>)
|
36
|
+
assert_match %r(#{@<%= singular_name %>.login}), @delivery.html
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_signup_email_should_mention_the_activation_link
|
40
|
+
deliver(:signup_notification, @mailer_params, :<%= singular_name %> => @<%= singular_name %>)
|
41
|
+
assert_match %r(#{@<%= singular_name %>.activation_code}), @delivery.text
|
42
|
+
assert_match %r(#{@<%= singular_name %>.activation_code}), @delivery.html
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_activation_email_should_go_to_the_right_place
|
46
|
+
deliver(:activation_notification, @mailer_params, :<%= singular_name %> => @<%= singular_name %>)
|
47
|
+
assert @delivery.assigns(:headers).any?{|v| v == "to: homer@simpsons.com"}
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_activation_email_should_come_from_the_right_place
|
51
|
+
deliver(:activation_notification, @mailer_params, :<%= singular_name %> => @<%= singular_name %>)
|
52
|
+
assert @delivery.assigns(:headers).any?{|v| v == "from: info@mysite.com"}
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_should_mention_the_login_in_the_activation_email
|
56
|
+
deliver(:activation_notification, @mailer_params, :<%= singular_name %> => @<%= singular_name %>)
|
57
|
+
assert_match %r(#{@<%= singular_name %>.login}), @delivery.text
|
58
|
+
assert_match %r(#{@<%= singular_name %>.login}), @delivery.html
|
59
|
+
end
|
60
|
+
private
|
61
|
+
def deliver(action, mail_opts= {},opts = {})
|
62
|
+
<%= class_name %>Mailer.dispatch_and_deliver action, mail_opts, opts
|
63
|
+
@delivery = Merb::Mailer.deliveries.last
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|