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-02-12 18:09:37 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-02-12 18:09:37 +0300
commit2c89e169769ead722394a79ed67fcd08e96863dd (patch)
tree0dadb576846c484475b895f75fab41f71cdb952e /spec/models
parentbd497e352ebd279536ae11855871162e82a3f88c (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models')
-rw-r--r--spec/models/chat_name_spec.rb2
-rw-r--r--spec/models/chat_team_spec.rb2
-rw-r--r--spec/models/ci/bridge_spec.rb6
-rw-r--r--spec/models/ci/build_metadata_spec.rb8
-rw-r--r--spec/models/ci/build_spec.rb18
-rw-r--r--spec/models/ci/build_trace_chunk_spec.rb4
-rw-r--r--spec/models/ci/processable_spec.rb4
-rw-r--r--spec/models/ci/runner_spec.rb6
-rw-r--r--spec/models/container_repository_spec.rb34
-rw-r--r--spec/models/diff_viewer/server_side_spec.rb2
-rw-r--r--spec/models/event_collection_spec.rb8
-rw-r--r--spec/models/guest_spec.rb6
-rw-r--r--spec/models/list_user_preference_spec.rb4
-rw-r--r--spec/models/pages_domain_spec.rb10
-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
-rw-r--r--spec/models/project_spec.rb32
-rw-r--r--spec/models/releases/source_spec.rb2
19 files changed, 205 insertions, 58 deletions
diff --git a/spec/models/chat_name_spec.rb b/spec/models/chat_name_spec.rb
index 82991937644..863c28a86fb 100644
--- a/spec/models/chat_name_spec.rb
+++ b/spec/models/chat_name_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
describe ChatName do
- set(:chat_name) { create(:chat_name) }
+ let_it_be(:chat_name) { create(:chat_name) }
subject { chat_name }
it { is_expected.to belong_to(:service) }
diff --git a/spec/models/chat_team_spec.rb b/spec/models/chat_team_spec.rb
index 76beb3d506b..107fdaccc68 100644
--- a/spec/models/chat_team_spec.rb
+++ b/spec/models/chat_team_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
describe ChatTeam do
- set(:chat_team) { create(:chat_team) }
+ let_it_be(:chat_team) { create(:chat_team) }
subject { chat_team }
# Associations
diff --git a/spec/models/ci/bridge_spec.rb b/spec/models/ci/bridge_spec.rb
index c9d6687f0ea..31e13122b95 100644
--- a/spec/models/ci/bridge_spec.rb
+++ b/spec/models/ci/bridge_spec.rb
@@ -3,9 +3,9 @@
require 'spec_helper'
describe Ci::Bridge do
- set(:project) { create(:project) }
- set(:target_project) { create(:project, name: 'project', namespace: create(:namespace, name: 'my')) }
- set(:pipeline) { create(:ci_pipeline, project: project) }
+ let_it_be(:project) { create(:project) }
+ let_it_be(:target_project) { create(:project, name: 'project', namespace: create(:namespace, name: 'my')) }
+ let_it_be(:pipeline) { create(:ci_pipeline, project: project) }
let(:bridge) do
create(:ci_bridge, :variables, status: :created,
diff --git a/spec/models/ci/build_metadata_spec.rb b/spec/models/ci/build_metadata_spec.rb
index da95a2d30f5..588e5872cc8 100644
--- a/spec/models/ci/build_metadata_spec.rb
+++ b/spec/models/ci/build_metadata_spec.rb
@@ -3,11 +3,11 @@
require 'spec_helper'
describe Ci::BuildMetadata do
- set(:user) { create(:user) }
- set(:group) { create(:group) }
- set(:project) { create(:project, :repository, group: group, build_timeout: 2000) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:group) { create(:group) }
+ let_it_be(:project) { create(:project, :repository, group: group, build_timeout: 2000) }
- set(:pipeline) do
+ let_it_be(:pipeline) do
create(:ci_pipeline, project: project,
sha: project.commit.id,
ref: project.default_branch,
diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb
index 91185446488..8f2626037a1 100644
--- a/spec/models/ci/build_spec.rb
+++ b/spec/models/ci/build_spec.rb
@@ -3,11 +3,11 @@
require 'spec_helper'
describe Ci::Build do
- set(:user) { create(:user) }
- set(:group) { create(:group) }
- set(:project) { create(:project, :repository, group: group) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:group, reload: true) { create(:group) }
+ let_it_be(:project, reload: true) { create(:project, :repository, group: group) }
- set(:pipeline) do
+ let_it_be(:pipeline, reload: true) do
create(:ci_pipeline, project: project,
sha: project.commit.id,
ref: project.default_branch,
@@ -3612,7 +3612,7 @@ describe Ci::Build do
end
describe '.matches_tag_ids' do
- set(:build) { create(:ci_build, project: project, user: user) }
+ let_it_be(:build, reload: true) { create(:ci_build, project: project, user: user) }
let(:tag_ids) { ::ActsAsTaggableOn::Tag.named_any(tag_list).ids }
subject { described_class.where(id: build).matches_tag_ids(tag_ids) }
@@ -3659,7 +3659,7 @@ describe Ci::Build do
end
describe '.matches_tags' do
- set(:build) { create(:ci_build, project: project, user: user) }
+ let_it_be(:build, reload: true) { create(:ci_build, project: project, user: user) }
subject { described_class.where(id: build).with_any_tags }
@@ -3685,7 +3685,7 @@ describe Ci::Build do
end
describe 'pages deployments' do
- set(:build) { create(:ci_build, project: project, user: user) }
+ let_it_be(:build, reload: true) { create(:ci_build, project: project, user: user) }
context 'when job is "pages"' do
before do
@@ -3852,7 +3852,7 @@ describe Ci::Build do
end
describe '#artifacts_metadata_entry' do
- set(:build) { create(:ci_build, project: project) }
+ let_it_be(:build) { create(:ci_build, project: project) }
let(:path) { 'other_artifacts_0.1.2/another-subdirectory/banana_sample.gif' }
around do |example|
@@ -3952,7 +3952,7 @@ describe Ci::Build do
end
describe '#supported_runner?' do
- set(:build) { create(:ci_build) }
+ let_it_be(:build) { create(:ci_build) }
subject { build.supported_runner?(runner_features) }
diff --git a/spec/models/ci/build_trace_chunk_spec.rb b/spec/models/ci/build_trace_chunk_spec.rb
index ca49233dde1..f08f05a09bf 100644
--- a/spec/models/ci/build_trace_chunk_spec.rb
+++ b/spec/models/ci/build_trace_chunk_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
describe Ci::BuildTraceChunk, :clean_gitlab_redis_shared_state do
include ExclusiveLeaseHelpers
- set(:build) { create(:ci_build, :running) }
+ let_it_be(:build) { create(:ci_build, :running) }
let(:chunk_index) { 0 }
let(:data_store) { :redis }
let(:raw_data) { nil }
@@ -24,7 +24,7 @@ describe Ci::BuildTraceChunk, :clean_gitlab_redis_shared_state do
context 'FastDestroyAll' do
let(:parent) { create(:project) }
let(:pipeline) { create(:ci_pipeline, project: parent) }
- let(:build) { create(:ci_build, :running, :trace_live, pipeline: pipeline, project: parent) }
+ let!(:build) { create(:ci_build, :running, :trace_live, pipeline: pipeline, project: parent) }
let(:subjects) { build.trace_chunks }
describe 'Forbid #destroy and #destroy_all' do
diff --git a/spec/models/ci/processable_spec.rb b/spec/models/ci/processable_spec.rb
index 370606a73bc..f3d743fc272 100644
--- a/spec/models/ci/processable_spec.rb
+++ b/spec/models/ci/processable_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
describe Ci::Processable do
- set(:project) { create(:project) }
- set(:pipeline) { create(:ci_pipeline, project: project) }
+ let_it_be(:project) { create(:project) }
+ let_it_be(:pipeline) { create(:ci_pipeline, project: project) }
describe '#aggregated_needs_names' do
let(:with_aggregated_needs) { pipeline.processables.select_with_aggregated_needs(project) }
diff --git a/spec/models/ci/runner_spec.rb b/spec/models/ci/runner_spec.rb
index 3e494d19233..0192c8ed17d 100644
--- a/spec/models/ci/runner_spec.rb
+++ b/spec/models/ci/runner_spec.rb
@@ -38,8 +38,8 @@ describe Ci::Runner do
end
context 'runner_type validations' do
- set(:group) { create(:group) }
- set(:project) { create(:project) }
+ let_it_be(:group) { create(:group) }
+ let_it_be(:project) { create(:project) }
let(:group_runner) { create(:ci_runner, :group, groups: [group]) }
let(:project_runner) { create(:ci_runner, :project, projects: [project]) }
let(:instance_runner) { create(:ci_runner, :instance) }
@@ -322,7 +322,7 @@ describe Ci::Runner do
end
describe '#can_pick?' do
- set(:pipeline) { create(:ci_pipeline) }
+ let_it_be(:pipeline) { create(:ci_pipeline) }
let(:build) { create(:ci_build, pipeline: pipeline) }
let(:runner_project) { build.project }
let(:runner) { create(:ci_runner, :project, projects: [runner_project], tag_list: tag_list, run_untagged: run_untagged) }
diff --git a/spec/models/container_repository_spec.rb b/spec/models/container_repository_spec.rb
index 0a3065140bf..5ed812652c5 100644
--- a/spec/models/container_repository_spec.rb
+++ b/spec/models/container_repository_spec.rb
@@ -85,7 +85,7 @@ describe ContainerRepository do
context 'when action succeeds' do
it 'returns status that indicates success' do
expect(repository.client)
- .to receive(:delete_repository_tag)
+ .to receive(:delete_repository_tag_by_digest)
.twice
.and_return(true)
@@ -96,7 +96,7 @@ describe ContainerRepository do
context 'when action fails' do
it 'returns status that indicates failure' do
expect(repository.client)
- .to receive(:delete_repository_tag)
+ .to receive(:delete_repository_tag_by_digest)
.twice
.and_return(false)
@@ -105,6 +105,36 @@ describe ContainerRepository do
end
end
+ describe '#delete_tag_by_name' do
+ let(:repository) do
+ create(:container_repository, name: 'my_image',
+ tags: { latest: '123', rc1: '234' },
+ project: project)
+ end
+
+ context 'when action succeeds' do
+ it 'returns status that indicates success' do
+ expect(repository.client)
+ .to receive(:delete_repository_tag_by_name)
+ .with(repository.path, "latest")
+ .and_return(true)
+
+ expect(repository.delete_tag_by_name('latest')).to be_truthy
+ end
+ end
+
+ context 'when action fails' do
+ it 'returns status that indicates failure' do
+ expect(repository.client)
+ .to receive(:delete_repository_tag_by_name)
+ .with(repository.path, "latest")
+ .and_return(false)
+
+ expect(repository.delete_tag_by_name('latest')).to be_falsey
+ end
+ end
+ end
+
describe '#location' do
context 'when registry is running on a custom port' do
before do
diff --git a/spec/models/diff_viewer/server_side_spec.rb b/spec/models/diff_viewer/server_side_spec.rb
index 27de0584b8a..0a14eae26f3 100644
--- a/spec/models/diff_viewer/server_side_spec.rb
+++ b/spec/models/diff_viewer/server_side_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
describe DiffViewer::ServerSide do
- set(:project) { create(:project, :repository) }
+ let_it_be(:project) { create(:project, :repository) }
let(:commit) { project.commit_by(oid: '570e7b2abdd848b95f2f578043fc23bd6f6fd24d') }
let!(:diff_file) { commit.diffs.diff_file_with_new_path('files/ruby/popen.rb') }
diff --git a/spec/models/event_collection_spec.rb b/spec/models/event_collection_spec.rb
index c421ffa000d..e6f80a4c4d0 100644
--- a/spec/models/event_collection_spec.rb
+++ b/spec/models/event_collection_spec.rb
@@ -4,10 +4,10 @@ require 'spec_helper'
describe EventCollection do
describe '#to_a' do
- set(:group) { create(:group) }
- set(:project) { create(:project_empty_repo, group: group) }
- set(:projects) { Project.where(id: project.id) }
- set(:user) { create(:user) }
+ let_it_be(:group) { create(:group) }
+ let_it_be(:project) { create(:project_empty_repo, group: group) }
+ let_it_be(:projects) { Project.where(id: project.id) }
+ let_it_be(:user) { create(:user) }
context 'with project events' do
before do
diff --git a/spec/models/guest_spec.rb b/spec/models/guest_spec.rb
index 93862e98172..57eb077031c 100644
--- a/spec/models/guest_spec.rb
+++ b/spec/models/guest_spec.rb
@@ -3,9 +3,9 @@
require 'spec_helper'
describe Guest do
- set(:public_project) { create(:project, :public) }
- set(:private_project) { create(:project, :private) }
- set(:internal_project) { create(:project, :internal) }
+ let_it_be(:public_project, reload: true) { create(:project, :public) }
+ let_it_be(:private_project) { create(:project, :private) }
+ let_it_be(:internal_project) { create(:project, :internal) }
describe '.can_pull?' do
context 'when project is private' do
diff --git a/spec/models/list_user_preference_spec.rb b/spec/models/list_user_preference_spec.rb
index 1335a3700dc..10a7bf41f4e 100644
--- a/spec/models/list_user_preference_spec.rb
+++ b/spec/models/list_user_preference_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
describe ListUserPreference do
- set(:user) { create(:user) }
- set(:list) { create(:list) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:list) { create(:list) }
before do
list.update_preferences_for(user, { collapsed: true })
diff --git a/spec/models/pages_domain_spec.rb b/spec/models/pages_domain_spec.rb
index a88db3b87af..99b7c4f148a 100644
--- a/spec/models/pages_domain_spec.rb
+++ b/spec/models/pages_domain_spec.rb
@@ -352,9 +352,9 @@ describe PagesDomain do
end
context 'configuration updates when attributes change' do
- set(:project1) { create(:project) }
- set(:project2) { create(:project) }
- set(:domain) { create(:pages_domain) }
+ let_it_be(:project1) { create(:project) }
+ let_it_be(:project2) { create(:project) }
+ let_it_be(:domain) { create(:pages_domain) }
where(:attribute, :old_value, :new_value, :update_expected) do
now = Time.now
@@ -402,8 +402,8 @@ describe PagesDomain do
end
context 'TLS configuration' do
- set(:domain_without_tls) { create(:pages_domain, :without_certificate, :without_key) }
- set(:domain) { create(:pages_domain) }
+ let_it_be(:domain_without_tls) { create(:pages_domain, :without_certificate, :without_key) }
+ let_it_be(:domain) { create(:pages_domain) }
let(:cert1) { domain.certificate }
let(:cert2) { cert1 + ' ' }
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]) }
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index f847cb63ddc..9dc362594dd 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -3901,7 +3901,7 @@ describe Project do
end
context 'legacy storage' do
- set(:project) { create(:project, :repository, :legacy_storage) }
+ let_it_be(:project) { create(:project, :repository, :legacy_storage) }
let(:gitlab_shell) { Gitlab::Shell.new }
let(:project_storage) { project.send(:storage) }
@@ -4000,7 +4000,7 @@ describe Project do
end
context 'hashed storage' do
- set(:project) { create(:project, :repository, skip_disk_validation: true) }
+ let_it_be(:project) { create(:project, :repository, skip_disk_validation: true) }
let(:gitlab_shell) { Gitlab::Shell.new }
let(:hash) { Digest::SHA2.hexdigest(project.id.to_s) }
let(:hashed_prefix) { File.join('@hashed', hash[0..1], hash[2..3]) }
@@ -4090,7 +4090,7 @@ describe Project do
end
describe '#has_ci?' do
- set(:project) { create(:project) }
+ let_it_be(:project, reload: true) { create(:project) }
let(:repository) { double }
before do
@@ -4134,7 +4134,7 @@ describe Project do
Feature.get(:force_autodevops_on_by_default).enable_percentage_of_actors(0)
end
- set(:project) { create(:project) }
+ let_it_be(:project, reload: true) { create(:project) }
subject { project.auto_devops_enabled? }
@@ -4269,7 +4269,7 @@ describe Project do
end
describe '#has_auto_devops_implicitly_enabled?' do
- set(:project) { create(:project) }
+ let_it_be(:project, reload: true) { create(:project) }
context 'when disabled in settings' do
before do
@@ -4330,7 +4330,7 @@ describe Project do
end
describe '#has_auto_devops_implicitly_disabled?' do
- set(:project) { create(:project) }
+ let_it_be(:project, reload: true) { create(:project) }
before do
allow(Feature).to receive(:enabled?).and_call_original
@@ -4408,7 +4408,7 @@ describe Project do
end
describe '#api_variables' do
- set(:project) { create(:project) }
+ let_it_be(:project) { create(:project) }
it 'exposes API v4 URL' do
expect(project.api_variables.first[:key]).to eq 'CI_API_V4_URL'
@@ -4605,7 +4605,7 @@ describe Project do
end
describe '#write_repository_config' do
- set(:project) { create(:project, :repository) }
+ let_it_be(:project) { create(:project, :repository) }
it 'writes full path in .git/config when key is missing' do
project.write_repository_config
@@ -4696,7 +4696,7 @@ describe Project do
end
describe '#has_active_hooks?' do
- set(:project) { create(:project) }
+ let_it_be(:project) { create(:project) }
it { expect(project.has_active_hooks?).to be_falsey }
@@ -4723,7 +4723,7 @@ describe Project do
end
describe '#has_active_services?' do
- set(:project) { create(:project) }
+ let_it_be(:project) { create(:project) }
it { expect(project.has_active_services?).to be_falsey }
@@ -5009,8 +5009,8 @@ describe Project do
describe '#members_among' do
let(:users) { create_list(:user, 3) }
- set(:group) { create(:group) }
- set(:project) { create(:project, namespace: group) }
+ let_it_be(:group) { create(:group) }
+ let_it_be(:project) { create(:project, namespace: group) }
before do
project.add_guest(users.first)
@@ -5584,6 +5584,14 @@ describe Project do
end
end
+ describe '#alerts_service_activated?' do
+ let!(:project) { create(:project) }
+
+ subject { project.alerts_service_activated? }
+
+ it { is_expected.to be_falsey }
+ end
+
def rugged_config
rugged_repo(project.repository).config
end
diff --git a/spec/models/releases/source_spec.rb b/spec/models/releases/source_spec.rb
index c8ac8e31c97..d7af6fd90a6 100644
--- a/spec/models/releases/source_spec.rb
+++ b/spec/models/releases/source_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
describe Releases::Source do
- set(:project) { create(:project, :repository, name: 'finance-cal') }
+ let_it_be(:project) { create(:project, :repository, name: 'finance-cal') }
let(:tag_name) { 'v1.0' }
describe '.all' do