diff options
Diffstat (limited to 'spec/controllers/projects/repositories_controller_spec.rb')
-rw-r--r-- | spec/controllers/projects/repositories_controller_spec.rb | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/spec/controllers/projects/repositories_controller_spec.rb b/spec/controllers/projects/repositories_controller_spec.rb index aeb053fe9f6..42dfdd3115c 100644 --- a/spec/controllers/projects/repositories_controller_spec.rb +++ b/spec/controllers/projects/repositories_controller_spec.rb @@ -17,6 +17,7 @@ describe Projects::RepositoriesController do context 'as a user' do let(:user) { create(:user) } + let(:archive_name) { "#{project.path}-master" } before do project.add_developer(user) @@ -30,9 +31,18 @@ describe Projects::RepositoriesController do end it 'responds with redirect to the short name archive if fully qualified' do - get :archive, params: { namespace_id: project.namespace, project_id: project, id: "master/#{project.path}-master" }, format: "zip" + get :archive, params: { namespace_id: project.namespace, project_id: project, id: "master/#{archive_name}" }, format: "zip" expect(assigns(:ref)).to eq("master") + expect(assigns(:filename)).to eq(archive_name) + expect(response.header[Gitlab::Workhorse::SEND_DATA_HEADER]).to start_with("git-archive:") + end + + it 'responds with redirect for a path with multiple slashes' do + get :archive, params: { namespace_id: project.namespace, project_id: project, id: "improve/awesome/#{archive_name}" }, format: "zip" + + expect(assigns(:ref)).to eq("improve/awesome") + expect(assigns(:filename)).to eq(archive_name) expect(response.header[Gitlab::Workhorse::SEND_DATA_HEADER]).to start_with("git-archive:") end |