diff .svn/pristine/10/10c9cdd06a52f023cccd6f598c36e6c63972ac76.svn-base @ 1298:4f746d8966dd redmine_2.3_integration

Merge from redmine-2.3 branch to create new branch redmine-2.3-integration
author Chris Cannam
date Fri, 14 Jun 2013 09:28:30 +0100
parents 622f24f53b42
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.svn/pristine/10/10c9cdd06a52f023cccd6f598c36e6c63972ac76.svn-base	Fri Jun 14 09:28:30 2013 +0100
@@ -0,0 +1,165 @@
+# Redmine - project management software
+# Copyright (C) 2006-2013  Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+
+require File.expand_path('../../test_helper', __FILE__)
+
+class AccountControllerOpenidTest < ActionController::TestCase
+  tests AccountController
+  fixtures :users, :roles
+
+  def setup
+    User.current = nil
+    Setting.openid = '1'
+  end
+
+  def teardown
+    Setting.openid = '0'
+  end
+
+  if Object.const_defined?(:OpenID)
+
+    def test_login_with_openid_for_existing_user
+      Setting.self_registration = '3'
+      existing_user = User.new(:firstname => 'Cool',
+                               :lastname => 'User',
+                               :mail => 'user@somedomain.com',
+                               :identity_url => 'http://openid.example.com/good_user')
+      existing_user.login = 'cool_user'
+      assert existing_user.save!
+  
+      post :login, :openid_url => existing_user.identity_url
+      assert_redirected_to '/my/page'
+    end
+  
+    def test_login_with_invalid_openid_provider
+      Setting.self_registration = '0'
+      post :login, :openid_url => 'http;//openid.example.com/good_user'
+      assert_redirected_to home_url
+    end
+  
+    def test_login_with_openid_for_existing_non_active_user
+      Setting.self_registration = '2'
+      existing_user = User.new(:firstname => 'Cool',
+                               :lastname => 'User',
+                               :mail => 'user@somedomain.com',
+                               :identity_url => 'http://openid.example.com/good_user',
+                               :status => User::STATUS_REGISTERED)
+      existing_user.login = 'cool_user'
+      assert existing_user.save!
+  
+      post :login, :openid_url => existing_user.identity_url
+      assert_redirected_to '/login'
+    end
+  
+    def test_login_with_openid_with_new_user_created
+      Setting.self_registration = '3'
+      post :login, :openid_url => 'http://openid.example.com/good_user'
+      assert_redirected_to '/my/account'
+      user = User.find_by_login('cool_user')
+      assert user
+      assert_equal 'Cool', user.firstname
+      assert_equal 'User', user.lastname
+    end
+  
+    def test_login_with_openid_with_new_user_and_self_registration_off
+      Setting.self_registration = '0'
+      post :login, :openid_url => 'http://openid.example.com/good_user'
+      assert_redirected_to home_url
+      user = User.find_by_login('cool_user')
+      assert_nil user
+    end
+  
+    def test_login_with_openid_with_new_user_created_with_email_activation_should_have_a_token
+      Setting.self_registration = '1'
+      post :login, :openid_url => 'http://openid.example.com/good_user'
+      assert_redirected_to '/login'
+      user = User.find_by_login('cool_user')
+      assert user
+  
+      token = Token.find_by_user_id_and_action(user.id, 'register')
+      assert token
+    end
+  
+    def test_login_with_openid_with_new_user_created_with_manual_activation
+      Setting.self_registration = '2'
+      post :login, :openid_url => 'http://openid.example.com/good_user'
+      assert_redirected_to '/login'
+      user = User.find_by_login('cool_user')
+      assert user
+      assert_equal User::STATUS_REGISTERED, user.status
+    end
+  
+    def test_login_with_openid_with_new_user_with_conflict_should_register
+      Setting.self_registration = '3'
+      existing_user = User.new(:firstname => 'Cool', :lastname => 'User', :mail => 'user@somedomain.com')
+      existing_user.login = 'cool_user'
+      assert existing_user.save!
+  
+      post :login, :openid_url => 'http://openid.example.com/good_user'
+      assert_response :success
+      assert_template 'register'
+      assert assigns(:user)
+      assert_equal 'http://openid.example.com/good_user', assigns(:user)[:identity_url]
+    end
+  
+    def test_login_with_openid_with_new_user_with_missing_information_should_register
+      Setting.self_registration = '3'
+  
+      post :login, :openid_url => 'http://openid.example.com/good_blank_user'
+      assert_response :success
+      assert_template 'register'
+      assert assigns(:user)
+      assert_equal 'http://openid.example.com/good_blank_user', assigns(:user)[:identity_url]
+
+      assert_select 'input[name=?]', 'user[login]'
+      assert_select 'input[name=?]', 'user[password]'
+      assert_select 'input[name=?]', 'user[password_confirmation]'
+      assert_select 'input[name=?][value=?]', 'user[identity_url]', 'http://openid.example.com/good_blank_user'
+    end
+
+    def test_register_after_login_failure_should_not_require_user_to_enter_a_password
+      Setting.self_registration = '3'
+
+      assert_difference 'User.count' do
+        post :register, :user => {
+          :login => 'good_blank_user',
+          :password => '',
+          :password_confirmation => '',
+          :firstname => 'Cool',
+          :lastname => 'User',
+          :mail => 'user@somedomain.com',
+          :identity_url => 'http://openid.example.com/good_blank_user'
+        }
+        assert_response 302
+      end
+
+      user = User.first(:order => 'id DESC')
+      assert_equal 'http://openid.example.com/good_blank_user', user.identity_url
+      assert user.hashed_password.blank?, "Hashed password was #{user.hashed_password}"
+    end
+
+    def test_setting_openid_should_return_true_when_set_to_true
+      assert_equal true, Setting.openid?
+    end
+
+  else
+    puts "Skipping openid tests."
+
+    def test_dummy
+    end
+  end
+end