Commit 9d7da7aad987b7a36bfa4d57ef24e2eced510bb7
1 parent
691dced5
Exists in
master
and in
22 other branches
ActionItem78: finishing requirement
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@648 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
6 changed files
with
47 additions
and
7 deletions
Show diff stats
app/controllers/public/account_controller.rb
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 | ... | ... |
| ... | ... | @@ -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 < 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 | ... | ... |