Commit 2a56991a authored by Kushal Pandya's avatar Kushal Pandya

Merge branch '299295-remove-old-scanner-filter' into 'master'

Remove old scanner filter and only use new filter on vuln report page [RUN ALL RSPEC] [RUN AS-IF-FOSS]

See merge request gitlab-org/gitlab!61959
parents 5d11cbe5 9e9cb618
<script> <script>
import { debounce } from 'lodash'; import { debounce } from 'lodash';
import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import { import {
stateFilter, stateFilter,
severityFilter, severityFilter,
...@@ -15,7 +14,6 @@ import StandardFilter from './filters/standard_filter.vue'; ...@@ -15,7 +14,6 @@ import StandardFilter from './filters/standard_filter.vue';
export default { export default {
components: { StandardFilter, ScannerFilter, ActivityFilter }, components: { StandardFilter, ScannerFilter, ActivityFilter },
mixins: [glFeatureFlagsMixin()],
inject: ['dashboardType'], inject: ['dashboardType'],
props: { props: {
projects: { type: Array, required: false, default: undefined }, projects: { type: Array, required: false, default: undefined },
...@@ -23,23 +21,16 @@ export default { ...@@ -23,23 +21,16 @@ export default {
data() { data() {
return { return {
filterQuery: {}, filterQuery: {},
standardFilters: [stateFilter, severityFilter],
}; };
}, },
computed: { computed: {
isPipeline() { isPipeline() {
return this.dashboardType === DASHBOARD_TYPES.PIPELINE; return this.dashboardType === DASHBOARD_TYPES.PIPELINE;
}, },
standardFilters() {
return this.shouldShowCustomScannerFilter
? [stateFilter, severityFilter]
: [stateFilter, severityFilter, scannerFilter];
},
shouldShowProjectFilter() { shouldShowProjectFilter() {
return Boolean(this.projects?.length); return Boolean(this.projects?.length);
}, },
shouldShowCustomScannerFilter() {
return this.glFeatures.customSecurityScanners;
},
projectFilter() { projectFilter() {
return getProjectFilter(this.projects); return getProjectFilter(this.projects);
}, },
...@@ -71,11 +62,7 @@ export default { ...@@ -71,11 +62,7 @@ export default {
:data-testid="filter.id" :data-testid="filter.id"
@filter-changed="updateFilterQuery" @filter-changed="updateFilterQuery"
/> />
<scanner-filter <scanner-filter :filter="$options.scannerFilter" @filter-changed="updateFilterQuery" />
v-if="shouldShowCustomScannerFilter"
:filter="$options.scannerFilter"
@filter-changed="updateFilterQuery"
/>
<activity-filter <activity-filter
v-if="!isPipeline" v-if="!isPipeline"
:filter="$options.activityFilter" :filter="$options.activityFilter"
......
...@@ -36,7 +36,7 @@ export const createScannerOption = (vendor, reportType) => { ...@@ -36,7 +36,7 @@ export const createScannerOption = (vendor, reportType) => {
const type = reportType.toUpperCase(); const type = reportType.toUpperCase();
return { return {
id: gon.features?.customSecurityScanners ? `${vendor}.${type}` : type, id: `${vendor}.${type}`,
reportType: reportType.toUpperCase(), reportType: reportType.toUpperCase(),
name: convertReportType(reportType), name: convertReportType(reportType),
scannerIds: [], scannerIds: [],
...@@ -45,7 +45,7 @@ export const createScannerOption = (vendor, reportType) => { ...@@ -45,7 +45,7 @@ export const createScannerOption = (vendor, reportType) => {
export const scannerFilter = { export const scannerFilter = {
name: s__('SecurityReports|Scanner'), name: s__('SecurityReports|Scanner'),
id: gon.features?.customSecurityScanners ? 'scanner' : 'reportType', id: 'scanner',
options: Object.keys(REPORT_TYPES).map((x) => createScannerOption(DEFAULT_SCANNER, x)), options: Object.keys(REPORT_TYPES).map((x) => createScannerOption(DEFAULT_SCANNER, x)),
allOption: BASE_FILTERS.report_type, allOption: BASE_FILTERS.report_type,
defaultOptions: [], defaultOptions: [],
......
...@@ -6,7 +6,6 @@ module Groups ...@@ -6,7 +6,6 @@ module Groups
layout 'group' layout 'group'
before_action do before_action do
push_frontend_feature_flag(:custom_security_scanners, current_user)
push_frontend_feature_flag(:vulnerability_management_survey, type: :ops, default_enabled: :yaml) push_frontend_feature_flag(:vulnerability_management_survey, type: :ops, default_enabled: :yaml)
end end
......
...@@ -7,7 +7,6 @@ module Projects ...@@ -7,7 +7,6 @@ module Projects
include SecurityDashboardsPermissions include SecurityDashboardsPermissions
before_action do before_action do
push_frontend_feature_flag(:custom_security_scanners, current_user)
push_frontend_feature_flag(:vulnerability_management_survey, type: :ops, default_enabled: :yaml) push_frontend_feature_flag(:vulnerability_management_survey, type: :ops, default_enabled: :yaml)
end end
......
...@@ -5,7 +5,6 @@ module Security ...@@ -5,7 +5,6 @@ module Security
layout 'instance_security' layout 'instance_security'
before_action do before_action do
push_frontend_feature_flag(:custom_security_scanners, current_user)
push_frontend_feature_flag(:vulnerability_management_survey, type: :ops, default_enabled: :yaml) push_frontend_feature_flag(:vulnerability_management_survey, type: :ops, default_enabled: :yaml)
end end
end end
......
---
title: Remove old scanner filter and only use new filter on vulnerability report page
merge_request: 61959
author:
type: added
---
name: custom_security_scanners
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/49710
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/299295
milestone: '13.9'
type: development
group: group::threat insights
default_enabled: false
...@@ -38,10 +38,6 @@ describe('Scanner Filter component', () => { ...@@ -38,10 +38,6 @@ describe('Scanner Filter component', () => {
const createWrapper = () => { const createWrapper = () => {
filter = cloneDeep(scannerFilter); filter = cloneDeep(scannerFilter);
filter.options = filter.options.map((option) => ({
...option,
id: `GitLab.${option.id}`,
}));
wrapper = shallowMount(ScannerFilter, { wrapper = shallowMount(ScannerFilter, {
localVue, localVue,
...@@ -51,10 +47,6 @@ describe('Scanner Filter component', () => { ...@@ -51,10 +47,6 @@ describe('Scanner Filter component', () => {
}); });
}; };
beforeEach(() => {
gon.features = { customSecurityScanners: true };
});
afterEach(() => { afterEach(() => {
wrapper.destroy(); wrapper.destroy();
// Clear out the querystring if one exists, it persists between tests. // Clear out the querystring if one exists, it persists between tests.
...@@ -113,7 +105,7 @@ describe('Scanner Filter component', () => { ...@@ -113,7 +105,7 @@ describe('Scanner Filter component', () => {
it('emits filter-changed event with expected data for selected options', async () => { it('emits filter-changed event with expected data for selected options', async () => {
const ids = ['GitLab.SAST', 'Custom.SAST']; const ids = ['GitLab.SAST', 'Custom.SAST'];
router.replace({ query: { [filter.id]: ids } }); router.replace({ query: { [scannerFilter.id]: ids } });
const selectedScanners = scanners.filter((x) => ids.includes(`${x.vendor}.${x.report_type}`)); const selectedScanners = scanners.filter((x) => ids.includes(`${x.vendor}.${x.report_type}`));
createWrapper(); createWrapper();
await wrapper.vm.$nextTick(); await wrapper.vm.$nextTick();
......
...@@ -3,7 +3,7 @@ import ActivityFilter from 'ee/security_dashboard/components/filters/activity_fi ...@@ -3,7 +3,7 @@ import ActivityFilter from 'ee/security_dashboard/components/filters/activity_fi
import ScannerFilter from 'ee/security_dashboard/components/filters/scanner_filter.vue'; import ScannerFilter from 'ee/security_dashboard/components/filters/scanner_filter.vue';
import StandardFilter from 'ee/security_dashboard/components/filters/standard_filter.vue'; import StandardFilter from 'ee/security_dashboard/components/filters/standard_filter.vue';
import Filters from 'ee/security_dashboard/components/first_class_vulnerability_filters.vue'; import Filters from 'ee/security_dashboard/components/first_class_vulnerability_filters.vue';
import { scannerFilter, getProjectFilter } from 'ee/security_dashboard/helpers'; import { getProjectFilter } from 'ee/security_dashboard/helpers';
import { DASHBOARD_TYPES } from 'ee/security_dashboard/store/constants'; import { DASHBOARD_TYPES } from 'ee/security_dashboard/store/constants';
import { extendedWrapper } from 'helpers/vue_test_utils_helper'; import { extendedWrapper } from 'helpers/vue_test_utils_helper';
...@@ -16,8 +16,7 @@ describe('First class vulnerability filters component', () => { ...@@ -16,8 +16,7 @@ describe('First class vulnerability filters component', () => {
]; ];
const findStandardFilters = () => wrapper.findAllComponents(StandardFilter); const findStandardFilters = () => wrapper.findAllComponents(StandardFilter);
const findStandardScannerFilter = () => wrapper.findByTestId(scannerFilter.id); const findScannerFilter = () => wrapper.findComponent(ScannerFilter);
const findCustomScannerFilter = () => wrapper.findComponent(ScannerFilter);
const findActivityFilter = () => wrapper.findComponent(ActivityFilter); const findActivityFilter = () => wrapper.findComponent(ActivityFilter);
const findProjectFilter = () => wrapper.findByTestId(getProjectFilter([]).id); const findProjectFilter = () => wrapper.findByTestId(getProjectFilter([]).id);
...@@ -38,31 +37,14 @@ describe('First class vulnerability filters component', () => { ...@@ -38,31 +37,14 @@ describe('First class vulnerability filters component', () => {
wrapper = null; wrapper = null;
}); });
it.each`
flagValue | isStandardFilterShown | isCustomFilterShown
${true} | ${false} | ${true}
${false} | ${true} | ${false}
`(
`renders correct scanner filter component when customSecurityScanners feature flag is $flagValue`,
({ flagValue, isStandardFilterShown, isCustomFilterShown }) => {
wrapper = createComponent({
provide: {
glFeatures: { customSecurityScanners: flagValue },
},
});
expect(findCustomScannerFilter().exists()).toBe(isCustomFilterShown);
expect(findStandardScannerFilter().exists()).toBe(isStandardFilterShown);
},
);
describe('on render without project filter', () => { describe('on render without project filter', () => {
beforeEach(() => { beforeEach(() => {
wrapper = createComponent(); wrapper = createComponent();
}); });
it('should render the default filters', () => { it('should render the default filters', () => {
expect(findStandardFilters()).toHaveLength(3); expect(findStandardFilters()).toHaveLength(2);
expect(findScannerFilter().exists()).toBe(true);
expect(findActivityFilter().exists()).toBe(true); expect(findActivityFilter().exists()).toBe(true);
expect(findProjectFilter().exists()).toBe(false); expect(findProjectFilter().exists()).toBe(false);
}); });
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment