diff options
author | Douwe Maan <douwe@gitlab.com> | 2016-03-11 22:34:33 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2016-03-11 22:34:33 +0000 |
commit | cb81c8a5efd54586a19cbeeb69c7572b58dc1a81 (patch) | |
tree | 6f18f4682bc472938f214bad831da48eaf941e04 /spec | |
parent | 70bf6dc702b6354c3a00d0b81e7d7c10be25ffb8 (diff) | |
parent | 5844a21a0acae08a19fa82984dcc0feb1b8777c5 (diff) | |
download | gitlab-ce-cb81c8a5efd54586a19cbeeb69c7572b58dc1a81.tar.gz |
Merge branch 'rs-issue-12944' into 'master'
Use a custom Devise failure app to handle unauthenticated .zip requests
Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/12944
See merge request !2828
Diffstat (limited to 'spec')
-rw-r--r-- | spec/controllers/projects/repositories_controller_spec.rb | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/spec/controllers/projects/repositories_controller_spec.rb b/spec/controllers/projects/repositories_controller_spec.rb index 09ec4f18f9d..0ddbec9eac2 100644 --- a/spec/controllers/projects/repositories_controller_spec.rb +++ b/spec/controllers/projects/repositories_controller_spec.rb @@ -2,30 +2,41 @@ require "spec_helper" describe Projects::RepositoriesController do let(:project) { create(:project) } - let(:user) { create(:user) } describe "GET archive" do - before do - sign_in(user) - project.team << [user, :developer] - end - - it "uses Gitlab::Workhorse" do - expect(Gitlab::Workhorse).to receive(:send_git_archive).with(project, "master", "zip") + context 'as a guest' do + it 'responds with redirect in correct format' do + get :archive, namespace_id: project.namespace.path, project_id: project.path, format: "zip" - get :archive, namespace_id: project.namespace.path, project_id: project.path, ref: "master", format: "zip" + expect(response.content_type).to start_with 'text/html' + expect(response).to be_redirect + end end - context "when the service raises an error" do + context 'as a user' do + let(:user) { create(:user) } before do - allow(Gitlab::Workhorse).to receive(:send_git_archive).and_raise("Archive failed") + project.team << [user, :developer] + sign_in(user) end + it "uses Gitlab::Workhorse" do + expect(Gitlab::Workhorse).to receive(:send_git_archive).with(project, "master", "zip") - it "renders Not Found" do get :archive, namespace_id: project.namespace.path, project_id: project.path, ref: "master", format: "zip" + end + + context "when the service raises an error" do + + before do + allow(Gitlab::Workhorse).to receive(:send_git_archive).and_raise("Archive failed") + end + + it "renders Not Found" do + get :archive, namespace_id: project.namespace.path, project_id: project.path, ref: "master", format: "zip" - expect(response.status).to eq(404) + expect(response.status).to eq(404) + end end end end |