Commit 9d7da7aad987b7a36bfa4d57ef24e2eced510bb7

Authored by AntonioTerceiro
1 parent 691dced5

ActionItem78: finishing requirement



git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@648 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/controllers/public/account_controller.rb
... ... @@ -75,6 +75,7 @@ class AccountController < PublicController
75 75 # Posts back.
76 76 def forgot_password
77 77 @change_password = ChangePassword.new(params[:change_password])
  78 +
78 79 if request.post?
79 80 begin
80 81 @change_password.save!
... ...
app/models/change_password.rb
... ... @@ -72,9 +72,10 @@ class ChangePassword < Task
72 72 def create_message
73 73 hostname = self.requestor.environment.default_hostname
74 74 code = self.code
  75 + url = generate_url(:host => hostname, :controller => 'account', :action => 'new_password', :code => code)
75 76  
76 77 lambda do
77   - _("In order to change your password, please visit the following address:\n\n%s") % url_for(:host => hostname, :controller => 'account', :action => 'new_password', :code => code)
  78 + _("In order to change your password, please visit the following address:\n\n%s") % url
78 79 end
79 80 end
80 81  
... ...
lib/noosfero/url.rb
... ... @@ -45,11 +45,11 @@ module Noosfero::URL
45 45 Noosfero::URL.config['path']
46 46 end
47 47  
48   - def url_for(options)
  48 + def generate_url(options)
49 49 local_options = {}
50 50 local_options[:port] = self.port unless self.port.nil?
51 51  
52   - url = super(local_options.merge(options))
  52 + url = url_for(local_options.merge(options))
53 53  
54 54 if self.path.blank?
55 55 url
... ...
test/functional/account_controller_test.rb
... ... @@ -184,10 +184,10 @@ class AccountControllerTest < Test::Unit::TestCase
184 184  
185 185 should 'respond to forgotten password change request' do
186 186 change = ChangePassword.new
187   - ChangePassword.expects(:new).returns(change)
  187 + ChangePassword.expects(:new).with('login' => 'test', 'email' => 'test@localhost.localdomain').returns(change)
188 188 change.expects(:save!).returns(true)
189 189  
190   - post :forgot_password
  190 + post :forgot_password, :change_password => { :login => 'test', :email => 'test@localhost.localdomain' }
191 191 assert_template 'password_recovery_sent'
192 192 end
193 193  
... ...
test/integration/forgot_password_test.rb 0 → 100644
... ... @@ -0,0 +1,38 @@
  1 +require "#{File.dirname(__FILE__)}/../test_helper"
  2 +
  3 +class ForgotPasswordTest < ActionController::IntegrationTest
  4 +
  5 + def test_forgot_password
  6 +
  7 + User.destroy_all
  8 + Profile.destroy_all
  9 + ChangePassword.destroy_all
  10 +
  11 + User.create!(:login => 'forgotten', :password => 'test', :password_confirmation => 'test', :email => 'forgotten@localhost.localdomain')
  12 +
  13 + get '/account/forgot_password'
  14 +
  15 + assert_response :success
  16 + assert_tag :tag => 'form', :attributes => { :action => '/account/forgot_password', :method => 'post' }
  17 +
  18 + post '/account/forgot_password', :change_password => { :login => 'forgotten', :email => 'forgotten@localhost.localdomain' }
  19 +
  20 + assert_response :success
  21 + assert_template 'password_recovery_sent'
  22 +
  23 + assert_equal 1, ChangePassword.count
  24 + code = ChangePassword.find(:first).code
  25 +
  26 + get "/account/new_password/#{code}"
  27 + assert_response :success
  28 + assert_tag :tag => 'form', :attributes => { :action => "/account/new_password/#{code}" }
  29 +
  30 + post "/account/new_password/#{code}", :change_password => { :password => 'newpass', :password_confirmation => 'newpass'}
  31 + assert_response :success
  32 + assert_template 'new_password_ok'
  33 + assert_tag :tag => 'a', :attributes => { :href => "/account/login" }
  34 +
  35 + assert User.find_by_login('forgotten').authenticated?('newpass')
  36 + end
  37 +
  38 +end
... ...
test/unit/noosfero_url_test.rb
... ... @@ -37,13 +37,13 @@ class NoosferoURLTest &lt; Test::Unit::TestCase
37 37 should 'add path when needed' do
38 38 self.stubs(:path).returns('/somepath')
39 39 self.stubs(:port).returns(nil)
40   - assert_equal('http://example.com/somepath/', url_for(:host => 'example.com', :controller => 'home'))
  40 + assert_equal('http://example.com/somepath/', generate_url(:host => 'example.com', :controller => 'home'))
41 41 end
42 42  
43 43 should 'not add path when it is not needed' do
44 44 self.stubs(:path).returns(nil)
45 45 self.stubs(:port).returns(nil)
46   - assert_equal('http://example.com/', url_for(:host => 'example.com', :controller => 'home'))
  46 + assert_equal('http://example.com/', generate_url(:host => 'example.com', :controller => 'home'))
47 47 end
48 48  
49 49 end
... ...