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:
Diffstat (limited to 'spec/requests/api/broadcast_messages_spec.rb')
-rw-r--r--spec/requests/api/broadcast_messages_spec.rb87
1 files changed, 41 insertions, 46 deletions
diff --git a/spec/requests/api/broadcast_messages_spec.rb b/spec/requests/api/broadcast_messages_spec.rb
index 5cbb7dbfa12..530c81364a8 100644
--- a/spec/requests/api/broadcast_messages_spec.rb
+++ b/spec/requests/api/broadcast_messages_spec.rb
@@ -2,16 +2,16 @@
require 'spec_helper'
-RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
- let_it_be(:user) { create(:user) }
+RSpec.describe API::BroadcastMessages, :aggregate_failures, feature_category: :onboarding do
let_it_be(:admin) { create(:admin) }
let_it_be(:message) { create(:broadcast_message) }
+ let_it_be(:path) { '/broadcast_messages' }
describe 'GET /broadcast_messages' do
it 'returns an Array of BroadcastMessages' do
create(:broadcast_message)
- get api('/broadcast_messages')
+ get api(path)
expect(response).to have_gitlab_http_status(:ok)
expect(response).to include_pagination_headers
@@ -22,8 +22,10 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
end
describe 'GET /broadcast_messages/:id' do
+ let_it_be(:path) { "#{path}/#{message.id}" }
+
it 'returns the specified message' do
- get api("/broadcast_messages/#{message.id}")
+ get api(path)
expect(response).to have_gitlab_http_status(:ok)
expect(json_response['id']).to eq message.id
@@ -33,16 +35,14 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
end
describe 'POST /broadcast_messages' do
- it 'returns a 401 for anonymous users' do
- post api('/broadcast_messages'), params: attributes_for(:broadcast_message)
-
- expect(response).to have_gitlab_http_status(:unauthorized)
+ it_behaves_like 'POST request permissions for admin mode' do
+ let(:params) { { message: 'Test message' } }
end
- it 'returns a 403 for users' do
- post api('/broadcast_messages', user), params: attributes_for(:broadcast_message)
+ it 'returns a 401 for anonymous users' do
+ post api(path), params: attributes_for(:broadcast_message)
- expect(response).to have_gitlab_http_status(:forbidden)
+ expect(response).to have_gitlab_http_status(:unauthorized)
end
context 'as an admin' do
@@ -50,7 +50,7 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
attrs = attributes_for(:broadcast_message)
attrs.delete(:message)
- post api('/broadcast_messages', admin), params: attrs
+ post api(path, admin, admin_mode: true), params: attrs
expect(response).to have_gitlab_http_status(:bad_request)
expect(json_response['error']).to eq 'message is missing'
@@ -59,7 +59,7 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
it 'defines sane default start and end times' do
time = Time.zone.parse('2016-07-02 10:11:12')
travel_to(time) do
- post api('/broadcast_messages', admin), params: { message: 'Test message' }
+ post api(path, admin, admin_mode: true), params: { message: 'Test message' }
expect(response).to have_gitlab_http_status(:created)
expect(json_response['starts_at']).to eq '2016-07-02T10:11:12.000Z'
@@ -70,7 +70,7 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
it 'accepts a custom background and foreground color' do
attrs = attributes_for(:broadcast_message, color: '#000000', font: '#cecece')
- post api('/broadcast_messages', admin), params: attrs
+ post api(path, admin, admin_mode: true), params: attrs
expect(response).to have_gitlab_http_status(:created)
expect(json_response['color']).to eq attrs[:color]
@@ -81,7 +81,7 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
target_access_levels = [Gitlab::Access::GUEST, Gitlab::Access::DEVELOPER]
attrs = attributes_for(:broadcast_message, target_access_levels: target_access_levels)
- post api('/broadcast_messages', admin), params: attrs
+ post api(path, admin, admin_mode: true), params: attrs
expect(response).to have_gitlab_http_status(:created)
expect(json_response['target_access_levels']).to eq attrs[:target_access_levels]
@@ -90,7 +90,7 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
it 'accepts a target path' do
attrs = attributes_for(:broadcast_message, target_path: "*/welcome")
- post api('/broadcast_messages', admin), params: attrs
+ post api(path, admin, admin_mode: true), params: attrs
expect(response).to have_gitlab_http_status(:created)
expect(json_response['target_path']).to eq attrs[:target_path]
@@ -99,7 +99,7 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
it 'accepts a broadcast type' do
attrs = attributes_for(:broadcast_message, broadcast_type: 'notification')
- post api('/broadcast_messages', admin), params: attrs
+ post api(path, admin, admin_mode: true), params: attrs
expect(response).to have_gitlab_http_status(:created)
expect(json_response['broadcast_type']).to eq attrs[:broadcast_type]
@@ -108,7 +108,7 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
it 'uses default broadcast type' do
attrs = attributes_for(:broadcast_message)
- post api('/broadcast_messages', admin), params: attrs
+ post api(path, admin, admin_mode: true), params: attrs
expect(response).to have_gitlab_http_status(:created)
expect(json_response['broadcast_type']).to eq 'banner'
@@ -117,7 +117,7 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
it 'errors for invalid broadcast type' do
attrs = attributes_for(:broadcast_message, broadcast_type: 'invalid-type')
- post api('/broadcast_messages', admin), params: attrs
+ post api(path, admin, admin_mode: true), params: attrs
expect(response).to have_gitlab_http_status(:bad_request)
end
@@ -125,7 +125,7 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
it 'accepts an active dismissable value' do
attrs = { message: 'new message', dismissable: true }
- post api('/broadcast_messages', admin), params: attrs
+ post api(path, admin, admin_mode: true), params: attrs
expect(response).to have_gitlab_http_status(:created)
expect(json_response['dismissable']).to eq true
@@ -134,27 +134,25 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
end
describe 'PUT /broadcast_messages/:id' do
- it 'returns a 401 for anonymous users' do
- put api("/broadcast_messages/#{message.id}"),
- params: attributes_for(:broadcast_message)
+ let_it_be(:path) { "#{path}/#{message.id}" }
- expect(response).to have_gitlab_http_status(:unauthorized)
+ it_behaves_like 'PUT request permissions for admin mode' do
+ let(:params) { { message: 'Test message' } }
end
- it 'returns a 403 for users' do
- put api("/broadcast_messages/#{message.id}", user),
+ it 'returns a 401 for anonymous users' do
+ put api(path),
params: attributes_for(:broadcast_message)
- expect(response).to have_gitlab_http_status(:forbidden)
+ expect(response).to have_gitlab_http_status(:unauthorized)
end
context 'as an admin' do
it 'accepts new background and foreground colors' do
attrs = { color: '#000000', font: '#cecece' }
- put api("/broadcast_messages/#{message.id}", admin), params: attrs
+ put api(path, admin, admin_mode: true), params: attrs
- expect(response).to have_gitlab_http_status(:ok)
expect(json_response['color']).to eq attrs[:color]
expect(json_response['font']).to eq attrs[:font]
end
@@ -164,7 +162,7 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
travel_to(time) do
attrs = { starts_at: Time.zone.now, ends_at: 3.hours.from_now }
- put api("/broadcast_messages/#{message.id}", admin), params: attrs
+ put api(path, admin, admin_mode: true), params: attrs
expect(response).to have_gitlab_http_status(:ok)
expect(json_response['starts_at']).to eq '2016-07-02T10:11:12.000Z'
@@ -175,7 +173,7 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
it 'accepts a new message' do
attrs = { message: 'new message' }
- put api("/broadcast_messages/#{message.id}", admin), params: attrs
+ put api(path, admin, admin_mode: true), params: attrs
expect(response).to have_gitlab_http_status(:ok)
expect { message.reload }.to change { message.message }.to('new message')
@@ -184,7 +182,7 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
it 'accepts a new target_access_levels' do
attrs = { target_access_levels: [Gitlab::Access::MAINTAINER] }
- put api("/broadcast_messages/#{message.id}", admin), params: attrs
+ put api(path, admin, admin_mode: true), params: attrs
expect(response).to have_gitlab_http_status(:ok)
expect(json_response['target_access_levels']).to eq attrs[:target_access_levels]
@@ -193,7 +191,7 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
it 'accepts a new target_path' do
attrs = { target_path: '*/welcome' }
- put api("/broadcast_messages/#{message.id}", admin), params: attrs
+ put api(path, admin, admin_mode: true), params: attrs
expect(response).to have_gitlab_http_status(:ok)
expect(json_response['target_path']).to eq attrs[:target_path]
@@ -202,7 +200,7 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
it 'accepts a new broadcast_type' do
attrs = { broadcast_type: 'notification' }
- put api("/broadcast_messages/#{message.id}", admin), params: attrs
+ put api(path, admin, admin_mode: true), params: attrs
expect(response).to have_gitlab_http_status(:ok)
expect(json_response['broadcast_type']).to eq attrs[:broadcast_type]
@@ -211,7 +209,7 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
it 'errors for invalid broadcast type' do
attrs = { broadcast_type: 'invalid-type' }
- put api("/broadcast_messages/#{message.id}", admin), params: attrs
+ put api(path, admin, admin_mode: true), params: attrs
expect(response).to have_gitlab_http_status(:bad_request)
end
@@ -219,7 +217,7 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
it 'accepts a new dismissable value' do
attrs = { message: 'new message', dismissable: true }
- put api("/broadcast_messages/#{message.id}", admin), params: attrs
+ put api(path, admin, admin_mode: true), params: attrs
expect(response).to have_gitlab_http_status(:ok)
expect(json_response['dismissable']).to eq true
@@ -228,27 +226,24 @@ RSpec.describe API::BroadcastMessages, feature_category: :onboarding do
end
describe 'DELETE /broadcast_messages/:id' do
- it 'returns a 401 for anonymous users' do
- delete api("/broadcast_messages/#{message.id}"),
- params: attributes_for(:broadcast_message)
+ let_it_be(:path) { "#{path}/#{message.id}" }
- expect(response).to have_gitlab_http_status(:unauthorized)
- end
+ it_behaves_like 'DELETE request permissions for admin mode'
- it 'returns a 403 for users' do
- delete api("/broadcast_messages/#{message.id}", user),
+ it 'returns a 401 for anonymous users' do
+ delete api(path),
params: attributes_for(:broadcast_message)
- expect(response).to have_gitlab_http_status(:forbidden)
+ expect(response).to have_gitlab_http_status(:unauthorized)
end
it_behaves_like '412 response' do
- let(:request) { api("/broadcast_messages/#{message.id}", admin) }
+ let(:request) { api("/broadcast_messages/#{message.id}", admin, admin_mode: true) }
end
it 'deletes the broadcast message for admins' do
expect do
- delete api("/broadcast_messages/#{message.id}", admin)
+ delete api(path, admin, admin_mode: true)
expect(response).to have_gitlab_http_status(:no_content)
end.to change { BroadcastMessage.count }.by(-1)