Commit 3483024d authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

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
parents b6bdd650 f33fe50f
...@@ -28,6 +28,7 @@ v 7.14.0 (unreleased) ...@@ -28,6 +28,7 @@ v 7.14.0 (unreleased)
- Fix file upload dialog for comment editing (Daniel Gerhardt) - Fix file upload dialog for comment editing (Daniel Gerhardt)
- Set OmniAuth full_host parameter to ensure redirect URIs are correct (Stan Hu) - Set OmniAuth full_host parameter to ensure redirect URIs are correct (Stan Hu)
- Return comments in created order in merge request API (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 - Expire Rails cache entries after two weeks to prevent endless Redis growth
- Add support for destroying project milestones (Stan Hu) - Add support for destroying project milestones (Stan Hu)
- Allow custom backup archive permissions - Allow custom backup archive permissions
......
...@@ -131,7 +131,7 @@ class Projects::IssuesController < Projects::ApplicationController ...@@ -131,7 +131,7 @@ class Projects::IssuesController < Projects::ApplicationController
end end
def module_enabled def module_enabled
return render_404 unless @project.issues_enabled return render_404 unless @project.issues_enabled && @project.default_issues_tracker?
end end
# Since iids are implemented only in 6.1 # Since iids are implemented only in 6.1
......
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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment