diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-12 15:09:37 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-12 15:09:37 +0000 |
commit | 2c89e169769ead722394a79ed67fcd08e96863dd (patch) | |
tree | 0dadb576846c484475b895f75fab41f71cdb952e /spec/models | |
parent | bd497e352ebd279536ae11855871162e82a3f88c (diff) | |
download | gitlab-ce-2c89e169769ead722394a79ed67fcd08e96863dd.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models')
-rw-r--r-- | spec/models/chat_name_spec.rb | 2 | ||||
-rw-r--r-- | spec/models/chat_team_spec.rb | 2 | ||||
-rw-r--r-- | spec/models/ci/bridge_spec.rb | 6 | ||||
-rw-r--r-- | spec/models/ci/build_metadata_spec.rb | 8 | ||||
-rw-r--r-- | spec/models/ci/build_spec.rb | 18 | ||||
-rw-r--r-- | spec/models/ci/build_trace_chunk_spec.rb | 4 | ||||
-rw-r--r-- | spec/models/ci/processable_spec.rb | 4 | ||||
-rw-r--r-- | spec/models/ci/runner_spec.rb | 6 | ||||
-rw-r--r-- | spec/models/container_repository_spec.rb | 34 | ||||
-rw-r--r-- | spec/models/diff_viewer/server_side_spec.rb | 2 | ||||
-rw-r--r-- | spec/models/event_collection_spec.rb | 8 | ||||
-rw-r--r-- | spec/models/guest_spec.rb | 6 | ||||
-rw-r--r-- | spec/models/list_user_preference_spec.rb | 4 | ||||
-rw-r--r-- | spec/models/pages_domain_spec.rb | 10 | ||||
-rw-r--r-- | spec/models/project_services/alerts_service_spec.rb | 109 | ||||
-rw-r--r-- | spec/models/project_services/microsoft_teams_service_spec.rb | 4 | ||||
-rw-r--r-- | spec/models/project_services/prometheus_service_spec.rb | 2 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 32 | ||||
-rw-r--r-- | spec/models/releases/source_spec.rb | 2 |
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 |