Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-09-08 15:08:41 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-09-08 15:08:41 +0300
commita0158b1a9c21f648fdbf79765bbc1e19e776b5d9 (patch)
tree04d5ecf7a5bb793e3f6a08914f5420dbda916171 /spec/requests/api/snippets_spec.rb
parent49a897eff9081b39665a4827b4f685e142569b99 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/requests/api/snippets_spec.rb')
-rw-r--r--spec/requests/api/snippets_spec.rb126
1 files changed, 9 insertions, 117 deletions
diff --git a/spec/requests/api/snippets_spec.rb b/spec/requests/api/snippets_spec.rb
index 508a39ce227..5bba308a2d3 100644
--- a/spec/requests/api/snippets_spec.rb
+++ b/spec/requests/api/snippets_spec.rb
@@ -368,7 +368,7 @@ RSpec.describe API::Snippets do
context 'when the snippet is public' do
let(:extra_params) { { visibility: 'public' } }
- it 'rejects the shippet' do
+ it 'rejects the snippet' do
expect { subject }.not_to change { Snippet.count }
expect(response).to have_gitlab_http_status(:bad_request)
@@ -391,98 +391,17 @@ RSpec.describe API::Snippets do
create(:personal_snippet, :repository, author: user, visibility_level: visibility_level)
end
- let(:create_action) { { action: 'create', file_path: 'foo.txt', content: 'bar' } }
- let(:update_action) { { action: 'update', file_path: 'CHANGELOG', content: 'bar' } }
- let(:move_action) { { action: 'move', file_path: '.old-gitattributes', previous_path: '.gitattributes' } }
- let(:delete_action) { { action: 'delete', file_path: 'CONTRIBUTING.md' } }
- let(:bad_file_path) { { action: 'create', file_path: '../../etc/passwd', content: 'bar' } }
- let(:bad_previous_path) { { action: 'create', previous_path: '../../etc/passwd', file_path: 'CHANGELOG', content: 'bar' } }
- let(:invalid_move) { { action: 'move', file_path: 'missing_previous_path.txt' } }
-
- context 'with snippet file changes' do
- using RSpec::Parameterized::TableSyntax
-
- where(:is_multi_file, :file_name, :content, :files, :status) do
- true | nil | nil | [create_action] | :success
- true | nil | nil | [update_action] | :success
- true | nil | nil | [move_action] | :success
- true | nil | nil | [delete_action] | :success
- true | nil | nil | [create_action, update_action] | :success
- true | 'foo.txt' | 'bar' | [create_action] | :bad_request
- true | 'foo.txt' | 'bar' | nil | :bad_request
- true | nil | nil | nil | :bad_request
- true | 'foo.txt' | nil | [create_action] | :bad_request
- true | nil | 'bar' | [create_action] | :bad_request
- true | '' | nil | [create_action] | :bad_request
- true | nil | '' | [create_action] | :bad_request
- true | nil | nil | [bad_file_path] | :bad_request
- true | nil | nil | [bad_previous_path] | :bad_request
- true | nil | nil | [invalid_move] | :unprocessable_entity
-
- false | 'foo.txt' | 'bar' | nil | :success
- false | 'foo.txt' | nil | nil | :success
- false | nil | 'bar' | nil | :success
- false | 'foo.txt' | 'bar' | [create_action] | :bad_request
- false | nil | nil | nil | :bad_request
- false | nil | '' | nil | :bad_request
- false | nil | nil | [bad_file_path] | :bad_request
- false | nil | nil | [bad_previous_path] | :bad_request
- end
-
- with_them do
- before do
- allow_any_instance_of(Snippet).to receive(:multiple_files?).and_return(is_multi_file)
- end
-
- it 'has the correct response' do
- update_params = {}.tap do |params|
- params[:files] = files if files
- params[:file_name] = file_name if file_name
- params[:content] = content if content
- end
-
- update_snippet(params: update_params)
-
- expect(response).to have_gitlab_http_status(status)
- end
- end
-
- context 'when save fails due to a repository commit error' do
- before do
- allow_next_instance_of(Repository) do |instance|
- allow(instance).to receive(:multi_action).and_raise(Gitlab::Git::CommitError)
- end
-
- update_snippet(params: { files: [create_action] })
- end
-
- it 'returns a bad request response' do
- expect(response).to have_gitlab_http_status(:bad_request)
- end
- end
- end
-
- shared_examples 'snippet non-file updates' do
- it 'updates a snippet non-file attributes' do
- new_description = 'New description'
- new_title = 'New title'
- new_visibility = 'internal'
-
- update_snippet(params: { title: new_title, description: new_description, visibility: new_visibility })
+ it_behaves_like 'snippet file updates'
+ it_behaves_like 'snippet non-file updates'
+ it_behaves_like 'invalid snippet updates'
- snippet.reload
+ it "returns 404 for another user's snippet" do
+ update_snippet(requester: other_user, params: { title: 'foobar' })
- aggregate_failures do
- expect(response).to have_gitlab_http_status(:ok)
- expect(snippet.description).to eq(new_description)
- expect(snippet.visibility).to eq(new_visibility)
- expect(snippet.title).to eq(new_title)
- end
- end
+ expect(response).to have_gitlab_http_status(:not_found)
+ expect(json_response['message']).to eq('404 Snippet Not Found')
end
- it_behaves_like 'snippet non-file updates'
-
context 'with restricted visibility settings' do
before do
stub_application_setting(restricted_visibility_levels:
@@ -493,33 +412,6 @@ RSpec.describe API::Snippets do
it_behaves_like 'snippet non-file updates'
end
- it 'returns 404 for invalid snippet id' do
- update_snippet(snippet_id: non_existing_record_id, params: { title: 'Foo' })
-
- expect(response).to have_gitlab_http_status(:not_found)
- expect(json_response['message']).to eq('404 Snippet Not Found')
- end
-
- it "returns 404 for another user's snippet" do
- update_snippet(requester: other_user, params: { title: 'foobar' })
-
- expect(response).to have_gitlab_http_status(:not_found)
- expect(json_response['message']).to eq('404 Snippet Not Found')
- end
-
- it 'returns 400 for missing parameters' do
- update_snippet
-
- expect(response).to have_gitlab_http_status(:bad_request)
- end
-
- it 'returns 400 if title is blank' do
- update_snippet(params: { title: '' })
-
- expect(response).to have_gitlab_http_status(:bad_request)
- expect(json_response['error']).to eq 'title is empty'
- end
-
it_behaves_like 'update with repository actions' do
let(:snippet_without_repo) { create(:personal_snippet, author: user, visibility_level: visibility_level) }
end
@@ -543,7 +435,7 @@ RSpec.describe API::Snippets do
context 'when the snippet is public' do
let(:visibility_level) { Snippet::PUBLIC }
- it 'rejects the shippet' do
+ it 'rejects the snippet' do
expect { update_snippet(params: { title: 'Foo' }) }
.not_to change { snippet.reload.title }