diff options
author | Sean McGivern <sean@gitlab.com> | 2017-06-13 17:14:14 +0000 |
---|---|---|
committer | Mike Greiling <mike@pixelcog.com> | 2017-07-19 22:28:34 -0500 |
commit | ceda6bd5a6d5e7b24f0ec003ce2e7b446d0917c0 (patch) | |
tree | 5dc353572853f536a9184f833cc3047e47109e23 /spec/controllers/dashboard | |
parent | 88df076fae9568314473de5fa6a0086c33663869 (diff) | |
download | gitlab-ce-ceda6bd5a6d5e7b24f0ec003ce2e7b446d0917c0.tar.gz |
Merge branch '33303-404-for-unauthorized-project' into 'security-9-3'
[9.3 security fix] Renders 404 if given project is not readable by the user on Todos dashboard
See merge request !2118
Diffstat (limited to 'spec/controllers/dashboard')
-rw-r--r-- | spec/controllers/dashboard/todos_controller_spec.rb | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/spec/controllers/dashboard/todos_controller_spec.rb b/spec/controllers/dashboard/todos_controller_spec.rb index 085f3fd8543..4a48621abe1 100644 --- a/spec/controllers/dashboard/todos_controller_spec.rb +++ b/spec/controllers/dashboard/todos_controller_spec.rb @@ -12,6 +12,36 @@ describe Dashboard::TodosController do end describe 'GET #index' do + context 'project authorization' do + it 'renders 404 when user does not have read access on given project' do + unauthorized_project = create(:empty_project, :private) + + get :index, project_id: unauthorized_project.id + + expect(response).to have_http_status(404) + end + + it 'renders 404 when given project does not exists' do + get :index, project_id: 999 + + expect(response).to have_http_status(404) + end + + it 'renders 200 when filtering for "any project" todos' do + get :index, project_id: '' + + expect(response).to have_http_status(200) + end + + it 'renders 200 when user has access on given project' do + authorized_project = create(:empty_project, :public) + + get :index, project_id: authorized_project.id + + expect(response).to have_http_status(200) + end + end + context 'when using pagination' do let(:last_page) { user.todos.page.total_pages } let!(:issues) { create_list(:issue, 2, project: project, assignees: [user]) } |