summaryrefslogtreecommitdiff
path: root/spec/requests/api/repositories_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/requests/api/repositories_spec.rb')
-rw-r--r--spec/requests/api/repositories_spec.rb18
1 files changed, 13 insertions, 5 deletions
diff --git a/spec/requests/api/repositories_spec.rb b/spec/requests/api/repositories_spec.rb
index 55243e83017..36707f32d04 100644
--- a/spec/requests/api/repositories_spec.rb
+++ b/spec/requests/api/repositories_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require 'mime/types'
-describe API::Repositories do
+RSpec.describe API::Repositories do
include RepoHelpers
include WorkhorseHelpers
@@ -227,7 +227,8 @@ describe API::Repositories do
end
describe "GET /projects/:id/repository/archive(.:format)?:sha" do
- let(:route) { "/projects/#{project.id}/repository/archive" }
+ let(:project_id) { CGI.escape(project.full_path) }
+ let(:route) { "/projects/#{project_id}/repository/archive" }
before do
allow(::Gitlab::ApplicationRateLimiter).to receive(:throttled?).and_return(false)
@@ -246,7 +247,7 @@ describe API::Repositories do
end
it 'returns the repository archive archive.zip' do
- get api("/projects/#{project.id}/repository/archive.zip", user)
+ get api("/projects/#{project_id}/repository/archive.zip", user)
expect(response).to have_gitlab_http_status(:ok)
@@ -257,7 +258,7 @@ describe API::Repositories do
end
it 'returns the repository archive archive.tar.bz2' do
- get api("/projects/#{project.id}/repository/archive.tar.bz2", user)
+ get api("/projects/#{project_id}/repository/archive.tar.bz2", user)
expect(response).to have_gitlab_http_status(:ok)
@@ -277,7 +278,7 @@ describe API::Repositories do
it 'rate limits user when thresholds hit' do
allow(::Gitlab::ApplicationRateLimiter).to receive(:throttled?).and_return(true)
- get api("/projects/#{project.id}/repository/archive.tar.bz2", user)
+ get api("/projects/#{project_id}/repository/archive.tar.bz2", user)
expect(response).to have_gitlab_http_status(:too_many_requests)
end
@@ -302,6 +303,13 @@ describe API::Repositories do
end
end
+ context 'when unauthenticated and project path has dots' do
+ it_behaves_like 'repository archive' do
+ let(:project) { create(:project, :public, :repository, path: 'path.with.dot') }
+ let(:current_user) { nil }
+ end
+ end
+
context 'when unauthenticated', 'and project is private' do
it_behaves_like '404 response' do
let(:request) { get api(route) }