To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / .svn / pristine / 10 / 10c9cdd06a52f023cccd6f598c36e6c63972ac76.svn-base @ 1298:4f746d8966dd

History | View | Annotate | Download (5.92 KB)

1 1295:622f24f53b42 Chris
# Redmine - project management software
2
# Copyright (C) 2006-2013  Jean-Philippe Lang
3
#
4
# This program is free software; you can redistribute it and/or
5
# modify it under the terms of the GNU General Public License
6
# as published by the Free Software Foundation; either version 2
7
# of the License, or (at your option) any later version.
8
#
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17
18
require File.expand_path('../../test_helper', __FILE__)
19
20
class AccountControllerOpenidTest < ActionController::TestCase
21
  tests AccountController
22
  fixtures :users, :roles
23
24
  def setup
25
    User.current = nil
26
    Setting.openid = '1'
27
  end
28
29
  def teardown
30
    Setting.openid = '0'
31
  end
32
33
  if Object.const_defined?(:OpenID)
34
35
    def test_login_with_openid_for_existing_user
36
      Setting.self_registration = '3'
37
      existing_user = User.new(:firstname => 'Cool',
38
                               :lastname => 'User',
39
                               :mail => 'user@somedomain.com',
40
                               :identity_url => 'http://openid.example.com/good_user')
41
      existing_user.login = 'cool_user'
42
      assert existing_user.save!
43
44
      post :login, :openid_url => existing_user.identity_url
45
      assert_redirected_to '/my/page'
46
    end
47
48
    def test_login_with_invalid_openid_provider
49
      Setting.self_registration = '0'
50
      post :login, :openid_url => 'http;//openid.example.com/good_user'
51
      assert_redirected_to home_url
52
    end
53
54
    def test_login_with_openid_for_existing_non_active_user
55
      Setting.self_registration = '2'
56
      existing_user = User.new(:firstname => 'Cool',
57
                               :lastname => 'User',
58
                               :mail => 'user@somedomain.com',
59
                               :identity_url => 'http://openid.example.com/good_user',
60
                               :status => User::STATUS_REGISTERED)
61
      existing_user.login = 'cool_user'
62
      assert existing_user.save!
63
64
      post :login, :openid_url => existing_user.identity_url
65
      assert_redirected_to '/login'
66
    end
67
68
    def test_login_with_openid_with_new_user_created
69
      Setting.self_registration = '3'
70
      post :login, :openid_url => 'http://openid.example.com/good_user'
71
      assert_redirected_to '/my/account'
72
      user = User.find_by_login('cool_user')
73
      assert user
74
      assert_equal 'Cool', user.firstname
75
      assert_equal 'User', user.lastname
76
    end
77
78
    def test_login_with_openid_with_new_user_and_self_registration_off
79
      Setting.self_registration = '0'
80
      post :login, :openid_url => 'http://openid.example.com/good_user'
81
      assert_redirected_to home_url
82
      user = User.find_by_login('cool_user')
83
      assert_nil user
84
    end
85
86
    def test_login_with_openid_with_new_user_created_with_email_activation_should_have_a_token
87
      Setting.self_registration = '1'
88
      post :login, :openid_url => 'http://openid.example.com/good_user'
89
      assert_redirected_to '/login'
90
      user = User.find_by_login('cool_user')
91
      assert user
92
93
      token = Token.find_by_user_id_and_action(user.id, 'register')
94
      assert token
95
    end
96
97
    def test_login_with_openid_with_new_user_created_with_manual_activation
98
      Setting.self_registration = '2'
99
      post :login, :openid_url => 'http://openid.example.com/good_user'
100
      assert_redirected_to '/login'
101
      user = User.find_by_login('cool_user')
102
      assert user
103
      assert_equal User::STATUS_REGISTERED, user.status
104
    end
105
106
    def test_login_with_openid_with_new_user_with_conflict_should_register
107
      Setting.self_registration = '3'
108
      existing_user = User.new(:firstname => 'Cool', :lastname => 'User', :mail => 'user@somedomain.com')
109
      existing_user.login = 'cool_user'
110
      assert existing_user.save!
111
112
      post :login, :openid_url => 'http://openid.example.com/good_user'
113
      assert_response :success
114
      assert_template 'register'
115
      assert assigns(:user)
116
      assert_equal 'http://openid.example.com/good_user', assigns(:user)[:identity_url]
117
    end
118
119
    def test_login_with_openid_with_new_user_with_missing_information_should_register
120
      Setting.self_registration = '3'
121
122
      post :login, :openid_url => 'http://openid.example.com/good_blank_user'
123
      assert_response :success
124
      assert_template 'register'
125
      assert assigns(:user)
126
      assert_equal 'http://openid.example.com/good_blank_user', assigns(:user)[:identity_url]
127
128
      assert_select 'input[name=?]', 'user[login]'
129
      assert_select 'input[name=?]', 'user[password]'
130
      assert_select 'input[name=?]', 'user[password_confirmation]'
131
      assert_select 'input[name=?][value=?]', 'user[identity_url]', 'http://openid.example.com/good_blank_user'
132
    end
133
134
    def test_register_after_login_failure_should_not_require_user_to_enter_a_password
135
      Setting.self_registration = '3'
136
137
      assert_difference 'User.count' do
138
        post :register, :user => {
139
          :login => 'good_blank_user',
140
          :password => '',
141
          :password_confirmation => '',
142
          :firstname => 'Cool',
143
          :lastname => 'User',
144
          :mail => 'user@somedomain.com',
145
          :identity_url => 'http://openid.example.com/good_blank_user'
146
        }
147
        assert_response 302
148
      end
149
150
      user = User.first(:order => 'id DESC')
151
      assert_equal 'http://openid.example.com/good_blank_user', user.identity_url
152
      assert user.hashed_password.blank?, "Hashed password was #{user.hashed_password}"
153
    end
154
155
    def test_setting_openid_should_return_true_when_set_to_true
156
      assert_equal true, Setting.openid?
157
    end
158
159
  else
160
    puts "Skipping openid tests."
161
162
    def test_dummy
163
    end
164
  end
165
end