public
Fork of technoweenie/restful-authentication
Description: Generates common user authentication code for Rails/Merb, with a full test/unit and rspec suite built-in.
Homepage: http://weblog.techno-weenie.net
Clone URL: git://github.com/danielharan/restful-authentication.git
Adding basic tests to mailings (no more dummy tests, yay), and using named 
routes in mailing; introduce purposefuly failing tests to guide users after 
generation
Daniel Haran (author)
Sun Jun 15 13:02:03 -0700 2008
commit  20636aa5db4abb3a311672f6d6604c3df73d24be
tree    1fe4584faf3c6e822df5ad7987cfde99c324fb2f
parent  c9ada94c39f3fd59cc7edb74ce5e6a6be239ce80
...
247
248
249
250
251
252
253
 
 
 
 
 
254
255
256
...
247
248
249
 
 
 
 
250
251
252
253
254
255
256
257
0
@@ -247,10 +247,11 @@ class AuthenticatedGenerator < Rails::Generator::NamedBase
0
         # Note that this fails for nested classes -- you're on your own with setting up the routes.
0
         m.route_resource  controller_singular_name
0
         m.route_resources model_controller_plural_name
0
-        m.route_name('signup',   '/signup',   {:controller => model_controller_plural_name, :action => 'new'})
0
-        m.route_name('register', '/register', {:controller => model_controller_plural_name, :action => 'create'})
0
-        m.route_name('login',    '/login',    {:controller => controller_controller_name, :action => 'new'})
0
-        m.route_name('logout',   '/logout',   {:controller => controller_controller_name, :action => 'destroy'})
0
+        m.route_name('signup',     '/signup',                    {:controller => model_controller_plural_name, :action => 'new'})
0
+        m.route_name('register',   '/register',                  {:controller => model_controller_plural_name, :action => 'create'})
0
+        m.route_name('login',      '/login',                     {:controller => controller_controller_name, :action => 'new'})
0
+        m.route_name('logout',     '/logout',                    {:controller => controller_controller_name, :action => 'destroy'})
0
+        m.route_name('activation', '/activate/:activation_code', {:controller => controller_controller_name, :action => 'activate'})
0
       end
0
     end
0
 
...
2
3
4
5
6
7
8
 
 
 
 
 
9
10
11
12
13
14
 
15
16
17
...
2
3
4
 
 
 
 
5
6
7
8
9
10
11
12
13
14
 
15
16
17
18
0
@@ -2,16 +2,17 @@ class <%= class_name %>Mailer < ActionMailer::Base
0
   def signup_notification(<%= file_name %>)
0
     setup_email(<%= file_name %>)
0
     @subject    += 'Please activate your new account'
0
-  <% if options[:include_activation] %>
0
-    @body[:url]  = "http://YOURSITE/activate/#{<%= file_name %>.activation_code}"
0
-  <% else %>
0
-    @body[:url]  = "http://YOURSITE/login/" <% end %>
0
+  <% if options[:include_activation] -%>
0
+    @body[:url]  = activation_url :activation_code => <%= file_name %>.activation_code
0
+  <% else -%>
0
+    @body[:url]  = login_url
0
+  <% end -%>
0
   end
0
   
0
   def activation(<%= file_name %>)
0
     setup_email(<%= file_name %>)
0
     @subject    += 'Your account has been activated!'
0
-    @body[:url]  = "http://YOURSITE/"
0
+    @body[:url]  = login_url
0
   end
0
   
0
   protected
...
2
3
4
5
 
6
7
8
9
10
 
11
12
13
...
16
17
18
19
20
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
22
23
...
2
3
4
 
5
6
7
8
9
10
11
12
13
14
...
17
18
19
 
 
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
0
@@ -2,12 +2,13 @@ require File.dirname(__FILE__) + '/../test_helper'
0
 require '<%= file_name %>_mailer'
0
 
0
 class <%= class_name %>MailerTest < Test::Unit::TestCase
0
-  FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures'
0
+  fixtures :<%= table_name %>
0
   CHARSET = "utf-8"
0
 
0
   include ActionMailer::Quoting
0
 
0
   def setup
0
+    ActionController::UrlWriter.default_url_options[:host] = 'test'
0
     ActionMailer::Base.delivery_method = :test
0
     ActionMailer::Base.perform_deliveries = true
0
     ActionMailer::Base.deliveries = []
0
@@ -16,8 +17,27 @@ class <%= class_name %>MailerTest < Test::Unit::TestCase
0
     @expected.set_content_type "text", "plain", { "charset" => CHARSET }
0
   end
0
 
0
-  def test_dummy_test
0
-    #do nothing
0
+  def test_activation
0
+    assert_difference ActionMailer::Base.deliveries do 
0
+      response = <%= class_name %>Mailer.create_activation(<%= table_name %>(:quentin))
0
+      assert response.subject =~ /Your account has been activated\!/
0
+      assert response.body    =~ /http:\/\/test\/login/
0
+    end
0
+  end
0
+  
0
+  def test_signup_notification
0
+    <%= table_name %>(:quentin).activation_code = '123'
0
+    assert_difference ActionMailer::Base.deliveries do 
0
+      email = <%= class_name %>Mailer.create_signup_notification(<%= table_name %>(:quentin))
0
+      assert email.subject =~ /Please activate your new account/
0
+<% if options[:include_activation] -%>
0
+      assert email.body    =~ /http:\/\/test\/activate\/123/
0
+<% else -%>
0
+      assert email.body    =~ /http:\/\/test\/login
0
+<% end -%>
0
+      assert_equal "arealemail@example.com", email.from.first
0
+      assert_match "[A real origin]",   email.subject
0
+    end
0
   end
0
 
0
   private

Comments