summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Davis <edavis@littlestreamsoftware.com>2010-05-23 03:16:31 +0000
committerEric Davis <edavis@littlestreamsoftware.com>2010-05-23 03:16:31 +0000
commit715c9d16ef2c2effbc614dace8b50d145e703b80 (patch)
tree5050ba97c118471ff54a17969c7d184d1a11d328
parenta1f73c8b20317702d4b892c5b47f0b6c62a657e2 (diff)
downloadredmine-715c9d16ef2c2effbc614dace8b50d145e703b80.tar.gz
redmine-715c9d16ef2c2effbc614dace8b50d145e703b80.zip
Refactor AuthSourcesController to support non-LDAP sources. #1131
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3744 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/controllers/auth_sources_controller.rb22
-rw-r--r--app/controllers/ldap_auth_sources_controller.rb25
-rw-r--r--app/views/admin/_menu.rhtml1
-rw-r--r--app/views/auth_sources/_form.html.erb13
-rw-r--r--app/views/ldap_auth_sources/_form.rhtml (renamed from app/views/auth_sources/_form.rhtml)0
-rw-r--r--app/views/settings/_authentication.rhtml2
-rw-r--r--test/functional/auth_sources_controller_test.rb83
-rw-r--r--test/functional/ldap_auth_sources_controller.rb24
8 files changed, 162 insertions, 8 deletions
diff --git a/app/controllers/auth_sources_controller.rb b/app/controllers/auth_sources_controller.rb
index 75a321ffe..872ae1856 100644
--- a/app/controllers/auth_sources_controller.rb
+++ b/app/controllers/auth_sources_controller.rb
@@ -22,29 +22,31 @@ class AuthSourcesController < ApplicationController
# GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
verify :method => :post, :only => [ :destroy, :create, :update ],
- :redirect_to => { :action => :list }
+ :redirect_to => { :template => :index }
def index
- @auth_source_pages, @auth_sources = paginate :auth_sources, :per_page => 10
- render :action => "index", :layout => false if request.xhr?
+ @auth_source_pages, @auth_sources = paginate auth_source_class.name.tableize, :per_page => 10
+ render "auth_sources/index"
end
def new
- @auth_source = AuthSourceLdap.new
+ @auth_source = auth_source_class.new
+ render 'auth_sources/new'
end
def create
- @auth_source = AuthSourceLdap.new(params[:auth_source])
+ @auth_source = auth_source_class.new(params[:auth_source])
if @auth_source.save
flash[:notice] = l(:notice_successful_create)
redirect_to :action => 'index'
else
- render :action => 'new'
+ render 'auth_sources/new'
end
end
def edit
@auth_source = AuthSource.find(params[:id])
+ render 'auth_sources/edit'
end
def update
@@ -53,7 +55,7 @@ class AuthSourcesController < ApplicationController
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'index'
else
- render :action => 'edit'
+ render 'auth_sources/edit'
end
end
@@ -76,4 +78,10 @@ class AuthSourcesController < ApplicationController
end
redirect_to :action => 'index'
end
+
+ protected
+
+ def auth_source_class
+ AuthSource
+ end
end
diff --git a/app/controllers/ldap_auth_sources_controller.rb b/app/controllers/ldap_auth_sources_controller.rb
new file mode 100644
index 000000000..e024fee9e
--- /dev/null
+++ b/app/controllers/ldap_auth_sources_controller.rb
@@ -0,0 +1,25 @@
+# redMine - project management software
+# Copyright (C) 2006 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.
+
+class LdapAuthSourcesController < AuthSourcesController
+
+ protected
+
+ def auth_source_class
+ AuthSourceLdap
+ end
+end
diff --git a/app/views/admin/_menu.rhtml b/app/views/admin/_menu.rhtml
index 87fa5c780..9b3bc66b4 100644
--- a/app/views/admin/_menu.rhtml
+++ b/app/views/admin/_menu.rhtml
@@ -3,6 +3,7 @@
<li><%= link_to l(:label_project_plural), {:controller => 'admin', :action => 'projects'}, :class => 'projects' %></li>
<li><%= link_to l(:label_user_plural), {:controller => 'users'}, :class => 'users' %></li>
<li><%= link_to l(:label_group_plural), {:controller => 'groups'}, :class => 'groups' %></li>
+ <li><%= link_to l(:label_ldap_authentication), :controller => 'ldap_auth_sources', :action => 'index' %></li>
<li><%= link_to l(:label_role_and_permissions), {:controller => 'roles'}, :class => 'roles' %></li>
<li><%= link_to l(:label_tracker_plural), {:controller => 'trackers'}, :class => 'trackers' %></li>
<li><%= link_to l(:label_issue_status_plural), {:controller => 'issue_statuses'}, :class => 'issue_statuses' %></li>
diff --git a/app/views/auth_sources/_form.html.erb b/app/views/auth_sources/_form.html.erb
new file mode 100644
index 000000000..79abae7d8
--- /dev/null
+++ b/app/views/auth_sources/_form.html.erb
@@ -0,0 +1,13 @@
+<%= error_messages_for 'auth_source' %>
+
+<div class="box">
+<!--[form:auth_source]-->
+<p><label for="auth_source_name"><%=l(:field_name)%> <span class="required">*</span></label>
+<%= text_field 'auth_source', 'name' %></p>
+
+<p><label for="auth_source_onthefly_register"><%=l(:field_onthefly)%></label>
+<%= check_box 'auth_source', 'onthefly_register' %></p>
+</div>
+
+<!--[eoform:auth_source]-->
+
diff --git a/app/views/auth_sources/_form.rhtml b/app/views/ldap_auth_sources/_form.rhtml
index 9ffffafc7..9ffffafc7 100644
--- a/app/views/auth_sources/_form.rhtml
+++ b/app/views/ldap_auth_sources/_form.rhtml
diff --git a/app/views/settings/_authentication.rhtml b/app/views/settings/_authentication.rhtml
index 81814bba3..7e8e693df 100644
--- a/app/views/settings/_authentication.rhtml
+++ b/app/views/settings/_authentication.rhtml
@@ -20,7 +20,7 @@
</div>
<div style="float:right;">
- <%= link_to l(:label_ldap_authentication), :controller => 'auth_sources', :action => 'index' %>
+ <%= link_to l(:label_ldap_authentication), :controller => 'ldap_auth_sources', :action => 'index' %>
</div>
<%= submit_tag l(:button_save) %>
diff --git a/test/functional/auth_sources_controller_test.rb b/test/functional/auth_sources_controller_test.rb
new file mode 100644
index 000000000..bd97844ed
--- /dev/null
+++ b/test/functional/auth_sources_controller_test.rb
@@ -0,0 +1,83 @@
+require 'test_helper'
+
+class AuthSourcesControllerTest < ActionController::TestCase
+ fixtures :all
+
+ def setup
+ @request.session[:user_id] = 1
+ end
+
+ context "get :index" do
+ setup do
+ get :index
+ end
+
+ should_assign_to :auth_sources
+ should_assign_to :auth_source_pages
+ should_respond_with :success
+ should_render_template :index
+ end
+
+ context "get :new" do
+ setup do
+ get :new
+ end
+
+ should_assign_to :auth_source
+ should_respond_with :success
+ should_render_template :new
+
+ should "initilize a new AuthSource" do
+ assert_equal AuthSource, assigns(:auth_source).class
+ assert assigns(:auth_source).new_record?
+ end
+ end
+
+ context "post :create" do
+ setup do
+ post :create, :auth_source => {:name => 'Test'}
+ end
+
+ should_respond_with :redirect
+ should_redirect_to("index") {{:action => 'index'}}
+ should_set_the_flash_to /success/i
+ end
+
+ context "get :edit" do
+ setup do
+ @auth_source = AuthSource.generate!(:name => 'TestEdit')
+ get :edit, :id => @auth_source.id
+ end
+
+ should_assign_to(:auth_source) {@auth_source}
+ should_respond_with :success
+ should_render_template :edit
+ end
+
+ context "post :update" do
+ setup do
+ @auth_source = AuthSource.generate!(:name => 'TestEdit')
+ post :update, :id => @auth_source.id, :auth_source => {:name => 'TestUpdate'}
+ end
+
+ should_respond_with :redirect
+ should_redirect_to("index") {{:action => 'index'}}
+ should_set_the_flash_to /update/i
+ end
+
+ context "post :destroy" do
+ context "without users" do
+ setup do
+ @auth_source = AuthSource.generate!(:name => 'TestEdit')
+ post :destroy, :id => @auth_source.id
+ end
+
+ should_respond_with :redirect
+ should_redirect_to("index") {{:action => 'index'}}
+ should_set_the_flash_to /deletion/i
+
+ end
+
+ should "be tested with users"
+ end
+end
diff --git a/test/functional/ldap_auth_sources_controller.rb b/test/functional/ldap_auth_sources_controller.rb
new file mode 100644
index 000000000..f0ae17a9e
--- /dev/null
+++ b/test/functional/ldap_auth_sources_controller.rb
@@ -0,0 +1,24 @@
+require 'test_helper'
+
+class LdapAuthSourcesControllerTest < ActionController::TestCase
+ fixtures :all
+
+ def setup
+ @request.session[:user_id] = 1
+ end
+
+ context "get :new" do
+ setup do
+ get :new
+ end
+
+ should_assign_to :auth_source
+ should_respond_with :success
+ should_render_template :new
+
+ should "initilize a new AuthSource" do
+ assert_equal AuthSourceLdap, assigns(:auth_source).class
+ assert assigns(:auth_source).new_record?
+ end
+ end
+end