diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-08-10 09:08:47 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-08-10 09:08:47 +0300 |
commit | 0adc81d8e0c7b291fd7fdef33a4ea9c01b4852ce (patch) | |
tree | a5ef7b7c4109427b748d239066435151a43fb499 /spec | |
parent | f2c0afdcb5597b226d75cdb043e57f79034b04bb (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r-- | spec/controllers/projects_controller_spec.rb | 26 | ||||
-rw-r--r-- | spec/features/projects/pipelines/pipelines_spec.rb | 20 | ||||
-rw-r--r-- | spec/frontend/pipelines/pipeline_url_spec.js | 1 | ||||
-rw-r--r-- | spec/frontend/pipelines/pipelines_spec.js | 9 | ||||
-rw-r--r-- | spec/frontend/pipelines/pipelines_table_spec.js | 4 | ||||
-rw-r--r-- | spec/lib/gitlab/background_migration/recalculate_vulnerabilities_occurrences_uuid_spec.rb | 11 | ||||
-rw-r--r-- | spec/models/ci/build_spec.rb | 8 | ||||
-rw-r--r-- | spec/support/database/prevent_cross_joins.rb | 26 |
8 files changed, 64 insertions, 41 deletions
diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb index 92df35f9d10..8afb80d9cc5 100644 --- a/spec/controllers/projects_controller_spec.rb +++ b/spec/controllers/projects_controller_spec.rb @@ -42,32 +42,6 @@ RSpec.describe ProjectsController do expect(response).not_to render_template('new') end end - - context 'when user is an external user' do - let_it_be(:user) { create(:user, external: true) } - - it 'responds with status 404' do - group.add_owner(user) - - get :new, params: { namespace_id: group.id } - - expect(response).to have_gitlab_http_status(:not_found) - expect(response).not_to render_template('new') - end - end - - context 'when user is a group guest' do - let_it_be(:user) { create(:user) } - - it 'responds with status 404' do - group.add_guest(user) - - get :new, params: { namespace_id: group.id } - - expect(response).to have_gitlab_http_status(:not_found) - expect(response).not_to render_template('new') - end - end end end end diff --git a/spec/features/projects/pipelines/pipelines_spec.rb b/spec/features/projects/pipelines/pipelines_spec.rb index 1de0eea4657..b531d677870 100644 --- a/spec/features/projects/pipelines/pipelines_spec.rb +++ b/spec/features/projects/pipelines/pipelines_spec.rb @@ -585,6 +585,26 @@ RSpec.describe 'Pipelines', :js do expect(page).to have_selector('.gl-pagination .page-link', count: 4) end end + + context 'with pipeline key selection' do + before do + visit project_pipelines_path(project) + wait_for_requests + end + + it 'changes the Pipeline ID column for Pipeline IID' do + page.find('[data-testid="pipeline-key-dropdown"]').click + + within '.gl-new-dropdown-contents' do + dropdown_options = page.find_all '.gl-new-dropdown-item' + + dropdown_options[1].click + end + + expect(page.find('[data-testid="pipeline-th"]')).to have_content 'Pipeline IID' + expect(page.find('[data-testid="pipeline-url-link"]')).to have_content "##{pipeline.iid}" + end + end end describe 'GET /:project/-/pipelines/show' do diff --git a/spec/frontend/pipelines/pipeline_url_spec.js b/spec/frontend/pipelines/pipeline_url_spec.js index 367c7f2b2f6..912b5afe0e1 100644 --- a/spec/frontend/pipelines/pipeline_url_spec.js +++ b/spec/frontend/pipelines/pipeline_url_spec.js @@ -28,6 +28,7 @@ describe('Pipeline Url Component', () => { flags: {}, }, pipelineScheduleUrl: 'foo', + pipelineKey: 'id', }; const createComponent = (props) => { diff --git a/spec/frontend/pipelines/pipelines_spec.js b/spec/frontend/pipelines/pipelines_spec.js index dd2cb1e8643..aa30062c987 100644 --- a/spec/frontend/pipelines/pipelines_spec.js +++ b/spec/frontend/pipelines/pipelines_spec.js @@ -74,6 +74,7 @@ describe('Pipelines', () => { const findTablePagination = () => wrapper.findComponent(TablePagination); const findTab = (tab) => wrapper.findByTestId(`pipelines-tab-${tab}`); + const findPipelineKeyDropdown = () => wrapper.findByTestId('pipeline-key-dropdown'); const findRunPipelineButton = () => wrapper.findByTestId('run-pipeline-button'); const findCiLintButton = () => wrapper.findByTestId('ci-lint-button'); const findCleanCacheButton = () => wrapper.findByTestId('clear-cache-button'); @@ -528,6 +529,10 @@ describe('Pipelines', () => { expect(findFilteredSearch().exists()).toBe(true); }); + it('renders the pipeline key dropdown', () => { + expect(findPipelineKeyDropdown().exists()).toBe(true); + }); + it('renders tab empty state finished scope', async () => { mock.onGet(mockPipelinesEndpoint, { params: { scope: 'finished', page: '1' } }).reply(200, { pipelines: [], @@ -623,6 +628,10 @@ describe('Pipelines', () => { expect(findFilteredSearch().exists()).toBe(false); }); + it('does not render the pipeline key dropdown', () => { + expect(findPipelineKeyDropdown().exists()).toBe(false); + }); + it('does not render tabs nor buttons', () => { expect(findNavigationTabs().exists()).toBe(false); expect(findTab('all').exists()).toBe(false); diff --git a/spec/frontend/pipelines/pipelines_table_spec.js b/spec/frontend/pipelines/pipelines_table_spec.js index 68b0dfc018e..4472a5ae70d 100644 --- a/spec/frontend/pipelines/pipelines_table_spec.js +++ b/spec/frontend/pipelines/pipelines_table_spec.js @@ -8,6 +8,7 @@ import PipelineTriggerer from '~/pipelines/components/pipelines_list/pipeline_tr import PipelineUrl from '~/pipelines/components/pipelines_list/pipeline_url.vue'; import PipelinesTable from '~/pipelines/components/pipelines_list/pipelines_table.vue'; import PipelinesTimeago from '~/pipelines/components/pipelines_list/time_ago.vue'; +import { PipelineKeyOptions } from '~/pipelines/constants'; import eventHub from '~/pipelines/event_hub'; import CiBadge from '~/vue_shared/components/ci_badge_link.vue'; @@ -24,6 +25,7 @@ describe('Pipelines Table', () => { const defaultProps = { pipelines: [], viewType: 'root', + pipelineKeyOption: PipelineKeyOptions[0], }; const createMockPipeline = () => { @@ -80,7 +82,7 @@ describe('Pipelines Table', () => { it('should render table head with correct columns', () => { expect(findStatusTh().text()).toBe('Status'); - expect(findPipelineTh().text()).toBe('Pipeline'); + expect(findPipelineTh().text()).toBe('Pipeline ID'); expect(findTriggererTh().text()).toBe('Triggerer'); expect(findCommitTh().text()).toBe('Commit'); expect(findStagesTh().text()).toBe('Stages'); diff --git a/spec/lib/gitlab/background_migration/recalculate_vulnerabilities_occurrences_uuid_spec.rb b/spec/lib/gitlab/background_migration/recalculate_vulnerabilities_occurrences_uuid_spec.rb index 70906961641..30908145782 100644 --- a/spec/lib/gitlab/background_migration/recalculate_vulnerabilities_occurrences_uuid_spec.rb +++ b/spec/lib/gitlab/background_migration/recalculate_vulnerabilities_occurrences_uuid_spec.rb @@ -13,12 +13,13 @@ RSpec.describe Gitlab::BackgroundMigration::RecalculateVulnerabilitiesOccurrence let(:vulnerabilities) { table(:vulnerabilities) } let(:vulnerabilities_findings) { table(:vulnerability_occurrences) } let(:vulnerability_identifiers) { table(:vulnerability_identifiers) } + let(:vulnerability_identifier) do vulnerability_identifiers.create!( project_id: project.id, external_type: 'uuid-v5', external_id: 'uuid-v5', - fingerprint: '7e394d1b1eb461a7406d7b1e08f057a1cf11287a', + fingerprint: Gitlab::Database::ShaAttribute.serialize('7e394d1b1eb461a7406d7b1e08f057a1cf11287a'), name: 'Identifier for UUIDv5') end @@ -27,7 +28,7 @@ RSpec.describe Gitlab::BackgroundMigration::RecalculateVulnerabilitiesOccurrence project_id: project.id, external_type: 'uuid-v4', external_id: 'uuid-v4', - fingerprint: '772da93d34a1ba010bcb5efa9fb6f8e01bafcc89', + fingerprint: Gitlab::Database::ShaAttribute.serialize('772da93d34a1ba010bcb5efa9fb6f8e01bafcc89'), name: 'Identifier for UUIDv4') end @@ -59,7 +60,7 @@ RSpec.describe Gitlab::BackgroundMigration::RecalculateVulnerabilitiesOccurrence scanner_id: different_scanner.id, primary_identifier_id: different_vulnerability_identifier.id, report_type: 0, # "sast" - location_fingerprint: "fa18f432f1d56675f4098d318739c3cd5b14eb3e", + location_fingerprint: Gitlab::Database::ShaAttribute.serialize("fa18f432f1d56675f4098d318739c3cd5b14eb3e"), uuid: known_uuid_v4 ) end @@ -91,7 +92,7 @@ RSpec.describe Gitlab::BackgroundMigration::RecalculateVulnerabilitiesOccurrence scanner_id: scanner.id, primary_identifier_id: vulnerability_identifier.id, report_type: 0, # "sast" - location_fingerprint: "838574be0210968bf6b9f569df9c2576242cbf0a", + location_fingerprint: Gitlab::Database::ShaAttribute.serialize("838574be0210968bf6b9f569df9c2576242cbf0a"), uuid: known_uuid_v5 ) end @@ -115,7 +116,7 @@ RSpec.describe Gitlab::BackgroundMigration::RecalculateVulnerabilitiesOccurrence scanner_id: different_scanner.id, primary_identifier_id: different_vulnerability_identifier.id, report_type: 0, # "sast" - location_fingerprint: "fa18f432f1d56675f4098d318739c3cd5b14eb3e", + location_fingerprint: Gitlab::Database::ShaAttribute.serialize("fa18f432f1d56675f4098d318739c3cd5b14eb3e"), uuid: known_uuid_v4 ) diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb index ab2b6950e19..3e16de44cea 100644 --- a/spec/models/ci/build_spec.rb +++ b/spec/models/ci/build_spec.rb @@ -5188,6 +5188,14 @@ RSpec.describe Ci::Build do end end + describe '.with_project_and_metadata' do + it 'does not join across databases' do + with_cross_joins_prevented do + ::Ci::Build.with_project_and_metadata.to_a + end + end + end + describe '.without_coverage' do let!(:build_with_coverage) { create(:ci_build, pipeline: pipeline, coverage: 100.0) } diff --git a/spec/support/database/prevent_cross_joins.rb b/spec/support/database/prevent_cross_joins.rb index 9fb697da722..c49b165c6c3 100644 --- a/spec/support/database/prevent_cross_joins.rb +++ b/spec/support/database/prevent_cross_joins.rb @@ -56,6 +56,20 @@ module Database end end + module SpecHelpers + def with_cross_joins_prevented + subscriber = ActiveSupport::Notifications.subscribe('sql.active_record') do |event| + ::Database::PreventCrossJoins.validate_cross_joins!(event.payload[:sql]) + end + + Thread.current[:allow_cross_joins_across_databases] = false + + yield + ensure + ActiveSupport::Notifications.unsubscribe(subscriber) if subscriber + end + end + module GitlabDatabaseMixin def allow_cross_joins_across_databases(url:) Thread.current[:allow_cross_joins_across_databases] = true @@ -69,16 +83,10 @@ Gitlab::Database.singleton_class.prepend( Database::PreventCrossJoins::GitlabDatabaseMixin) RSpec.configure do |config| + config.include(::Database::PreventCrossJoins::SpecHelpers) + # TODO: remove `:prevent_cross_joins` to enable the check by default config.around(:each, :prevent_cross_joins) do |example| - subscriber = ActiveSupport::Notifications.subscribe('sql.active_record') do |event| - ::Database::PreventCrossJoins.validate_cross_joins!(event.payload[:sql]) - end - - Thread.current[:allow_cross_joins_across_databases] = false - - example.run - ensure - ActiveSupport::Notifications.unsubscribe(subscriber) if subscriber + with_cross_joins_prevented { example.run } end end |