From 587b778d3eaa04e18b3b8e2ecc290156e3e1f93e Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Mon, 16 Aug 2021 21:11:02 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- spec/factories/project_error_tracking_settings.rb | 4 +++ .../pipelines/pipeline_multi_actions_spec.js | 8 ++++++ .../vulnerability_reports_comparer_spec.rb | 5 ++-- .../orphaned_invite_tokens_cleanup_spec.rb | 32 ++++++++++++++++++++++ spec/models/member_spec.rb | 18 +++++++++++- spec/requests/api/error_tracking_collector_spec.rb | 10 ++++++- 6 files changed, 72 insertions(+), 5 deletions(-) create mode 100644 spec/migrations/orphaned_invite_tokens_cleanup_spec.rb (limited to 'spec') diff --git a/spec/factories/project_error_tracking_settings.rb b/spec/factories/project_error_tracking_settings.rb index e09d58d293f..424f462e1a0 100644 --- a/spec/factories/project_error_tracking_settings.rb +++ b/spec/factories/project_error_tracking_settings.rb @@ -12,5 +12,9 @@ FactoryBot.define do trait :disabled do enabled { false } end + + trait :integrated do + integrated { true } + end end end diff --git a/spec/frontend/pipelines/pipeline_multi_actions_spec.js b/spec/frontend/pipelines/pipeline_multi_actions_spec.js index 88b3ef2032a..ce33b6011bf 100644 --- a/spec/frontend/pipelines/pipeline_multi_actions_spec.js +++ b/spec/frontend/pipelines/pipeline_multi_actions_spec.js @@ -53,6 +53,7 @@ describe('Pipeline Multi Actions Dropdown', () => { const findDropdown = () => wrapper.findComponent(GlDropdown); const findAllArtifactItems = () => wrapper.findAllByTestId(artifactItemTestId); const findFirstArtifactItem = () => wrapper.findByTestId(artifactItemTestId); + const findEmptyMessage = () => wrapper.findByTestId('artifacts-empty-message'); beforeEach(() => { mockAxios = new MockAdapter(axios); @@ -86,6 +87,7 @@ describe('Pipeline Multi Actions Dropdown', () => { createComponent({ mockData: { artifacts } }); expect(findAllArtifactItems()).toHaveLength(artifacts.length); + expect(findEmptyMessage().exists()).toBe(false); }); it('should render the correct artifact name and path', () => { @@ -95,6 +97,12 @@ describe('Pipeline Multi Actions Dropdown', () => { expect(findFirstArtifactItem().text()).toBe(`Download ${artifacts[0].name} artifact`); }); + it('should render empty message when no artifacts are found', () => { + createComponent({ mockData: { artifacts: [] } }); + + expect(findEmptyMessage().exists()).toBe(true); + }); + describe('with a failing request', () => { it('should render an error message', async () => { const endpoint = artifactsEndpoint.replace(artifactsEndpointPlaceholder, pipelineId); diff --git a/spec/lib/gitlab/ci/reports/security/vulnerability_reports_comparer_spec.rb b/spec/lib/gitlab/ci/reports/security/vulnerability_reports_comparer_spec.rb index a782c2e8066..44e66fd9028 100644 --- a/spec/lib/gitlab/ci/reports/security/vulnerability_reports_comparer_spec.rb +++ b/spec/lib/gitlab/ci/reports/security/vulnerability_reports_comparer_spec.rb @@ -24,12 +24,11 @@ RSpec.describe Gitlab::Ci::Reports::Security::VulnerabilityReportsComparer do subject { described_class.new(project, base_report, head_report) } - where(vulnerability_finding_tracking_signatures_enabled: [true, false]) + where(vulnerability_finding_signatures: [true, false]) with_them do before do - stub_feature_flags(vulnerability_finding_tracking_signatures: vulnerability_finding_tracking_signatures_enabled) - stub_licensed_features(vulnerability_finding_signatures: vulnerability_finding_tracking_signatures_enabled) + stub_licensed_features(vulnerability_finding_signatures: vulnerability_finding_signatures) end describe '#base_report_out_of_date' do diff --git a/spec/migrations/orphaned_invite_tokens_cleanup_spec.rb b/spec/migrations/orphaned_invite_tokens_cleanup_spec.rb new file mode 100644 index 00000000000..889c04700c7 --- /dev/null +++ b/spec/migrations/orphaned_invite_tokens_cleanup_spec.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +require 'spec_helper' +require_migration! 'orphaned_invite_tokens_cleanup' + +RSpec.describe OrphanedInviteTokensCleanup, :migration do + def create_member(**extra_attributes) + defaults = { + access_level: 10, + source_id: 1, + source_type: "Project", + notification_level: 0, + type: 'ProjectMember' + } + + table(:members).create!(defaults.merge(extra_attributes)) + end + + describe '#up', :aggregate_failures do + it 'removes invite tokens for accepted records with invite_accepted_at < created_at' do + record1 = create_member(invite_token: 'foo', invite_accepted_at: 1.day.ago, created_at: 1.hour.ago) + record2 = create_member(invite_token: 'foo2', invite_accepted_at: nil, created_at: 1.hour.ago) + record3 = create_member(invite_token: 'foo3', invite_accepted_at: 1.day.ago, created_at: 1.year.ago) + + migrate! + + expect(table(:members).find(record1.id).invite_token).to eq nil + expect(table(:members).find(record2.id).invite_token).to eq 'foo2' + expect(table(:members).find(record3.id).invite_token).to eq 'foo3' + end + end +end diff --git a/spec/models/member_spec.rb b/spec/models/member_spec.rb index 7ba1fe2965b..067b3c25645 100644 --- a/spec/models/member_spec.rb +++ b/spec/models/member_spec.rb @@ -667,7 +667,23 @@ RSpec.describe Member do let!(:member) { create(:project_member, invite_email: "user@example.com", user: nil) } it "sets the invite token" do - expect { member.generate_invite_token }.to change { member.invite_token} + expect { member.generate_invite_token }.to change { member.invite_token } + end + end + + describe 'generate invite token on create' do + let!(:member) { build(:project_member, invite_email: "user@example.com") } + + it "sets the invite token" do + expect { member.save! }.to change { member.invite_token }.to(kind_of(String)) + end + + context 'when invite was already accepted' do + it "does not set invite token" do + member.invite_accepted_at = 1.day.ago + + expect { member.save! }.not_to change { member.invite_token }.from(nil) + end end end diff --git a/spec/requests/api/error_tracking_collector_spec.rb b/spec/requests/api/error_tracking_collector_spec.rb index c83524db6a6..4b186657c4a 100644 --- a/spec/requests/api/error_tracking_collector_spec.rb +++ b/spec/requests/api/error_tracking_collector_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' RSpec.describe API::ErrorTrackingCollector do let_it_be(:project) { create(:project, :private) } - let_it_be(:setting) { create(:project_error_tracking_setting, project: project) } + let_it_be(:setting) { create(:project_error_tracking_setting, :integrated, project: project) } let_it_be(:client_key) { create(:error_tracking_client_key, project: project) } describe "POST /error_tracking/collector/api/:id/envelope" do @@ -40,6 +40,14 @@ RSpec.describe API::ErrorTrackingCollector do it_behaves_like 'not found' end + context 'integrated error tracking is disabled' do + before do + setting.update!(integrated: false) + end + + it_behaves_like 'not found' + end + context 'feature flag is disabled' do before do stub_feature_flags(integrated_error_tracking: false) -- cgit v1.2.3