diff options
author | Eric Davis <edavis@littlestreamsoftware.com> | 2010-05-23 03:16:31 +0000 |
---|---|---|
committer | Eric Davis <edavis@littlestreamsoftware.com> | 2010-05-23 03:16:31 +0000 |
commit | 715c9d16ef2c2effbc614dace8b50d145e703b80 (patch) | |
tree | 5050ba97c118471ff54a17969c7d184d1a11d328 | |
parent | a1f73c8b20317702d4b892c5b47f0b6c62a657e2 (diff) | |
download | redmine-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.rb | 22 | ||||
-rw-r--r-- | app/controllers/ldap_auth_sources_controller.rb | 25 | ||||
-rw-r--r-- | app/views/admin/_menu.rhtml | 1 | ||||
-rw-r--r-- | app/views/auth_sources/_form.html.erb | 13 | ||||
-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.rhtml | 2 | ||||
-rw-r--r-- | test/functional/auth_sources_controller_test.rb | 83 | ||||
-rw-r--r-- | test/functional/ldap_auth_sources_controller.rb | 24 |
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 |