Commit 9d7da7aad987b7a36bfa4d57ef24e2eced510bb7
1 parent
691dced5
Exists in
master
and in
28 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 | ... | ... |