summaryrefslogtreecommitdiff
path: root/spec/models/project_services
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-02-12 15:09:37 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-02-12 15:09:37 +0000
commit2c89e169769ead722394a79ed67fcd08e96863dd (patch)
tree0dadb576846c484475b895f75fab41f71cdb952e /spec/models/project_services
parentbd497e352ebd279536ae11855871162e82a3f88c (diff)
downloadgitlab-ce-2c89e169769ead722394a79ed67fcd08e96863dd.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models/project_services')
-rw-r--r--spec/models/project_services/alerts_service_spec.rb109
-rw-r--r--spec/models/project_services/microsoft_teams_service_spec.rb4
-rw-r--r--spec/models/project_services/prometheus_service_spec.rb2
3 files changed, 112 insertions, 3 deletions
diff --git a/spec/models/project_services/alerts_service_spec.rb b/spec/models/project_services/alerts_service_spec.rb
new file mode 100644
index 00000000000..4e63ece26d8
--- /dev/null
+++ b/spec/models/project_services/alerts_service_spec.rb
@@ -0,0 +1,109 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe AlertsService do
+ let_it_be(:project) { create(:project) }
+ let(:service_params) { { project: project, active: active } }
+ let(:active) { true }
+ let(:service) { described_class.new(service_params) }
+
+ shared_context 'when active' do
+ let(:active) { true }
+ end
+
+ shared_context 'when inactive' do
+ let(:active) { false }
+ end
+
+ shared_context 'when persisted' do
+ before do
+ service.save!
+ service.reload
+ end
+ end
+
+ describe '#url' do
+ include Gitlab::Routing
+
+ subject { service.url }
+
+ it { is_expected.to eq(project_alerts_notify_url(project, format: :json)) }
+ end
+
+ describe '#json_fields' do
+ subject { service.json_fields }
+
+ it { is_expected.to eq(%w(active token)) }
+ end
+
+ describe '#as_json' do
+ subject { service.as_json(only: service.json_fields) }
+
+ it { is_expected.to eq('active' => true, 'token' => nil) }
+ end
+
+ describe '#token' do
+ shared_context 'reset token' do
+ before do
+ service.token = ''
+ service.valid?
+ end
+ end
+
+ shared_context 'assign token' do |token|
+ before do
+ service.token = token
+ service.valid?
+ end
+ end
+
+ shared_examples 'valid token' do
+ it { is_expected.to match(/\A\h{32}\z/) }
+ end
+
+ shared_examples 'no token' do
+ it { is_expected.to be_blank }
+ end
+
+ subject { service.token }
+
+ context 'when active' do
+ include_context 'when active'
+
+ context 'when resetting' do
+ let!(:previous_token) { service.token }
+
+ include_context 'reset token'
+
+ it_behaves_like 'valid token'
+
+ it { is_expected.not_to eq(previous_token) }
+ end
+
+ context 'when assigning' do
+ include_context 'assign token', 'random token'
+
+ it_behaves_like 'valid token'
+ end
+ end
+
+ context 'when inactive' do
+ include_context 'when inactive'
+
+ context 'when resetting' do
+ let!(:previous_token) { service.token }
+
+ include_context 'reset token'
+
+ it_behaves_like 'no token'
+ end
+ end
+
+ context 'when persisted' do
+ include_context 'when persisted'
+
+ it_behaves_like 'valid token'
+ end
+ end
+end
diff --git a/spec/models/project_services/microsoft_teams_service_spec.rb b/spec/models/project_services/microsoft_teams_service_spec.rb
index 83d3c8b3a70..d93b8a2cb40 100644
--- a/spec/models/project_services/microsoft_teams_service_spec.rb
+++ b/spec/models/project_services/microsoft_teams_service_spec.rb
@@ -37,9 +37,9 @@ describe MicrosoftTeamsService do
end
describe "#execute" do
- let(:user) { create(:user) }
+ let(:user) { create(:user) }
- set(:project) { create(:project, :repository, :wiki_repo) }
+ let_it_be(:project) { create(:project, :repository, :wiki_repo) }
before do
allow(chat_service).to receive_messages(
diff --git a/spec/models/project_services/prometheus_service_spec.rb b/spec/models/project_services/prometheus_service_spec.rb
index 49005d8c681..1922bb065cf 100644
--- a/spec/models/project_services/prometheus_service_spec.rb
+++ b/spec/models/project_services/prometheus_service_spec.rb
@@ -169,7 +169,7 @@ describe PrometheusService, :use_clean_rails_memory_store_caching do
end
context 'cluster belongs to projects group' do
- set(:group) { create(:group) }
+ let_it_be(:group) { create(:group) }
let(:project) { create(:prometheus_project, group: group) }
let(:cluster) { create(:cluster_for_group, :with_installed_helm, groups: [group]) }