78 lines
1.8 KiB
Ruby
78 lines
1.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# Specs for status checking.
|
|
#
|
|
# Requires an API request:
|
|
# let(:request) { get api("/projects/#{project.id}/repository/branches", user) }
|
|
RSpec.shared_examples '400 response' do
|
|
let(:message) { nil }
|
|
|
|
before do
|
|
# Fires the request
|
|
request
|
|
end
|
|
|
|
it 'returns 400' do
|
|
expect(response).to have_gitlab_http_status(:bad_request)
|
|
|
|
if message.present?
|
|
expect(json_response['message']).to eq(message)
|
|
end
|
|
end
|
|
end
|
|
|
|
RSpec.shared_examples '403 response' do
|
|
before do
|
|
# Fires the request
|
|
request
|
|
end
|
|
|
|
it 'returns 403' do
|
|
expect(response).to have_gitlab_http_status(:forbidden)
|
|
end
|
|
end
|
|
|
|
RSpec.shared_examples '404 response' do
|
|
let(:message) { nil }
|
|
|
|
before do
|
|
# Fires the request
|
|
request
|
|
end
|
|
|
|
it 'returns 404' do
|
|
expect(response).to have_gitlab_http_status(:not_found)
|
|
expect(json_response).to be_an Object
|
|
|
|
if message.present?
|
|
expect(json_response['message']).to eq(message)
|
|
end
|
|
end
|
|
end
|
|
|
|
RSpec.shared_examples '412 response' do
|
|
let(:params) { nil }
|
|
let(:success_status) { 204 }
|
|
|
|
context 'for a modified ressource' do
|
|
before do
|
|
delete request, params: params, headers: { 'HTTP_IF_UNMODIFIED_SINCE' => '1990-01-12T00:00:48-0600' }
|
|
end
|
|
|
|
it 'returns 412 with a JSON error' do
|
|
expect(response).to have_gitlab_http_status(:precondition_failed)
|
|
expect(json_response).to eq('message' => '412 Precondition Failed')
|
|
end
|
|
end
|
|
|
|
context 'for an unmodified ressource' do
|
|
before do
|
|
delete request, params: params, headers: { 'HTTP_IF_UNMODIFIED_SINCE' => Time.now }
|
|
end
|
|
|
|
it 'returns 204 with an empty body' do
|
|
expect(response).to have_gitlab_http_status(success_status)
|
|
expect(response.body).to eq('') if success_status == 204
|
|
end
|
|
end
|
|
end
|