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
path: root/spec
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-06-30 00:09:23 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-06-30 00:09:23 +0300
commitab593c8ded443f7ade3540ff8dac69ee51bc74fd (patch)
tree1fb8b2e194747f135d8610cd4b77766ac458b3a7 /spec
parent860efb35e24e07a1a22bcafcddb5f0409d40354c (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r--spec/events/pages/page_deleted_event_spec.rb1
-rw-r--r--spec/features/monitor_sidebar_link_spec.rb5
-rw-r--r--spec/fixtures/api/schemas/public_api/v4/environment.json5
-rw-r--r--spec/frontend/header_spec.js24
-rw-r--r--spec/frontend/pages/dashboard/todos/index/todos_spec.js25
-rw-r--r--spec/helpers/storage_helper_spec.rb6
-rw-r--r--spec/lib/gitlab/metrics/exporter/base_exporter_spec.rb25
-rw-r--r--spec/metrics_server/metrics_server_spec.rb23
-rw-r--r--spec/models/ci/build_spec.rb26
-rw-r--r--spec/policies/group_policy_spec.rb27
-rw-r--r--spec/policies/issue_policy_spec.rb12
-rw-r--r--spec/policies/namespaces/user_namespace_policy_spec.rb2
-rw-r--r--spec/presenters/clusters/cluster_presenter_spec.rb80
-rw-r--r--spec/serializers/cluster_entity_spec.rb29
-rw-r--r--spec/serializers/cluster_serializer_spec.rb2
-rw-r--r--spec/services/issues/create_service_spec.rb17
-rw-r--r--spec/services/pages/delete_service_spec.rb6
-rw-r--r--spec/workers/build_finished_worker_spec.rb13
-rw-r--r--spec/workers/ci/build_finished_worker_spec.rb13
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)