Commit 3b0d2c83 authored by Heinrich Lee Yu's avatar Heinrich Lee Yu

Merge branch '213367-snippet-update-error-when-version-feature-flag-disabled' into 'master'

Resolve "Snippet update error when version feature flag disabled"

Closes #213367

See merge request gitlab-org/gitlab!28815
parents b5cf18b0 edd3080c
---
title: Resolve Snippet update error with version flag disabled
merge_request: 28815
author:
type: fixed
......@@ -108,7 +108,7 @@ module API
# check_ip - optional, only in EE version, may limit access to
# group resources based on its IP restrictions
post "/allowed" do
if repo_type.snippet? && Feature.disabled?(:version_snippets, actor.user)
if repo_type.snippet? && params[:protocol] != 'web' && Feature.disabled?(:version_snippets, actor.user)
break response_with_status(code: 401, success: false, message: 'Snippet git access is disabled.')
end
......
......@@ -335,6 +335,27 @@ describe API::Internal::Base do
end
end
shared_examples 'snippet success' do
it 'responds with success' do
subject
expect(response).to have_gitlab_http_status(:ok)
expect(json_response['status']).to be_truthy
end
end
shared_examples 'snippets with web protocol' do
it_behaves_like 'snippet success'
context 'with disabled version flag' do
before do
stub_feature_flags(version_snippets: false)
end
it_behaves_like 'snippet success'
end
end
context 'git push with personal snippet' do
subject { push(key, personal_snippet, env: env.to_json, changes: snippet_changes) }
......@@ -349,14 +370,21 @@ describe API::Internal::Base do
end
it_behaves_like 'snippets with disabled feature flag'
it_behaves_like 'snippets with web protocol' do
subject { push(key, personal_snippet, 'web', env: env.to_json, changes: snippet_changes) }
end
it_behaves_like 'sets hook env' do
let(:gl_repository) { Gitlab::GlRepository::SNIPPET.identifier_for_container(personal_snippet) }
end
end
context 'git pull with personal snippet' do
subject { pull(key, personal_snippet) }
it 'responds with success' do
pull(key, personal_snippet)
subject
expect(response).to have_gitlab_http_status(:ok)
expect(json_response["status"]).to be_truthy
......@@ -365,8 +393,10 @@ describe API::Internal::Base do
expect(user.reload.last_activity_on).to eql(Date.today)
end
it_behaves_like 'snippets with disabled feature flag' do
subject { pull(key, personal_snippet) }
it_behaves_like 'snippets with disabled feature flag'
it_behaves_like 'snippets with web protocol' do
subject { pull(key, personal_snippet, 'web') }
end
end
......@@ -384,6 +414,11 @@ describe API::Internal::Base do
end
it_behaves_like 'snippets with disabled feature flag'
it_behaves_like 'snippets with web protocol' do
subject { push(key, project_snippet, 'web', env: env.to_json, changes: snippet_changes) }
end
it_behaves_like 'sets hook env' do
let(:gl_repository) { Gitlab::GlRepository::SNIPPET.identifier_for_container(project_snippet) }
end
......@@ -403,6 +438,10 @@ describe API::Internal::Base do
it_behaves_like 'snippets with disabled feature flag' do
subject { pull(key, project_snippet) }
end
it_behaves_like 'snippets with web protocol' do
subject { pull(key, project_snippet, 'web') }
end
end
context "git pull" do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment