summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-08-14 11:01:43 +0000
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-08-14 11:01:43 +0000
commit3483024d93b9ca56e0bddffbbd0aff5714eb2833 (patch)
tree63c5830ace78f20e3edb7da70be9656e35ad7c5e
parentb6bdd650a54306c3f56f8332a64a3f5194ee793d (diff)
parentf33fe50f0d37757bd482106fe4e82c09ecfe42d0 (diff)
downloadgitlab-ce-3483024d93b9ca56e0bddffbbd0aff5714eb2833.tar.gz
Merge branch 'disable-internal-tracker-when-external-in-use' into 'master'
Disable internal issue tracker if external tracker in use ### What does this MR do? This MR disables routes to the internal issue tracker if an external issue tracker (e.g. Redmine) is in use. A 404 page is returned if a user attempts to access any of the issue routes. ### Why was this MR needed? Enabling the external issue tracker would still keep the internal one active, which would lead to odd behavior where users could create issues but not close them. ### What are the relevant issue numbers? Closes #2006 See merge request !993
-rw-r--r--CHANGELOG1
-rw-r--r--app/controllers/projects/issues_controller.rb2
-rw-r--r--spec/controllers/projects/issues_controller_spec.rb37
3 files changed, 39 insertions, 1 deletions
diff --git a/CHANGELOG b/CHANGELOG
index f4abb5f5eb5..e890c0fed63 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -28,6 +28,7 @@ v 7.14.0 (unreleased)
- Fix file upload dialog for comment editing (Daniel Gerhardt)
- Set OmniAuth full_host parameter to ensure redirect URIs are correct (Stan Hu)
- Return comments in created order in merge request API (Stan Hu)
+ - Disable internal issue tracker controller if external tracker is used (Stan Hu)
- Expire Rails cache entries after two weeks to prevent endless Redis growth
- Add support for destroying project milestones (Stan Hu)
- Allow custom backup archive permissions
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb
index bfafdeeb1fb..0f89f2e88cc 100644
--- a/app/controllers/projects/issues_controller.rb
+++ b/app/controllers/projects/issues_controller.rb
@@ -131,7 +131,7 @@ class Projects::IssuesController < Projects::ApplicationController
end
def module_enabled
- return render_404 unless @project.issues_enabled
+ return render_404 unless @project.issues_enabled && @project.default_issues_tracker?
end
# Since iids are implemented only in 6.1
diff --git a/spec/controllers/projects/issues_controller_spec.rb b/spec/controllers/projects/issues_controller_spec.rb
new file mode 100644
index 00000000000..871b9219ca9
--- /dev/null
+++ b/spec/controllers/projects/issues_controller_spec.rb
@@ -0,0 +1,37 @@
+require('spec_helper')
+
+describe Projects::IssuesController do
+ let(:project) { create(:project) }
+ let(:user) { create(:user) }
+ let(:issue) { create(:issue, project: project) }
+
+ before do
+ sign_in(user)
+ project.team << [user, :developer]
+ controller.instance_variable_set(:@project, project)
+ end
+
+ describe "GET #index" do
+ it "returns index" do
+ get :index, namespace_id: project.namespace.id, project_id: project.id
+
+ expect(response.status).to eq(200)
+ end
+
+ it "returns 404 when issues are disabled" do
+ project.issues_enabled = false
+ project.save
+
+ get :index, namespace_id: project.namespace.id, project_id: project.id
+ expect(response.status).to eq(404)
+ end
+
+ it "returns 404 when external issue tracker is enabled" do
+ allow(project).to receive(:default_issues_tracker?).and_return(false)
+
+ get :index, namespace_id: project.namespace.id, project_id: project.id
+ expect(response.status).to eq(404)
+ end
+
+ end
+end