From 7892c577c8b0d4b1e8f946a59adb574e900d9d72 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Thu, 17 Jun 2010 14:34:15 -0700 Subject: [PATCH] [#4177] Added a project module for contracts and a stubbed permission. --- app/controllers/contracts_controller.rb | 10 +++++ init.rb | 4 ++ .../disabled_contracts_module_test.rb | 37 +++++++++++++++++++ test/test_helper.rb | 16 ++++++++ 4 files changed, 67 insertions(+) create mode 100644 test/integration/disabled_contracts_module_test.rb diff --git a/app/controllers/contracts_controller.rb b/app/controllers/contracts_controller.rb index 555c7e7..c91f866 100644 --- a/app/controllers/contracts_controller.rb +++ b/app/controllers/contracts_controller.rb @@ -2,4 +2,14 @@ class ContractsController < InheritedResources::Base unloadable respond_to :html + + before_filter :find_project + before_filter :authorize + + private + + def find_project + @project = Project.find(params[:project_id]) + end + end diff --git a/init.rb b/init.rb index 73cd1a9..531aee5 100644 --- a/init.rb +++ b/init.rb @@ -10,6 +10,10 @@ Redmine::Plugin.register :redmine_contracts do requires_redmine :version_or_higher => '0.9.0' requires_redmine_plugin :redmine_rate, :version_or_higher => '0.1.0' + + project_module :contracts do + permission :manage_budget, {}, :require => :member + end end require 'dispatcher' diff --git a/test/integration/disabled_contracts_module_test.rb b/test/integration/disabled_contracts_module_test.rb new file mode 100644 index 0000000..8210cea --- /dev/null +++ b/test/integration/disabled_contracts_module_test.rb @@ -0,0 +1,37 @@ +require 'test_helper' + +class DisabledContractsModuleTest < ActionController::IntegrationTest + def setup + @user = User.generate!(:login => 'existing', :password => 'existing', :password_confirmation => 'existing', :admin => true) + login_as + end + + context "on a project with the Contracts module disabled" do + setup do + @project = Project.generate! + @project.enabled_modules.find_by_name('contracts').destroy + @project.reload + assert !@project.module_enabled?(:contracts), "Contracts enabled on project" + end + + should "block access to list" do + visit '/' + assert_response :success + + click_link 'Projects' + assert_response :success + + click_link @project.name + assert_response :success + + assert_select "#main-menu" do + assert_select 'a', :text => /contracts/i, :count => 0 + end + + visit "/projects/#{@project.identifier}/contracts" + assert_response :forbidden + assert_template 'common/403' + end + end + +end diff --git a/test/test_helper.rb b/test/test_helper.rb index 5835fbb..5647d61 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -9,3 +9,19 @@ require "webrat" Webrat.configure do |config| config.mode = :rails end + +module IntegrationTestHelper + def login_as(user="existing", password="existing") + visit "/login" + fill_in 'Login', :with => user + fill_in 'Password', :with => password + click_button 'login' + assert_response :success + assert User.current.logged? + end + +end + +class ActionController::IntegrationTest + include IntegrationTestHelper +end