diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-06-30 00:09:23 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-06-30 00:09:23 +0300 |
commit | ab593c8ded443f7ade3540ff8dac69ee51bc74fd (patch) | |
tree | 1fb8b2e194747f135d8610cd4b77766ac458b3a7 /spec | |
parent | 860efb35e24e07a1a22bcafcddb5f0409d40354c (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
19 files changed, 153 insertions, 188 deletions
diff --git a/spec/events/pages/page_deleted_event_spec.rb b/spec/events/pages/page_deleted_event_spec.rb index ee05b770c48..8fcd807eeb4 100644 --- a/spec/events/pages/page_deleted_event_spec.rb +++ b/spec/events/pages/page_deleted_event_spec.rb @@ -6,6 +6,7 @@ RSpec.describe Pages::PageDeletedEvent do where(:data, :valid) do [ [{ project_id: 1, namespace_id: 2 }, true], + [{ project_id: 1, namespace_id: 2, root_namespace_id: 3 }, true], [{ project_id: 1 }, false], [{ namespace_id: 1 }, false], [{ project_id: 'foo', namespace_id: 2 }, false], diff --git a/spec/features/monitor_sidebar_link_spec.rb b/spec/features/monitor_sidebar_link_spec.rb index 3c59cd65cdb..b888e2f4171 100644 --- a/spec/features/monitor_sidebar_link_spec.rb +++ b/spec/features/monitor_sidebar_link_spec.rb @@ -45,7 +45,6 @@ RSpec.describe 'Monitor dropdown sidebar', :aggregate_failures do expect(page).not_to have_link('Alerts', href: project_alert_management_index_path(project)) expect(page).not_to have_link('Error Tracking', href: project_error_tracking_index_path(project)) expect(page).not_to have_link('Product Analytics', href: project_product_analytics_path(project)) - expect(page).not_to have_link('Logs', href: project_logs_path(project)) expect(page).not_to have_link('Kubernetes', href: project_clusters_path(project)) end @@ -78,7 +77,6 @@ RSpec.describe 'Monitor dropdown sidebar', :aggregate_failures do expect(page).not_to have_link('Alerts', href: project_alert_management_index_path(project)) expect(page).not_to have_link('Error Tracking', href: project_error_tracking_index_path(project)) expect(page).not_to have_link('Product Analytics', href: project_product_analytics_path(project)) - expect(page).not_to have_link('Logs', href: project_logs_path(project)) expect(page).not_to have_link('Kubernetes', href: project_clusters_path(project)) end @@ -96,7 +94,6 @@ RSpec.describe 'Monitor dropdown sidebar', :aggregate_failures do expect(page).to have_link('Product Analytics', href: project_product_analytics_path(project)) expect(page).not_to have_link('Alerts', href: project_alert_management_index_path(project)) - expect(page).not_to have_link('Logs', href: project_logs_path(project)) expect(page).not_to have_link('Kubernetes', href: project_clusters_path(project)) end @@ -113,7 +110,6 @@ RSpec.describe 'Monitor dropdown sidebar', :aggregate_failures do expect(page).to have_link('Environments', href: project_environments_path(project)) expect(page).to have_link('Error Tracking', href: project_error_tracking_index_path(project)) expect(page).to have_link('Product Analytics', href: project_product_analytics_path(project)) - expect(page).to have_link('Logs', href: project_logs_path(project)) expect(page).to have_link('Kubernetes', href: project_clusters_path(project)) end @@ -130,7 +126,6 @@ RSpec.describe 'Monitor dropdown sidebar', :aggregate_failures do expect(page).to have_link('Environments', href: project_environments_path(project)) expect(page).to have_link('Error Tracking', href: project_error_tracking_index_path(project)) expect(page).to have_link('Product Analytics', href: project_product_analytics_path(project)) - expect(page).to have_link('Logs', href: project_logs_path(project)) expect(page).to have_link('Kubernetes', href: project_clusters_path(project)) end diff --git a/spec/fixtures/api/schemas/public_api/v4/environment.json b/spec/fixtures/api/schemas/public_api/v4/environment.json index 3a4c18343e3..21888d88598 100644 --- a/spec/fixtures/api/schemas/public_api/v4/environment.json +++ b/spec/fixtures/api/schemas/public_api/v4/environment.json @@ -25,10 +25,7 @@ "state": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, - "project": { "$ref": "project.json" }, - "enable_advanced_logs_querying": { "type": "boolean" }, - "logs_api_path": { "type": "string" }, - "gitlab_managed_apps_logs_path": { "type": "string" } + "project": { "$ref": "project.json" } }, "additionalProperties": false } diff --git a/spec/frontend/header_spec.js b/spec/frontend/header_spec.js index 19849fba63c..4e2fb70a2cb 100644 --- a/spec/frontend/header_spec.js +++ b/spec/frontend/header_spec.js @@ -1,4 +1,3 @@ -import $ from 'jquery'; import { mockTracking, unmockTracking } from 'helpers/tracking_helper'; import initTodoToggle, { initNavUserDropdownTracking } from '~/header'; import { loadHTMLFixture, setHTMLFixture, resetHTMLFixture } from 'helpers/fixtures'; @@ -9,11 +8,17 @@ describe('Header', () => { const fixtureTemplate = 'issues/open-issue.html'; function isTodosCountHidden() { - return $(todosPendingCount).hasClass('hidden'); + return document.querySelector(todosPendingCount).classList.contains('hidden'); } function triggerToggle(newCount) { - $(document).trigger('todo:toggle', newCount); + const event = new CustomEvent('todo:toggle', { + detail: { + count: newCount, + }, + }); + + document.dispatchEvent(event); } beforeEach(() => { @@ -28,7 +33,7 @@ describe('Header', () => { it('should update todos-count after receiving the todo:toggle event', () => { triggerToggle(5); - expect($(todosPendingCount).text()).toEqual('5'); + expect(document.querySelector(todosPendingCount).textContent).toEqual('5'); }); it('should hide todos-count when it is 0', () => { @@ -53,7 +58,7 @@ describe('Header', () => { }); it('should show 99+ for todos-count', () => { - expect($(todosPendingCount).text()).toEqual('99+'); + expect(document.querySelector(todosPendingCount).textContent).toEqual('99+'); }); }); }); @@ -67,7 +72,11 @@ describe('Header', () => { <a class="js-buy-pipeline-minutes-link" data-track-action="click_buy_ci_minutes" data-track-label="free" data-track-property="user_dropdown">Buy Pipeline minutes</a> </li>`); - trackingSpy = mockTracking('_category_', $('.js-nav-user-dropdown').element, jest.spyOn); + trackingSpy = mockTracking( + '_category_', + document.querySelector('.js-nav-user-dropdown').element, + jest.spyOn, + ); document.body.dataset.page = 'some:page'; initNavUserDropdownTracking(); @@ -79,7 +88,8 @@ describe('Header', () => { }); it('sends a tracking event when the dropdown is opened and contains Buy Pipeline minutes link', () => { - $('.js-nav-user-dropdown').trigger('shown.bs.dropdown'); + const event = new CustomEvent('shown.bs.dropdown'); + document.querySelector('.js-nav-user-dropdown').dispatchEvent(event); expect(trackingSpy).toHaveBeenCalledWith('some:page', 'show_buy_ci_minutes', { label: 'free', diff --git a/spec/frontend/pages/dashboard/todos/index/todos_spec.js b/spec/frontend/pages/dashboard/todos/index/todos_spec.js index 3a9b59f291c..03aed7454e3 100644 --- a/spec/frontend/pages/dashboard/todos/index/todos_spec.js +++ b/spec/frontend/pages/dashboard/todos/index/todos_spec.js @@ -1,5 +1,4 @@ import MockAdapter from 'axios-mock-adapter'; -import $ from 'jquery'; import { loadHTMLFixture, resetHTMLFixture } from 'helpers/fixtures'; import waitForPromises from 'helpers/wait_for_promises'; import '~/lib/utils/common_utils'; @@ -54,22 +53,28 @@ describe('Todos', () => { let metakeyEvent; beforeEach(() => { - metakeyEvent = $.Event('click', { keyCode: 91, ctrlKey: true }); + metakeyEvent = new MouseEvent('click', { ctrlKey: true }); windowOpenSpy = jest.spyOn(window, 'open').mockImplementation(() => {}); }); it('opens the todo url in another tab', () => { const todoLink = todoItem.dataset.url; - $('.todos-list .todo').trigger(metakeyEvent); + document.querySelectorAll('.todos-list .todo').forEach((el) => { + el.dispatchEvent(metakeyEvent); + }); expect(visitUrl).not.toHaveBeenCalled(); expect(windowOpenSpy).toHaveBeenCalledWith(todoLink, '_blank'); }); it('run native funcionality when avatar is clicked', () => { - $('.todos-list a').on('click', (e) => e.preventDefault()); - $('.todos-list img').trigger(metakeyEvent); + document.querySelectorAll('.todos-list a').forEach((el) => { + el.addEventListener('click', (e) => e.preventDefault()); + }); + document.querySelectorAll('.todos-list img').forEach((el) => { + el.dispatchEvent(metakeyEvent); + }); expect(visitUrl).not.toHaveBeenCalled(); expect(windowOpenSpy).not.toHaveBeenCalled(); @@ -88,7 +93,7 @@ describe('Todos', () => { .onDelete(path) .replyOnce(200, { count: TEST_COUNT_BIG, done_count: TEST_DONE_COUNT_BIG }); onToggleSpy = jest.fn(); - $(document).on('todo:toggle', onToggleSpy); + document.addEventListener('todo:toggle', onToggleSpy); // Act el.click(); @@ -98,7 +103,13 @@ describe('Todos', () => { }); it('dispatches todo:toggle', () => { - expect(onToggleSpy).toHaveBeenCalledWith(expect.anything(), TEST_COUNT_BIG); + expect(onToggleSpy).toHaveBeenCalledWith( + expect.objectContaining({ + detail: { + count: TEST_COUNT_BIG, + }, + }), + ); }); it('updates pending text', () => { diff --git a/spec/helpers/storage_helper_spec.rb b/spec/helpers/storage_helper_spec.rb index c2c508cf485..4732076ab13 100644 --- a/spec/helpers/storage_helper_spec.rb +++ b/spec/helpers/storage_helper_spec.rb @@ -57,8 +57,8 @@ RSpec.describe StorageHelper do let_it_be(:paid_group) { create(:group) } before do - allow(helper).to receive(:can?).with(current_user, :admin_namespace, free_group).and_return(true) - allow(helper).to receive(:can?).with(current_user, :admin_namespace, paid_group).and_return(true) + allow(helper).to receive(:can?).with(current_user, :maintain_namespace, free_group).and_return(true) + allow(helper).to receive(:can?).with(current_user, :maintain_namespace, paid_group).and_return(true) allow(helper).to receive(:current_user) { current_user } allow(paid_group).to receive(:paid?).and_return(true) @@ -84,7 +84,7 @@ RSpec.describe StorageHelper do end it 'returns nil when current_user do not have access usage quotas page' do - allow(helper).to receive(:can?).with(current_user, :admin_namespace, free_group).and_return(false) + allow(helper).to receive(:can?).with(current_user, :maintain_namespace, free_group).and_return(false) expect(helper.storage_enforcement_banner_info(free_group)).to be(nil) end diff --git a/spec/lib/gitlab/metrics/exporter/base_exporter_spec.rb b/spec/lib/gitlab/metrics/exporter/base_exporter_spec.rb index 66fba7ab683..8175d60c2c9 100644 --- a/spec/lib/gitlab/metrics/exporter/base_exporter_spec.rb +++ b/spec/lib/gitlab/metrics/exporter/base_exporter_spec.rb @@ -19,6 +19,7 @@ RSpec.describe Gitlab::Metrics::Exporter::BaseExporter do allow(settings).to receive(:enabled).and_return(true) allow(settings).to receive(:port).and_return(0) allow(settings).to receive(:address).and_return('127.0.0.1') + allow(settings).to receive(:[]).with('tls_enabled').and_return(false) end after do @@ -88,6 +89,29 @@ RSpec.describe Gitlab::Metrics::Exporter::BaseExporter do exporter end end + + context 'with TLS enabled' do + let(:test_cert) { Rails.root.join('spec/fixtures/x509_certificate.crt').to_s } + let(:test_key) { Rails.root.join('spec/fixtures/x509_certificate_pk.key').to_s } + + before do + allow(settings).to receive(:[]).with('tls_enabled').and_return(true) + allow(settings).to receive(:[]).with('tls_cert_path').and_return(test_cert) + allow(settings).to receive(:[]).with('tls_key_path').and_return(test_key) + end + + it 'injects the necessary OpenSSL config for WEBrick' do + expect(::WEBrick::HTTPServer).to receive(:new).with( + a_hash_including( + SSLEnable: true, + SSLCertificate: an_instance_of(OpenSSL::X509::Certificate), + SSLPrivateKey: an_instance_of(OpenSSL::PKey::RSA), + SSLStartImmediately: true + )) + + exporter.start + end + end end describe 'when thread is not alive' do @@ -159,6 +183,7 @@ RSpec.describe Gitlab::Metrics::Exporter::BaseExporter do allow(settings).to receive(:enabled).and_return(true) allow(settings).to receive(:port).and_return(0) allow(settings).to receive(:address).and_return('127.0.0.1') + allow(settings).to receive(:[]).with('tls_enabled').and_return(false) stub_const('Gitlab::Metrics::Exporter::MetricsMiddleware', fake_collector) diff --git a/spec/metrics_server/metrics_server_spec.rb b/spec/metrics_server/metrics_server_spec.rb index 4c188a6ba29..c7716184d48 100644 --- a/spec/metrics_server/metrics_server_spec.rb +++ b/spec/metrics_server/metrics_server_spec.rb @@ -171,6 +171,29 @@ RSpec.describe MetricsServer do # rubocop:disable RSpec/FilePath described_class.spawn(target, metrics_dir: metrics_dir) end end + + context 'when TLS settings are present' do + before do + %w(web_exporter sidekiq_exporter).each do |key| + settings[key]['tls_enabled'] = true + settings[key]['tls_cert_path'] = '/path/to/cert.pem' + settings[key]['tls_key_path'] = '/path/to/key.pem' + end + end + + it 'sets the correct environment variables' do + expect(Process).to receive(:spawn).with( + expected_env.merge( + 'GME_CERT_FILE' => '/path/to/cert.pem', + 'GME_CERT_KEY' => '/path/to/key.pem' + ), + '/path/to/gme/gitlab-metrics-exporter', + hash_including(pgroup: true) + ).and_return(99) + + described_class.spawn(target, metrics_dir: metrics_dir, path: '/path/to/gme/') + end + end end end end diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb index 1ecf7e8b216..587c7332ad3 100644 --- a/spec/models/ci/build_spec.rb +++ b/spec/models/ci/build_spec.rb @@ -43,30 +43,10 @@ RSpec.describe Ci::Build do it { is_expected.to delegate_method(:legacy_detached_merge_request_pipeline?).to(:pipeline) } shared_examples 'calling proper BuildFinishedWorker' do - context 'when ci_build_finished_worker_namespace_changed feature flag enabled' do - before do - stub_feature_flags(ci_build_finished_worker_namespace_changed: build.project) - end - - it 'calls Ci::BuildFinishedWorker' do - expect(Ci::BuildFinishedWorker).to receive(:perform_async) - expect(::BuildFinishedWorker).not_to receive(:perform_async) - - subject - end - end + it 'calls Ci::BuildFinishedWorker' do + expect(Ci::BuildFinishedWorker).to receive(:perform_async) - context 'when ci_build_finished_worker_namespace_changed feature flag disabled' do - before do - stub_feature_flags(ci_build_finished_worker_namespace_changed: false) - end - - it 'calls ::BuildFinishedWorker' do - expect(::BuildFinishedWorker).to receive(:perform_async) - expect(Ci::BuildFinishedWorker).not_to receive(:perform_async) - - subject - end + subject end end diff --git a/spec/policies/group_policy_spec.rb b/spec/policies/group_policy_spec.rb index c513baea517..3ef859376a4 100644 --- a/spec/policies/group_policy_spec.rb +++ b/spec/policies/group_policy_spec.rb @@ -4,6 +4,7 @@ require 'spec_helper' RSpec.describe GroupPolicy do include_context 'GroupPolicy context' + using RSpec::Parameterized::TableSyntax context 'public group with no user' do let(:group) { create(:group, :public, :crm_enabled) } @@ -1229,4 +1230,30 @@ RSpec.describe GroupPolicy do it { is_expected.to be_disallowed(:admin_crm_contact) } it { is_expected.to be_disallowed(:admin_crm_organization) } end + + describe 'maintain_namespace' do + context 'with non-admin roles' do + where(:role, :allowed) do + :guest | false + :reporter | false + :developer | false + :maintainer | true + :owner | true + end + + with_them do + let(:current_user) { public_send(role) } + + it do + expect(subject.allowed?(:maintain_namespace)).to eq allowed + end + end + end + + context 'as an admin', :enable_admin_mode do + let(:current_user) { admin } + + it { is_expected.to be_allowed(:maintain_namespace) } + end + end end diff --git a/spec/policies/issue_policy_spec.rb b/spec/policies/issue_policy_spec.rb index 557bda985af..fefbb59a830 100644 --- a/spec/policies/issue_policy_spec.rb +++ b/spec/policies/issue_policy_spec.rb @@ -13,6 +13,7 @@ RSpec.describe IssuePolicy do let(:reporter_from_group_link) { create(:user) } let(:non_member) { create(:user) } let(:support_bot) { User.support_bot } + let(:alert_bot) { User.alert_bot } def permissions(user, issue) described_class.new(user, issue) @@ -41,6 +42,14 @@ RSpec.describe IssuePolicy do end end + shared_examples 'alert bot' do + it 'allows alert_bot to read and set metadata on issues' do + expect(permissions(alert_bot, issue)).to be_allowed(:read_issue, :read_issue_iid, :update_issue, :admin_issue, :set_issue_metadata, :set_confidentiality) + expect(permissions(alert_bot, issue_no_assignee)).to be_allowed(:read_issue, :read_issue_iid, :update_issue, :admin_issue, :set_issue_metadata, :set_confidentiality) + expect(permissions(alert_bot, new_issue)).to be_allowed(:read_issue, :read_issue_iid, :update_issue, :admin_issue, :set_issue_metadata, :set_confidentiality) + end + end + context 'a private project' do let(:project) { create(:project, :private) } let(:issue) { create(:issue, project: project, assignees: [assignee], author: author) } @@ -106,6 +115,7 @@ RSpec.describe IssuePolicy do expect(permissions(non_member, new_issue)).to be_disallowed(:create_issue, :set_issue_metadata, :set_confidentiality) end + it_behaves_like 'alert bot' it_behaves_like 'support bot with service desk disabled' it_behaves_like 'support bot with service desk enabled' @@ -270,6 +280,7 @@ RSpec.describe IssuePolicy do expect(permissions(support_bot, new_issue)).to be_disallowed(:create_issue, :set_issue_metadata, :set_confidentiality) end + it_behaves_like 'alert bot' it_behaves_like 'support bot with service desk enabled' context 'when issues are private' do @@ -326,6 +337,7 @@ RSpec.describe IssuePolicy do expect(permissions(non_member, new_issue)).to be_disallowed(:create_issue, :set_issue_metadata, :set_confidentiality) end + it_behaves_like 'alert bot' it_behaves_like 'support bot with service desk disabled' it_behaves_like 'support bot with service desk enabled' end diff --git a/spec/policies/namespaces/user_namespace_policy_spec.rb b/spec/policies/namespaces/user_namespace_policy_spec.rb index 22c3f6a6d67..e8a3c9b828d 100644 --- a/spec/policies/namespaces/user_namespace_policy_spec.rb +++ b/spec/policies/namespaces/user_namespace_policy_spec.rb @@ -8,7 +8,7 @@ RSpec.describe Namespaces::UserNamespacePolicy do let_it_be(:admin) { create(:admin) } let_it_be(:namespace) { create(:user_namespace, owner: owner) } - let(:owner_permissions) { [:owner_access, :create_projects, :admin_namespace, :read_namespace, :read_statistics, :transfer_projects, :admin_package] } + let(:owner_permissions) { [:owner_access, :create_projects, :admin_namespace, :read_namespace, :read_statistics, :transfer_projects, :admin_package, :maintain_namespace] } subject { described_class.new(current_user, namespace) } diff --git a/spec/presenters/clusters/cluster_presenter_spec.rb b/spec/presenters/clusters/cluster_presenter_spec.rb index 6570ab56ed0..7349f444fac 100644 --- a/spec/presenters/clusters/cluster_presenter_spec.rb +++ b/spec/presenters/clusters/cluster_presenter_spec.rb @@ -148,84 +148,4 @@ RSpec.describe Clusters::ClusterPresenter do it_behaves_like 'cluster health data' end end - - describe '#gitlab_managed_apps_logs_path' do - context 'user can read logs' do - let(:project) { cluster.project } - - before do - project.add_maintainer(user) - end - - it 'returns path to logs' do - expect(presenter.gitlab_managed_apps_logs_path).to eq k8s_project_logs_path(project, cluster_id: cluster.id, format: :json) - end - - context 'cluster has elastic stack integration enabled' do - before do - create(:clusters_integrations_elastic_stack, cluster: cluster) - end - - it 'returns path to logs' do - expect(presenter.gitlab_managed_apps_logs_path).to eq elasticsearch_project_logs_path(project, cluster_id: cluster.id, format: :json) - end - end - end - - context 'group cluster' do - let(:cluster) { create(:cluster, cluster_type: :group_type, groups: [group]) } - let(:group) { create(:group, name: 'Foo') } - - context 'user can read logs' do - before do - group.add_maintainer(user) - end - - context 'there are projects within group' do - let!(:project) { create(:project, namespace: group) } - - it 'returns path to logs' do - expect(presenter.gitlab_managed_apps_logs_path).to eq k8s_project_logs_path(project, cluster_id: cluster.id, format: :json) - end - end - - context 'there are no projects within group' do - it 'returns nil' do - expect(presenter.gitlab_managed_apps_logs_path).to be_nil - end - end - end - end - - context 'instance cluster' do - let(:cluster) { create(:cluster, cluster_type: :instance_type) } - let!(:project) { create(:project) } - let(:user) { create(:admin) } - - before do - project.add_maintainer(user) - stub_application_setting(admin_mode: false) - end - - context 'user can read logs' do - it 'returns path to logs' do - expect(presenter.gitlab_managed_apps_logs_path).to eq k8s_project_logs_path(project, cluster_id: cluster.id, format: :json) - end - end - end - - context 'user can NOT read logs' do - let(:cluster) { create(:cluster, cluster_type: :instance_type) } - let!(:project) { create(:project) } - - before do - project.add_developer(user) - stub_application_setting(admin_mode: false) - end - - it 'returns nil' do - expect(presenter.gitlab_managed_apps_logs_path).to be_nil - end - end - end end diff --git a/spec/serializers/cluster_entity_spec.rb b/spec/serializers/cluster_entity_spec.rb index 93003e75c0c..7c4c146575d 100644 --- a/spec/serializers/cluster_entity_spec.rb +++ b/spec/serializers/cluster_entity_spec.rb @@ -55,34 +55,5 @@ RSpec.describe ClusterEntity do expect(helm[:status]).to eq(:not_installable) end end - - context 'enable_advanced_logs_querying' do - let(:cluster) { create(:cluster, :project) } - let(:user) { create(:user) } - - subject { described_class.new(cluster, request: request).as_json } - - context 'elastic stack is not installed on cluster' do - it 'returns false' do - expect(subject[:enable_advanced_logs_querying]).to be false - end - end - - context 'elastic stack is enabled on cluster' do - it 'returns true' do - create(:clusters_integrations_elastic_stack, cluster: cluster) - - expect(subject[:enable_advanced_logs_querying]).to be true - end - end - - context 'when feature is disabled' do - before do - stub_feature_flags(monitor_logging: false) - end - - specify { is_expected.not_to include(:enable_advanced_logs_querying) } - end - end end end diff --git a/spec/serializers/cluster_serializer_spec.rb b/spec/serializers/cluster_serializer_spec.rb index e65e97b6ae0..7ec6d3c8bb8 100644 --- a/spec/serializers/cluster_serializer_spec.rb +++ b/spec/serializers/cluster_serializer_spec.rb @@ -14,8 +14,6 @@ RSpec.describe ClusterSerializer do :enabled, :environment_scope, :id, - :gitlab_managed_apps_logs_path, - :enable_advanced_logs_querying, :kubernetes_errors, :name, :nodes, diff --git a/spec/services/issues/create_service_spec.rb b/spec/services/issues/create_service_spec.rb index 5c1544d8ebc..914b3d3b867 100644 --- a/spec/services/issues/create_service_spec.rb +++ b/spec/services/issues/create_service_spec.rb @@ -489,6 +489,23 @@ RSpec.describe Issues::CreateService do end end end + + context 'with alert bot author' do + let_it_be(:user) { User.alert_bot } + let_it_be(:label) { create(:label, project: project) } + + let(:opts) do + { + title: 'Title', + description: %(/label #{label.to_reference(format: :name)}") + } + end + + it 'can apply labels' do + expect(issue).to be_persisted + expect(issue.labels).to eq([label]) + end + end end context 'resolving discussions' do diff --git a/spec/services/pages/delete_service_spec.rb b/spec/services/pages/delete_service_spec.rb index 0c0b2c0431b..29d9a47c72e 100644 --- a/spec/services/pages/delete_service_spec.rb +++ b/spec/services/pages/delete_service_spec.rb @@ -45,7 +45,11 @@ RSpec.describe Pages::DeleteService do end it 'publishes a ProjectDeleted event with project id and namespace id' do - expected_data = { project_id: project.id, namespace_id: project.namespace_id } + expected_data = { + project_id: project.id, + namespace_id: project.namespace_id, + root_namespace_id: project.root_namespace.id + } expect { service.execute }.to publish_event(Pages::PageDeletedEvent).with(expected_data) end diff --git a/spec/workers/build_finished_worker_spec.rb b/spec/workers/build_finished_worker_spec.rb index b4b986662d2..2ff173c1558 100644 --- a/spec/workers/build_finished_worker_spec.rb +++ b/spec/workers/build_finished_worker_spec.rb @@ -12,7 +12,6 @@ RSpec.describe BuildFinishedWorker do let_it_be(:build) { create(:ci_build, :success, pipeline: create(:ci_pipeline)) } before do - stub_feature_flags(ci_build_finished_worker_namespace_changed: build.project) expect(Ci::Build).to receive(:find_by).with({ id: build.id }).and_return(build) end @@ -30,18 +29,6 @@ RSpec.describe BuildFinishedWorker do subject end - context 'with ci_build_finished_worker_namespace_changed feature flag disabled' do - before do - stub_feature_flags(ci_build_finished_worker_namespace_changed: false) - end - - it 'calls deprecated worker' do - expect(ArchiveTraceWorker).to receive(:perform_in) - - subject - end - end - context 'when build is failed' do before do build.update!(status: :failed) diff --git a/spec/workers/ci/build_finished_worker_spec.rb b/spec/workers/ci/build_finished_worker_spec.rb index e9e7a057f98..201182636e7 100644 --- a/spec/workers/ci/build_finished_worker_spec.rb +++ b/spec/workers/ci/build_finished_worker_spec.rb @@ -10,7 +10,6 @@ RSpec.describe Ci::BuildFinishedWorker do let_it_be(:build) { create(:ci_build, :success, pipeline: create(:ci_pipeline)) } before do - stub_feature_flags(ci_build_finished_worker_namespace_changed: build.project) expect(Ci::Build).to receive(:find_by).with({ id: build.id }).and_return(build) end @@ -28,18 +27,6 @@ RSpec.describe Ci::BuildFinishedWorker do subject end - context 'with ci_build_finished_worker_namespace_changed feature flag disabled' do - before do - stub_feature_flags(ci_build_finished_worker_namespace_changed: false) - end - - it 'calls deprecated worker' do - expect(ArchiveTraceWorker).to receive(:perform_in) - - subject - end - end - context 'when build is failed' do before do build.update!(status: :failed) |