summaryrefslogtreecommitdiff
path: root/spec/requests/git_http_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/requests/git_http_spec.rb')
-rw-r--r--spec/requests/git_http_spec.rb324
1 files changed, 162 insertions, 162 deletions
diff --git a/spec/requests/git_http_spec.rb b/spec/requests/git_http_spec.rb
index 5b625fd47be..fb027f18685 100644
--- a/spec/requests/git_http_spec.rb
+++ b/spec/requests/git_http_spec.rb
@@ -1,17 +1,17 @@
require "spec_helper"
-describe 'Git HTTP requests' do
+describe "Git HTTP requests" do
include ProjectForksHelper
include TermsHelper
include GitHttpHelpers
include WorkhorseHelpers
- shared_examples 'pulls require Basic HTTP Authentication' do
+ shared_examples "pulls require Basic HTTP Authentication" do
context "when no credentials are provided" do
it "responds to downloads with status 401 Unauthorized (no project existence information leak)" do
download(path) do |response|
expect(response).to have_gitlab_http_status(:unauthorized)
- expect(response.header['WWW-Authenticate']).to start_with('Basic ')
+ expect(response.header["WWW-Authenticate"]).to start_with("Basic ")
end
end
end
@@ -20,7 +20,7 @@ describe 'Git HTTP requests' do
it "responds to downloads with status 401 Unauthorized" do
download(path, user: user.username) do |response|
expect(response).to have_gitlab_http_status(:unauthorized)
- expect(response.header['WWW-Authenticate']).to start_with('Basic ')
+ expect(response.header["WWW-Authenticate"]).to start_with("Basic ")
end
end
end
@@ -30,7 +30,7 @@ describe 'Git HTTP requests' do
it "responds to downloads with status 401 Unauthorized" do
download(path, user: user.username, password: "wrong-password") do |response|
expect(response).to have_gitlab_http_status(:unauthorized)
- expect(response.header['WWW-Authenticate']).to start_with('Basic ')
+ expect(response.header["WWW-Authenticate"]).to start_with("Basic ")
end
end
end
@@ -39,19 +39,19 @@ describe 'Git HTTP requests' do
it "does not respond to downloads with status 401 Unauthorized" do
download(path, user: user.username, password: user.password) do |response|
expect(response).not_to have_gitlab_http_status(:unauthorized)
- expect(response.header['WWW-Authenticate']).to be_nil
+ expect(response.header["WWW-Authenticate"]).to be_nil
end
end
end
end
end
- shared_examples 'pushes require Basic HTTP Authentication' do
+ shared_examples "pushes require Basic HTTP Authentication" do
context "when no credentials are provided" do
it "responds to uploads with status 401 Unauthorized (no project existence information leak)" do
upload(path) do |response|
expect(response).to have_gitlab_http_status(:unauthorized)
- expect(response.header['WWW-Authenticate']).to start_with('Basic ')
+ expect(response.header["WWW-Authenticate"]).to start_with("Basic ")
end
end
end
@@ -60,7 +60,7 @@ describe 'Git HTTP requests' do
it "responds to uploads with status 401 Unauthorized" do
upload(path, user: user.username) do |response|
expect(response).to have_gitlab_http_status(:unauthorized)
- expect(response.header['WWW-Authenticate']).to start_with('Basic ')
+ expect(response.header["WWW-Authenticate"]).to start_with("Basic ")
end
end
end
@@ -70,7 +70,7 @@ describe 'Git HTTP requests' do
it "responds to uploads with status 401 Unauthorized" do
upload(path, user: user.username, password: "wrong-password") do |response|
expect(response).to have_gitlab_http_status(:unauthorized)
- expect(response.header['WWW-Authenticate']).to start_with('Basic ')
+ expect(response.header["WWW-Authenticate"]).to start_with("Basic ")
end
end
end
@@ -79,14 +79,14 @@ describe 'Git HTTP requests' do
it "does not respond to uploads with status 401 Unauthorized" do
upload(path, user: user.username, password: user.password) do |response|
expect(response).not_to have_gitlab_http_status(:unauthorized)
- expect(response.header['WWW-Authenticate']).to be_nil
+ expect(response.header["WWW-Authenticate"]).to be_nil
end
end
end
end
end
- shared_examples_for 'pulls are allowed' do
+ shared_examples_for "pulls are allowed" do
it do
download(path, env) do |response|
expect(response).to have_gitlab_http_status(:ok)
@@ -95,7 +95,7 @@ describe 'Git HTTP requests' do
end
end
- shared_examples_for 'pushes are allowed' do
+ shared_examples_for "pushes are allowed" do
it do
upload(path, env) do |response|
expect(response).to have_gitlab_http_status(:ok)
@@ -109,13 +109,13 @@ describe 'Git HTTP requests' do
context "when the project doesn't exist" do
context "when namespace doesn't exist" do
- let(:path) { 'doesnt/exist.git' }
+ let(:path) { "doesnt/exist.git" }
- it_behaves_like 'pulls require Basic HTTP Authentication'
- it_behaves_like 'pushes require Basic HTTP Authentication'
+ it_behaves_like "pulls require Basic HTTP Authentication"
+ it_behaves_like "pushes require Basic HTTP Authentication"
- context 'when authenticated' do
- it 'rejects downloads and uploads with 404 Not Found' do
+ context "when authenticated" do
+ it "rejects downloads and uploads with 404 Not Found" do
download_or_upload(path, user: user.username, password: user.password) do |response|
expect(response).to have_gitlab_http_status(:not_found)
end
@@ -123,19 +123,19 @@ describe 'Git HTTP requests' do
end
end
- context 'when namespace exists' do
+ context "when namespace exists" do
let(:path) { "#{user.namespace.path}/new-project.git"}
- context 'when authenticated' do
- it 'creates a new project under the existing namespace' do
- expect do
+ context "when authenticated" do
+ it "creates a new project under the existing namespace" do
+ expect {
upload(path, user: user.username, password: user.password) do |response|
expect(response).to have_gitlab_http_status(:ok)
end
- end.to change { user.projects.count }.by(1)
+ }.to change { user.projects.count }.by(1)
end
- it 'rejects push with 422 Unprocessable Entity when project is invalid' do
+ it "rejects push with 422 Unprocessable Entity when project is invalid" do
path = "#{user.namespace.path}/new.git"
push_get(path, user: user.username, password: user.password)
@@ -153,42 +153,42 @@ describe 'Git HTTP requests' do
context "when the project is public" do
let(:project) { create(:project, :wiki_repo, :public, :wiki_enabled) }
- it_behaves_like 'pushes require Basic HTTP Authentication'
+ it_behaves_like "pushes require Basic HTTP Authentication"
- context 'when unauthenticated' do
+ context "when unauthenticated" do
let(:env) { {} }
- it_behaves_like 'pulls are allowed'
+ it_behaves_like "pulls are allowed"
it "responds to pulls with the wiki's repo" do
download(path) do |response|
json_body = ActiveSupport::JSON.decode(response.body)
- expect(json_body['Repository']['relative_path']).to eq(wiki.repository.relative_path)
+ expect(json_body["Repository"]["relative_path"]).to eq(wiki.repository.relative_path)
end
end
end
- context 'when authenticated' do
- let(:env) { { user: user.username, password: user.password } }
+ context "when authenticated" do
+ let(:env) { {user: user.username, password: user.password} }
- context 'and as a developer on the team' do
+ context "and as a developer on the team" do
before do
project.add_developer(user)
end
- context 'but the repo is disabled' do
+ context "but the repo is disabled" do
let(:project) { create(:project, :wiki_repo, :public, :repository_disabled, :wiki_enabled) }
- it_behaves_like 'pulls are allowed'
- it_behaves_like 'pushes are allowed'
+ it_behaves_like "pulls are allowed"
+ it_behaves_like "pushes are allowed"
end
end
- context 'and not on the team' do
- it_behaves_like 'pulls are allowed'
+ context "and not on the team" do
+ it_behaves_like "pulls are allowed"
- it 'rejects pushes with 403 Forbidden' do
+ it "rejects pushes with 403 Forbidden" do
upload(path, env) do |response|
expect(response).to have_gitlab_http_status(:forbidden)
expect(response.body).to eq(git_access_wiki_error(:write_to_wiki))
@@ -201,25 +201,25 @@ describe 'Git HTTP requests' do
context "when the project is private" do
let(:project) { create(:project, :wiki_repo, :private, :wiki_enabled) }
- it_behaves_like 'pulls require Basic HTTP Authentication'
- it_behaves_like 'pushes require Basic HTTP Authentication'
+ it_behaves_like "pulls require Basic HTTP Authentication"
+ it_behaves_like "pushes require Basic HTTP Authentication"
- context 'when authenticated' do
- context 'and as a developer on the team' do
+ context "when authenticated" do
+ context "and as a developer on the team" do
before do
project.add_developer(user)
end
- context 'but the repo is disabled' do
+ context "but the repo is disabled" do
let(:project) { create(:project, :wiki_repo, :private, :repository_disabled, :wiki_enabled) }
- it 'allows clones' do
+ it "allows clones" do
download(path, user: user.username, password: user.password) do |response|
expect(response).to have_gitlab_http_status(:ok)
end
end
- it 'pushes are allowed' do
+ it "pushes are allowed" do
upload(path, user: user.username, password: user.password) do |response|
expect(response).to have_gitlab_http_status(:ok)
end
@@ -227,15 +227,15 @@ describe 'Git HTTP requests' do
end
end
- context 'and not on the team' do
- it 'rejects clones with 404 Not Found' do
+ context "and not on the team" do
+ it "rejects clones with 404 Not Found" do
download(path, user: user.username, password: user.password) do |response|
expect(response).to have_gitlab_http_status(:not_found)
expect(response.body).to eq(git_access_error(:project_not_found))
end
end
- it 'rejects pushes with 404 Not Found' do
+ it "rejects pushes with 404 Not Found" do
upload(path, user: user.username, password: user.password) do |response|
expect(response).to have_gitlab_http_status(:not_found)
expect(response.body).to eq(git_access_error(:project_not_found))
@@ -252,31 +252,31 @@ describe 'Git HTTP requests' do
context "when the project is public" do
let(:project) { create(:project, :repository, :public) }
- it_behaves_like 'pushes require Basic HTTP Authentication'
+ it_behaves_like "pushes require Basic HTTP Authentication"
- context 'when not authenticated' do
+ context "when not authenticated" do
let(:env) { {} }
- it_behaves_like 'pulls are allowed'
+ it_behaves_like "pulls are allowed"
end
context "when authenticated" do
- let(:env) { { user: user.username, password: user.password } }
+ let(:env) { {user: user.username, password: user.password} }
- context 'as a developer on the team' do
+ context "as a developer on the team" do
before do
project.add_developer(user)
end
- it_behaves_like 'pulls are allowed'
- it_behaves_like 'pushes are allowed'
+ it_behaves_like "pulls are allowed"
+ it_behaves_like "pushes are allowed"
- context 'but git-receive-pack over HTTP is disabled in config' do
+ context "but git-receive-pack over HTTP is disabled in config" do
before do
allow(Gitlab.config.gitlab_shell).to receive(:receive_pack).and_return(false)
end
- it 'rejects pushes with 403 Forbidden' do
+ it "rejects pushes with 403 Forbidden" do
upload(path, env) do |response|
expect(response).to have_gitlab_http_status(:forbidden)
expect(response.body).to eq(git_access_error(:receive_pack_disabled_over_http))
@@ -284,7 +284,7 @@ describe 'Git HTTP requests' do
end
end
- context 'but git-upload-pack over HTTP is disabled in config' do
+ context "but git-upload-pack over HTTP is disabled in config" do
it "rejects pushes with 403 Forbidden" do
allow(Gitlab.config.gitlab_shell).to receive(:upload_pack).and_return(false)
@@ -296,73 +296,73 @@ describe 'Git HTTP requests' do
end
end
- context 'and not a member of the team' do
- it_behaves_like 'pulls are allowed'
+ context "and not a member of the team" do
+ it_behaves_like "pulls are allowed"
- it 'rejects pushes with 403 Forbidden' do
+ it "rejects pushes with 403 Forbidden" do
upload(path, env) do |response|
expect(response).to have_gitlab_http_status(:forbidden)
- expect(response.body).to eq('You are not allowed to push code to this project.')
+ expect(response.body).to eq("You are not allowed to push code to this project.")
end
end
- context 'when merge requests are open that allow maintainer access' do
+ context "when merge requests are open that allow maintainer access" do
let(:canonical_project) { create(:project, :public, :repository) }
let(:project) { fork_project(canonical_project, nil, repository: true) }
before do
canonical_project.add_maintainer(user)
create(:merge_request,
- source_project: project,
- target_project: canonical_project,
- source_branch: 'fixes',
- allow_collaboration: true)
+ source_project: project,
+ target_project: canonical_project,
+ source_branch: "fixes",
+ allow_collaboration: true)
end
- it_behaves_like 'pushes are allowed'
+ it_behaves_like "pushes are allowed"
end
end
end
- context 'when the request is not from gitlab-workhorse' do
- it 'raises an exception' do
- expect do
+ context "when the request is not from gitlab-workhorse" do
+ it "raises an exception" do
+ expect {
get("/#{project.full_path}.git/info/refs?service=git-upload-pack")
- end.to raise_error(JWT::DecodeError)
+ }.to raise_error(JWT::DecodeError)
end
end
- context 'when the repo is public' do
- context 'but the repo is disabled' do
+ context "when the repo is public" do
+ context "but the repo is disabled" do
let(:project) { create(:project, :public, :repository, :repository_disabled) }
let(:path) { "#{project.full_path}.git" }
let(:env) { {} }
- it_behaves_like 'pulls require Basic HTTP Authentication'
- it_behaves_like 'pushes require Basic HTTP Authentication'
+ it_behaves_like "pulls require Basic HTTP Authentication"
+ it_behaves_like "pushes require Basic HTTP Authentication"
end
- context 'but the repo is enabled' do
+ context "but the repo is enabled" do
let(:project) { create(:project, :public, :repository, :repository_enabled) }
let(:path) { "#{project.full_path}.git" }
let(:env) { {} }
- it_behaves_like 'pulls are allowed'
+ it_behaves_like "pulls are allowed"
end
- context 'but only project members are allowed' do
+ context "but only project members are allowed" do
let(:project) { create(:project, :public, :repository, :repository_private) }
- it_behaves_like 'pulls require Basic HTTP Authentication'
- it_behaves_like 'pushes require Basic HTTP Authentication'
+ it_behaves_like "pulls require Basic HTTP Authentication"
+ it_behaves_like "pushes require Basic HTTP Authentication"
end
end
- context 'and the user requests a redirected path' do
- let!(:redirect) { project.route.create_redirect('foo/bar') }
+ context "and the user requests a redirected path" do
+ let!(:redirect) { project.route.create_redirect("foo/bar") }
let(:path) { "#{redirect.path}.git" }
- it 'downloads get status 200 for redirects' do
+ it "downloads get status 200 for redirects" do
clone_get(path, {})
expect(response).to have_gitlab_http_status(:ok)
@@ -373,21 +373,21 @@ describe 'Git HTTP requests' do
context "when the project is private" do
let(:project) { create(:project, :repository, :private) }
- it_behaves_like 'pulls require Basic HTTP Authentication'
- it_behaves_like 'pushes require Basic HTTP Authentication'
+ it_behaves_like "pulls require Basic HTTP Authentication"
+ it_behaves_like "pushes require Basic HTTP Authentication"
context "when username and password are provided" do
- let(:env) { { user: user.username, password: 'nope' } }
+ let(:env) { {user: user.username, password: "nope"} }
context "when authentication fails" do
context "when the user is IP banned" do
before do
- Gitlab.config.rack_attack.git_basic_auth['enabled'] = true
+ Gitlab.config.rack_attack.git_basic_auth["enabled"] = true
end
it "responds with status 401" do
expect(Rack::Attack::Allow2Ban).to receive(:filter).and_return(true)
- allow_any_instance_of(ActionDispatch::Request).to receive(:ip).and_return('1.2.3.4')
+ allow_any_instance_of(ActionDispatch::Request).to receive(:ip).and_return("1.2.3.4")
clone_get(path, env)
@@ -397,7 +397,7 @@ describe 'Git HTTP requests' do
end
context "when authentication succeeds" do
- let(:env) { { user: user.username, password: user.password } }
+ let(:env) { {user: user.username, password: user.password} }
context "when the user has access to the project" do
before do
@@ -417,7 +417,7 @@ describe 'Git HTTP requests' do
it "rejects pulls with 401 Unauthorized for unknown projects (no project existence information leak)" do
user.block
- download('doesnt/exist.git', env) do |response|
+ download("doesnt/exist.git", env) do |response|
expect(response).to have_gitlab_http_status(:unauthorized)
end
end
@@ -425,7 +425,7 @@ describe 'Git HTTP requests' do
context "when the user isn't blocked" do
before do
- Gitlab.config.rack_attack.git_basic_auth['enabled'] = true
+ Gitlab.config.rack_attack.git_basic_auth["enabled"] = true
end
it "resets the IP in Rack Attack on download" do
@@ -446,7 +446,7 @@ describe 'Git HTTP requests' do
end
end
- it 'updates the user last activity', :clean_gitlab_redis_shared_state do
+ it "updates the user last activity", :clean_gitlab_redis_shared_state do
expect(user.last_activity_on).to be_nil
download(path, env) do |response|
@@ -462,13 +462,13 @@ describe 'Git HTTP requests' do
end
let(:path) { "#{project.full_path}.git" }
- let(:env) { { user: 'oauth2', password: @token.token } }
+ let(:env) { {user: "oauth2", password: @token.token} }
- it_behaves_like 'pulls are allowed'
- it_behaves_like 'pushes are allowed'
+ it_behaves_like "pulls are allowed"
+ it_behaves_like "pushes are allowed"
end
- context 'when user has 2FA enabled' do
+ context "when user has 2FA enabled" do
let(:user) { create(:user, :two_factor) }
let(:access_token) { create(:personal_access_token, user: user) }
let(:path) { "#{project.full_path}.git" }
@@ -477,60 +477,60 @@ describe 'Git HTTP requests' do
project.add_maintainer(user)
end
- context 'when username and password are provided' do
- it 'rejects pulls with personal access token error message' do
+ context "when username and password are provided" do
+ it "rejects pulls with personal access token error message" do
download(path, user: user.username, password: user.password) do |response|
expect(response).to have_gitlab_http_status(:unauthorized)
- expect(response.body).to include('You must use a personal access token with \'api\' scope for Git over HTTP')
+ expect(response.body).to include("You must use a personal access token with 'api' scope for Git over HTTP")
end
end
- it 'rejects the push attempt with personal access token error message' do
+ it "rejects the push attempt with personal access token error message" do
upload(path, user: user.username, password: user.password) do |response|
expect(response).to have_gitlab_http_status(:unauthorized)
- expect(response.body).to include('You must use a personal access token with \'api\' scope for Git over HTTP')
+ expect(response.body).to include("You must use a personal access token with 'api' scope for Git over HTTP")
end
end
end
- context 'when username and personal access token are provided' do
- let(:env) { { user: user.username, password: access_token.token } }
+ context "when username and personal access token are provided" do
+ let(:env) { {user: user.username, password: access_token.token} }
- it_behaves_like 'pulls are allowed'
- it_behaves_like 'pushes are allowed'
+ it_behaves_like "pulls are allowed"
+ it_behaves_like "pushes are allowed"
end
end
- context 'when internal auth is disabled' do
+ context "when internal auth is disabled" do
before do
allow_any_instance_of(ApplicationSetting).to receive(:password_authentication_enabled_for_git?) { false }
end
- it 'rejects pulls with personal access token error message' do
- download(path, user: 'foo', password: 'bar') do |response|
+ it "rejects pulls with personal access token error message" do
+ download(path, user: "foo", password: "bar") do |response|
expect(response).to have_gitlab_http_status(:unauthorized)
- expect(response.body).to include('You must use a personal access token with \'api\' scope for Git over HTTP')
+ expect(response.body).to include("You must use a personal access token with 'api' scope for Git over HTTP")
end
end
- it 'rejects pushes with personal access token error message' do
- upload(path, user: 'foo', password: 'bar') do |response|
+ it "rejects pushes with personal access token error message" do
+ upload(path, user: "foo", password: "bar") do |response|
expect(response).to have_gitlab_http_status(:unauthorized)
- expect(response.body).to include('You must use a personal access token with \'api\' scope for Git over HTTP')
+ expect(response.body).to include("You must use a personal access token with 'api' scope for Git over HTTP")
end
end
- context 'when LDAP is configured' do
+ context "when LDAP is configured" do
before do
allow(Gitlab::Auth::LDAP::Config).to receive(:enabled?).and_return(true)
allow_any_instance_of(Gitlab::Auth::LDAP::Authentication)
.to receive(:login).and_return(nil)
end
- it 'does not display the personal access token error message' do
- upload(path, user: 'foo', password: 'bar') do |response|
+ it "does not display the personal access token error message" do
+ upload(path, user: "foo", password: "bar") do |response|
expect(response).to have_gitlab_http_status(:unauthorized)
- expect(response.body).not_to include('You must use a personal access token with \'api\' scope for Git over HTTP')
+ expect(response.body).not_to include("You must use a personal access token with 'api' scope for Git over HTTP")
end
end
end
@@ -546,7 +546,7 @@ describe 'Git HTTP requests' do
it "repeated attempts followed by successful attempt" do
options = Gitlab.config.rack_attack.git_basic_auth
maxretry = options[:maxretry] - 1
- ip = '1.2.3.4'
+ ip = "1.2.3.4"
allow_any_instance_of(ActionDispatch::Request).to receive(:ip).and_return(ip)
Rack::Attack::Allow2Ban.reset(ip, options)
@@ -566,8 +566,8 @@ describe 'Git HTTP requests' do
end
end
- context 'and the user requests a redirected path' do
- let!(:redirect) { project.route.create_redirect('foo/bar') }
+ context "and the user requests a redirected path" do
+ let!(:redirect) { project.route.create_redirect("foo/bar") }
let(:path) { "#{redirect.path}.git" }
let(:project_moved_message) do
<<-MSG.strip_heredoc
@@ -579,7 +579,7 @@ describe 'Git HTTP requests' do
MSG
end
- it 'downloads get status 200' do
+ it "downloads get status 200" do
clone_get(path, env)
expect(response).to have_gitlab_http_status(:ok)
@@ -618,11 +618,11 @@ describe 'Git HTTP requests' do
build.update!(project: project) # can't associate it on factory create
end
- context 'when build created by system is authenticated' do
+ context "when build created by system is authenticated" do
let(:path) { "#{project.full_path}.git" }
- let(:env) { { user: 'gitlab-ci-token', password: build.token } }
+ let(:env) { {user: "gitlab-ci-token", password: build.token} }
- it_behaves_like 'pulls are allowed'
+ it_behaves_like "pulls are allowed"
# A non-401 here is not an information leak since the system is
# "authenticated" as CI using the correct token. It does not have
@@ -648,22 +648,22 @@ describe 'Git HTTP requests' do
end
end
- context 'and build created by' do
+ context "and build created by" do
before do
build.update(user: user)
project.add_reporter(user)
end
- shared_examples 'can download code only' do
+ shared_examples "can download code only" do
let(:path) { "#{project.full_path}.git" }
- let(:env) { { user: 'gitlab-ci-token', password: build.token } }
+ let(:env) { {user: "gitlab-ci-token", password: build.token} }
- it_behaves_like 'pulls are allowed'
+ it_behaves_like "pulls are allowed"
- context 'when the repo does not exist' do
+ context "when the repo does not exist" do
let(:project) { create(:project) }
- it 'rejects pulls with 404 Not Found' do
+ it "rejects pulls with 404 Not Found" do
clone_get path, env
expect(response).to have_gitlab_http_status(:not_found)
@@ -671,7 +671,7 @@ describe 'Git HTTP requests' do
end
end
- it 'rejects pushes with 403 Forbidden' do
+ it "rejects pushes with 403 Forbidden" do
push_get path, env
expect(response).to have_gitlab_http_status(:forbidden)
@@ -679,25 +679,25 @@ describe 'Git HTTP requests' do
end
end
- context 'administrator' do
+ context "administrator" do
let(:user) { create(:admin) }
- it_behaves_like 'can download code only'
+ it_behaves_like "can download code only"
- it 'downloads from other project get status 403' do
- clone_get "#{other_project.full_path}.git", user: 'gitlab-ci-token', password: build.token
+ it "downloads from other project get status 403" do
+ clone_get "#{other_project.full_path}.git", user: "gitlab-ci-token", password: build.token
expect(response).to have_gitlab_http_status(:forbidden)
end
end
- context 'regular user' do
+ context "regular user" do
let(:user) { create(:user) }
- it_behaves_like 'can download code only'
+ it_behaves_like "can download code only"
- it 'downloads from other project get status 404' do
- clone_get "#{other_project.full_path}.git", user: 'gitlab-ci-token', password: build.token
+ it "downloads from other project get status 404" do
+ clone_get "#{other_project.full_path}.git", user: "gitlab-ci-token", password: build.token
expect(response).to have_gitlab_http_status(:not_found)
end
@@ -707,7 +707,7 @@ describe 'Git HTTP requests' do
end
context "when the project path doesn't end in .git" do
- let(:project) { create(:project, :repository, :public, path: 'project.git-project') }
+ let(:project) { create(:project, :repository, :public, path: "project.git-project") }
context "GET info/refs" do
let(:path) { "/#{project.full_path}/info/refs" }
@@ -723,7 +723,7 @@ describe 'Git HTTP requests' do
end
context "when the upload-pack service is requested" do
- let(:params) { { service: 'git-upload-pack' } }
+ let(:params) { {service: "git-upload-pack"} }
before do
get path, params: params
@@ -735,7 +735,7 @@ describe 'Git HTTP requests' do
end
context "when the receive-pack service is requested" do
- let(:params) { { service: 'git-receive-pack' } }
+ let(:params) { {service: "git-receive-pack"} }
before do
get path, params: params
@@ -747,7 +747,7 @@ describe 'Git HTTP requests' do
end
context "when the params are anything else" do
- let(:params) { { service: 'git-implode-pack' } }
+ let(:params) { {service: "git-implode-pack"} }
before do
get path, params: params
@@ -779,8 +779,8 @@ describe 'Git HTTP requests' do
before do
# Provide a dummy file in its place
allow_any_instance_of(Repository).to receive(:blob_at).and_call_original
- allow_any_instance_of(Repository).to receive(:blob_at).with('b83d6e391c22777fca1ed3012fce84f633d7fed0', 'info/refs') do
- Blob.decorate(Gitlab::Git::Blob.find(project.repository, 'master', 'bar/branch-test.txt'), project)
+ allow_any_instance_of(Repository).to receive(:blob_at).with("b83d6e391c22777fca1ed3012fce84f633d7fed0", "info/refs") do
+ Blob.decorate(Gitlab::Git::Blob.find(project.repository, "master", "bar/branch-test.txt"), project)
end
get "/#{project.full_path}/blob/master/info/refs"
@@ -806,8 +806,8 @@ describe 'Git HTTP requests' do
describe "User with LDAP identity" do
let(:user) { create(:omniauth_user, extern_uid: dn) }
- let(:dn) { 'uid=john,ou=people,dc=example,dc=com' }
- let(:path) { 'doesnt/exist.git' }
+ let(:dn) { "uid=john,ou=people,dc=example,dc=com" }
+ let(:path) { "doesnt/exist.git" }
before do
allow(Gitlab::Auth::OAuth::Provider).to receive(:enabled?).and_return(true)
@@ -815,8 +815,8 @@ describe 'Git HTTP requests' do
allow_any_instance_of(Gitlab::Auth::LDAP::Authentication).to receive(:login).with(user.username, user.password).and_return(user)
end
- it_behaves_like 'pulls require Basic HTTP Authentication'
- it_behaves_like 'pushes require Basic HTTP Authentication'
+ it_behaves_like "pulls require Basic HTTP Authentication"
+ it_behaves_like "pushes require Basic HTTP Authentication"
context "when authentication succeeds" do
context "when the project doesn't exist" do
@@ -830,9 +830,9 @@ describe 'Git HTTP requests' do
context "when the project exists" do
let(:project) { create(:project, :repository) }
let(:path) { "#{project.full_path}.git" }
- let(:env) { { user: user.username, password: user.password } }
+ let(:env) { {user: user.username, password: user.password} }
- context 'and the user is on the team' do
+ context "and the user is on the team" do
before do
project.add_maintainer(user)
end
@@ -843,25 +843,25 @@ describe 'Git HTTP requests' do
end
end
- it_behaves_like 'pulls are allowed'
- it_behaves_like 'pushes are allowed'
+ it_behaves_like "pulls are allowed"
+ it_behaves_like "pushes are allowed"
end
end
end
end
- context 'when terms are enforced' do
+ context "when terms are enforced" do
let(:project) { create(:project, :repository) }
let(:user) { create(:user) }
let(:path) { "#{project.full_path}.git" }
- let(:env) { { user: user.username, password: user.password } }
+ let(:env) { {user: user.username, password: user.password} }
before do
project.add_maintainer(user)
enforce_terms
end
- it 'blocks git access when the user did not accept terms', :aggregate_failures do
+ it "blocks git access when the user did not accept terms", :aggregate_failures do
clone_get(path, env) do |response|
expect(response).to have_gitlab_http_status(:forbidden)
end
@@ -875,30 +875,30 @@ describe 'Git HTTP requests' do
end
end
- context 'when the user accepted the terms' do
+ context "when the user accepted the terms" do
before do
accept_terms(user)
end
- it 'allows clones' do
+ it "allows clones" do
clone_get(path, env) do |response|
expect(response).to have_gitlab_http_status(:ok)
end
end
- it_behaves_like 'pulls are allowed'
- it_behaves_like 'pushes are allowed'
+ it_behaves_like "pulls are allowed"
+ it_behaves_like "pushes are allowed"
end
- context 'from CI' do
+ context "from CI" do
let(:build) { create(:ci_build, :running) }
- let(:env) { { user: 'gitlab-ci-token', password: build.token } }
+ let(:env) { {user: "gitlab-ci-token", password: build.token} }
before do
build.update!(user: user, project: project)
end
- it_behaves_like 'pulls are allowed'
+ it_behaves_like "pulls are allowed"
end
end
end