Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
c343dda2a0
commit
16ed59e8b8
|
@ -27,6 +27,9 @@ export const i18n = {
|
|||
securityConfiguration: __('Security Configuration'),
|
||||
vulnerabilityManagement: s__('SecurityConfiguration|Vulnerability Management'),
|
||||
securityTraining: s__('SecurityConfiguration|Security training'),
|
||||
securityTrainingDescription: s__(
|
||||
'SecurityConfiguration|Enable security training to help your developers learn how to fix vulnerabilities. Developers can view security training from selected educational providers, relevant to the detected vulnerability.',
|
||||
),
|
||||
};
|
||||
|
||||
export default {
|
||||
|
@ -252,6 +255,11 @@ export default {
|
|||
query-param-value="vulnerability-management"
|
||||
>
|
||||
<section-layout :heading="$options.i18n.securityTraining">
|
||||
<template #description>
|
||||
<p>
|
||||
{{ $options.i18n.securityTrainingDescription }}
|
||||
</p>
|
||||
</template>
|
||||
<template #features>
|
||||
<training-provider-list />
|
||||
</template>
|
||||
|
|
|
@ -66,6 +66,7 @@ export default {
|
|||
:variant="variant"
|
||||
:category="category"
|
||||
split
|
||||
data-qa-selector="action_dropdown"
|
||||
@click="handleClick(selectedAction, $event)"
|
||||
>
|
||||
<template #button-content>
|
||||
|
@ -79,6 +80,7 @@ export default {
|
|||
:is-check-item="true"
|
||||
:is-checked="action.key === selectedAction.key"
|
||||
:secondary-text="action.secondaryText"
|
||||
:data-qa-selector="`${action.key}_menu_item`"
|
||||
:data-testid="`action_${action.key}`"
|
||||
@click="handleItemClick(action)"
|
||||
>
|
||||
|
|
|
@ -708,13 +708,19 @@ class User < ApplicationRecord
|
|||
.take(1) # at most 1 record as there is a unique constraint
|
||||
|
||||
where(
|
||||
fuzzy_arel_match(:name, query)
|
||||
.or(fuzzy_arel_match(:username, query))
|
||||
fuzzy_arel_match(:name, query, use_minimum_char_limit: user_search_minimum_char_limit)
|
||||
.or(fuzzy_arel_match(:username, query, use_minimum_char_limit: user_search_minimum_char_limit))
|
||||
.or(arel_table[:email].eq(query))
|
||||
.or(arel_table[:id].eq(matched_by_email_user_id))
|
||||
)
|
||||
end
|
||||
|
||||
# This method is overridden in JiHu.
|
||||
# https://gitlab.com/gitlab-org/gitlab/-/issues/348509
|
||||
def user_search_minimum_char_limit
|
||||
true
|
||||
end
|
||||
|
||||
def by_login(login)
|
||||
return unless login
|
||||
|
||||
|
|
|
@ -31261,6 +31261,9 @@ msgstr ""
|
|||
msgid "SecurityConfiguration|Enable Auto DevOps"
|
||||
msgstr ""
|
||||
|
||||
msgid "SecurityConfiguration|Enable security training to help your developers learn how to fix vulnerabilities. Developers can view security training from selected educational providers, relevant to the detected vulnerability."
|
||||
msgstr ""
|
||||
|
||||
msgid "SecurityConfiguration|Enabled"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -23,8 +23,26 @@ module QA
|
|||
element :delete_file_button, "button_tag 'Delete file'" # rubocop:disable QA/ElementWithPattern
|
||||
end
|
||||
|
||||
view 'app/assets/javascripts/vue_shared/components/web_ide_link.vue' do
|
||||
element :edit_button
|
||||
end
|
||||
|
||||
view 'app/assets/javascripts/vue_shared/components/actions_button.vue' do
|
||||
element :action_dropdown
|
||||
element :edit_menu_item, ':data-qa-selector="`${action.key}_menu_item`"' # rubocop:disable QA/ElementWithPattern
|
||||
end
|
||||
|
||||
def click_edit
|
||||
click_on 'Edit'
|
||||
# TODO: remove this condition and else part once ff :consolidated_edit_button is enabled by default
|
||||
if has_element?(:action_dropdown)
|
||||
within_element(:action_dropdown) do
|
||||
click_button(class: 'dropdown-toggle-split')
|
||||
click_element(:edit_menu_item)
|
||||
click_element(:edit_button)
|
||||
end
|
||||
else
|
||||
click_on 'Edit'
|
||||
end
|
||||
end
|
||||
|
||||
def click_delete
|
||||
|
|
|
@ -191,10 +191,6 @@ describe('App component', () => {
|
|||
expect(findComplianceViewHistoryLink().exists()).toBe(false);
|
||||
expect(findSecurityViewHistoryLink().exists()).toBe(false);
|
||||
});
|
||||
|
||||
it('renders TrainingProviderList component', () => {
|
||||
expect(findTrainingProviderList().exists()).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Manage via MR Error Alert', () => {
|
||||
|
@ -441,6 +437,25 @@ describe('App component', () => {
|
|||
});
|
||||
});
|
||||
|
||||
describe('Vulnerability management', () => {
|
||||
beforeEach(() => {
|
||||
createComponent({
|
||||
augmentedSecurityFeatures: securityFeaturesMock,
|
||||
augmentedComplianceFeatures: complianceFeaturesMock,
|
||||
});
|
||||
});
|
||||
|
||||
it('renders TrainingProviderList component', () => {
|
||||
expect(findTrainingProviderList().exists()).toBe(true);
|
||||
});
|
||||
|
||||
it('renders security training description', () => {
|
||||
const vulnerabilityManagementTab = wrapper.findByTestId('vulnerability-management-tab');
|
||||
|
||||
expect(vulnerabilityManagementTab.text()).toContain(i18n.securityTrainingDescription);
|
||||
});
|
||||
});
|
||||
|
||||
describe('when secureVulnerabilityTraining feature flag is disabled', () => {
|
||||
beforeEach(() => {
|
||||
createComponent({
|
||||
|
|
|
@ -2592,6 +2592,12 @@ RSpec.describe User do
|
|||
end
|
||||
end
|
||||
|
||||
describe '.user_search_minimum_char_limit' do
|
||||
it 'returns true' do
|
||||
expect(described_class.user_search_minimum_char_limit).to be(true)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.find_by_ssh_key_id' do
|
||||
let_it_be(:user) { create(:user) }
|
||||
let_it_be(:key) { create(:key, user: user) }
|
||||
|
|
Loading…
Reference in New Issue