From d5f14b5e2cef173b377917829b8a494c9975af03 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Mon, 10 May 2021 09:10:28 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- GITALY_SERVER_VERSION | 2 +- .../javascripts/boards/stores/actions.js | 29 ----- .../boards/stores/mutation_types.js | 10 -- .../javascripts/boards/stores/mutations.js | 45 -------- .../vue_shared/directives/validation.js | 10 +- app/models/concerns/issuable.rb | 2 +- app/models/merge_request.rb | 4 +- .../nav/sidebar/_project_menus.html.haml | 34 ------ app/views/shared/nav/_sidebar.html.haml | 1 + .../nav/_sidebar_hidden_menu_item.html.haml | 3 + ...54_remove_duplicate_labels_from_project.rb | 2 + .../gitlab_rails_cheat_sheet.md | 2 +- doc/api/users.md | 8 +- doc/development/changelog.md | 4 +- doc/development/feature_flags/index.md | 26 +++-- .../application_security/api_fuzzing/index.md | 5 +- .../security_center_dashboard_link_v12_4.png | Bin 7921 -> 0 bytes .../img/security_center_settings_v13_4.png | Bin 30034 -> 69604 bytes .../security_dashboard/index.md | 6 +- lib/sidebars/projects/menus/hidden_menu.rb | 95 ++++++++++++++++ lib/sidebars/projects/panel.rb | 6 +- locale/gitlab.pot | 3 - spec/frontend/boards/stores/actions_spec.js | 30 ------ spec/frontend/boards/stores/mutations_spec.js | 46 -------- .../vue_shared/directives/validation_spec.js | 74 ++++++++++--- .../projects/menus/hidden_menu_spec.rb | 102 ++++++++++++++++++ .../nav/sidebar/_project.html.haml_spec.rb | 38 +++++++ 27 files changed, 349 insertions(+), 238 deletions(-) delete mode 100644 app/views/layouts/nav/sidebar/_project_menus.html.haml create mode 100644 app/views/shared/nav/_sidebar_hidden_menu_item.html.haml delete mode 100644 doc/user/application_security/security_dashboard/img/security_center_dashboard_link_v12_4.png create mode 100644 lib/sidebars/projects/menus/hidden_menu.rb create mode 100644 spec/lib/sidebars/projects/menus/hidden_menu_spec.rb diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index ea8d3d5236d..f2f3c67b121 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -6941c499e077fe2303dd5c31a08807d14ad7a616 +529ef59e73a21d1abc54833c4edbe92cbcc9fb64 diff --git a/app/assets/javascripts/boards/stores/actions.js b/app/assets/javascripts/boards/stores/actions.js index 19285a1dc85..5158e82c320 100644 --- a/app/assets/javascripts/boards/stores/actions.js +++ b/app/assets/javascripts/boards/stores/actions.js @@ -40,11 +40,6 @@ import issueSetMilestoneMutation from '../graphql/issue_set_milestone.mutation.g import listsIssuesQuery from '../graphql/lists_issues.query.graphql'; import * as types from './mutation_types'; -const notImplemented = () => { - /* eslint-disable-next-line @gitlab/require-i18n-strings */ - throw new Error('Not implemented!'); -}; - export const gqlClient = createGqClient( {}, { @@ -737,28 +732,4 @@ export default { unsetError: ({ commit }) => { commit(types.SET_ERROR, undefined); }, - - fetchBacklog: () => { - notImplemented(); - }, - - bulkUpdateIssues: () => { - notImplemented(); - }, - - fetchIssue: () => { - notImplemented(); - }, - - toggleIssueSubscription: () => { - notImplemented(); - }, - - showPage: () => { - notImplemented(); - }, - - toggleEmptyState: () => { - notImplemented(); - }, }; diff --git a/app/assets/javascripts/boards/stores/mutation_types.js b/app/assets/javascripts/boards/stores/mutation_types.js index 22b9905ee62..ccea2917c2c 100644 --- a/app/assets/javascripts/boards/stores/mutation_types.js +++ b/app/assets/javascripts/boards/stores/mutation_types.js @@ -9,9 +9,7 @@ export const GENERATE_DEFAULT_LISTS_FAILURE = 'GENERATE_DEFAULT_LISTS_FAILURE'; export const RECEIVE_BOARD_LISTS_SUCCESS = 'RECEIVE_BOARD_LISTS_SUCCESS'; export const RECEIVE_BOARD_LISTS_FAILURE = 'RECEIVE_BOARD_LISTS_FAILURE'; export const SHOW_PROMOTION_LIST = 'SHOW_PROMOTION_LIST'; -export const REQUEST_ADD_LIST = 'REQUEST_ADD_LIST'; export const RECEIVE_ADD_LIST_SUCCESS = 'RECEIVE_ADD_LIST_SUCCESS'; -export const RECEIVE_ADD_LIST_ERROR = 'RECEIVE_ADD_LIST_ERROR'; export const MOVE_LIST = 'MOVE_LIST'; export const UPDATE_LIST_FAILURE = 'UPDATE_LIST_FAILURE'; export const TOGGLE_LIST_COLLAPSED = 'TOGGLE_LIST_COLLAPSED'; @@ -20,19 +18,11 @@ export const REMOVE_LIST_FAILURE = 'REMOVE_LIST_FAILURE'; export const REQUEST_ITEMS_FOR_LIST = 'REQUEST_ITEMS_FOR_LIST'; export const RECEIVE_ITEMS_FOR_LIST_FAILURE = 'RECEIVE_ITEMS_FOR_LIST_FAILURE'; export const RECEIVE_ITEMS_FOR_LIST_SUCCESS = 'RECEIVE_ITEMS_FOR_LIST_SUCCESS'; -export const REQUEST_ADD_ISSUE = 'REQUEST_ADD_ISSUE'; -export const RECEIVE_ADD_ISSUE_SUCCESS = 'RECEIVE_ADD_ISSUE_SUCCESS'; -export const RECEIVE_ADD_ISSUE_ERROR = 'RECEIVE_ADD_ISSUE_ERROR'; export const UPDATE_BOARD_ITEM = 'UPDATE_BOARD_ITEM'; export const REMOVE_BOARD_ITEM = 'REMOVE_BOARD_ITEM'; -export const REQUEST_UPDATE_ISSUE = 'REQUEST_UPDATE_ISSUE'; export const MUTATE_ISSUE_SUCCESS = 'MUTATE_ISSUE_SUCCESS'; -export const RECEIVE_UPDATE_ISSUE_SUCCESS = 'RECEIVE_UPDATE_ISSUE_SUCCESS'; -export const RECEIVE_UPDATE_ISSUE_ERROR = 'RECEIVE_UPDATE_ISSUE_ERROR'; export const ADD_BOARD_ITEM_TO_LIST = 'ADD_BOARD_ITEM_TO_LIST'; export const REMOVE_BOARD_ITEM_FROM_LIST = 'REMOVE_BOARD_ITEM_FROM_LIST'; -export const SET_CURRENT_PAGE = 'SET_CURRENT_PAGE'; -export const TOGGLE_EMPTY_STATE = 'TOGGLE_EMPTY_STATE'; export const SET_ACTIVE_ID = 'SET_ACTIVE_ID'; export const UPDATE_BOARD_ITEM_BY_ID = 'UPDATE_BOARD_ITEM_BY_ID'; export const SET_ASSIGNEE_LOADING = 'SET_ASSIGNEE_LOADING'; diff --git a/app/assets/javascripts/boards/stores/mutations.js b/app/assets/javascripts/boards/stores/mutations.js index 4f89d7e9d1f..667628b2998 100644 --- a/app/assets/javascripts/boards/stores/mutations.js +++ b/app/assets/javascripts/boards/stores/mutations.js @@ -6,11 +6,6 @@ import { formatIssue } from '../boards_util'; import { issuableTypes } from '../constants'; import * as mutationTypes from './mutation_types'; -const notImplemented = () => { - /* eslint-disable-next-line @gitlab/require-i18n-strings */ - throw new Error('Not implemented!'); -}; - const updateListItemsCount = ({ state, listId, value }) => { const list = state.boardLists[listId]; if (state.issuableType === issuableTypes.epic) { @@ -94,18 +89,10 @@ export default { state.error = s__('Boards|An error occurred while generating lists. Please reload the page.'); }, - [mutationTypes.REQUEST_ADD_LIST]: () => { - notImplemented(); - }, - [mutationTypes.RECEIVE_ADD_LIST_SUCCESS]: (state, list) => { Vue.set(state.boardLists, list.id, list); }, - [mutationTypes.RECEIVE_ADD_LIST_ERROR]: () => { - notImplemented(); - }, - [mutationTypes.MOVE_LIST]: (state, { movedList, listAtNewIndex }) => { const { boardLists } = state; Vue.set(boardLists, movedList.id, movedList); @@ -172,35 +159,11 @@ export default { state.isSettingAssignees = isLoading; }, - [mutationTypes.REQUEST_ADD_ISSUE]: () => { - notImplemented(); - }, - - [mutationTypes.RECEIVE_ADD_ISSUE_SUCCESS]: () => { - notImplemented(); - }, - - [mutationTypes.RECEIVE_ADD_ISSUE_ERROR]: () => { - notImplemented(); - }, - [mutationTypes.MUTATE_ISSUE_SUCCESS]: (state, { issue }) => { const issueId = getIdFromGraphQLId(issue.id); Vue.set(state.boardItems, issueId, formatIssue({ ...issue, id: issueId })); }, - [mutationTypes.REQUEST_UPDATE_ISSUE]: () => { - notImplemented(); - }, - - [mutationTypes.RECEIVE_UPDATE_ISSUE_SUCCESS]: () => { - notImplemented(); - }, - - [mutationTypes.RECEIVE_UPDATE_ISSUE_ERROR]: () => { - notImplemented(); - }, - [mutationTypes.ADD_BOARD_ITEM_TO_LIST]: ( state, { itemId, listId, moveBeforeId, moveAfterId, atIndex }, @@ -220,14 +183,6 @@ export default { Vue.delete(state.boardItems, itemId); }, - [mutationTypes.SET_CURRENT_PAGE]: () => { - notImplemented(); - }, - - [mutationTypes.TOGGLE_EMPTY_STATE]: () => { - notImplemented(); - }, - [mutationTypes.REQUEST_GROUP_PROJECTS]: (state, fetchNext) => { Vue.set(state, 'groupProjectsFlags', { [fetchNext ? 'isLoadingMore' : 'isLoading']: true, diff --git a/app/assets/javascripts/vue_shared/directives/validation.js b/app/assets/javascripts/vue_shared/directives/validation.js index 176954891e9..df853a7c5b5 100644 --- a/app/assets/javascripts/vue_shared/directives/validation.js +++ b/app/assets/javascripts/vue_shared/directives/validation.js @@ -33,6 +33,10 @@ const focusFirstInvalidInput = (e) => { } }; +const getInputElement = (el) => { + return el.querySelector('input') || el; +}; + const isEveryFieldValid = (form) => Object.values(form.fields).every(({ state }) => state === true); const createValidator = (context, feedbackMap) => ({ el, reportInvalidInput = false }) => { @@ -91,8 +95,9 @@ export default function initValidation(customFeedbackMap = {}) { const elDataMap = new WeakMap(); return { - inserted(el, binding, { context }) { + inserted(element, binding, { context }) { const { arg: showGlobalValidation } = binding; + const el = getInputElement(element); const { form: formEl } = el; const validate = createValidator(context, feedbackMap); @@ -121,7 +126,8 @@ export default function initValidation(customFeedbackMap = {}) { validate({ el, reportInvalidInput: showGlobalValidation }); }, - update(el, binding) { + update(element, binding) { + const el = getInputElement(element); const { arg: showGlobalValidation } = binding; const { validate, isTouched, isBlurred } = elDataMap.get(el); const showValidationFeedback = showGlobalValidation || (isTouched && isBlurred); diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb index 1e44321e148..3c377a2bb35 100644 --- a/app/models/concerns/issuable.rb +++ b/app/models/concerns/issuable.rb @@ -103,7 +103,7 @@ module Issuable end scope :assigned_to, ->(u) do assignees_table = Arel::Table.new("#{to_ability_name}_assignees") - sql = assignees_table.project('true').where(assignees_table[:user_id].in(u)).where(Arel::Nodes::SqlLiteral.new("#{to_ability_name}_id = #{to_ability_name}s.id")) + sql = assignees_table.project('true').where(assignees_table[:user_id].in(u.id)).where(Arel::Nodes::SqlLiteral.new("#{to_ability_name}_id = #{to_ability_name}s.id")) where("EXISTS (#{sql.to_sql})") end # rubocop:enable GitlabSecurity/SqlInjection diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 3002ad27e91..b93aff063bb 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -381,7 +381,7 @@ class MergeRequest < ApplicationRecord scope :review_requested_to, ->(user) do where( reviewers_subquery - .where(Arel::Table.new("#{to_ability_name}_reviewers")[:user_id].eq(user)) + .where(Arel::Table.new("#{to_ability_name}_reviewers")[:user_id].eq(user.id)) .exists ) end @@ -389,7 +389,7 @@ class MergeRequest < ApplicationRecord scope :no_review_requested_to, ->(user) do where( reviewers_subquery - .where(Arel::Table.new("#{to_ability_name}_reviewers")[:user_id].eq(user)) + .where(Arel::Table.new("#{to_ability_name}_reviewers")[:user_id].eq(user.id)) .exists .not ) diff --git a/app/views/layouts/nav/sidebar/_project_menus.html.haml b/app/views/layouts/nav/sidebar/_project_menus.html.haml deleted file mode 100644 index 719f3a3de33..00000000000 --- a/app/views/layouts/nav/sidebar/_project_menus.html.haml +++ /dev/null @@ -1,34 +0,0 @@ --# Shortcut to Project > Activity -%li.hidden - = link_to activity_project_path(@project), title: _('Activity'), class: 'shortcuts-project-activity' do - %span - = _('Activity') - --# Shortcut to Repository > Graph (formerly, Network) -- if project_nav_tab? :network - %li.hidden - = link_to project_network_path(@project, current_ref), title: _('Network'), class: 'shortcuts-network' do - = _('Graph') - --# Shortcut to Issues > New Issue -- if project_nav_tab?(:issues) - %li.hidden - = link_to new_project_issue_path(@project), class: 'shortcuts-new-issue' do - = _('Create a new issue') - --# Shortcut to Pipelines > Jobs -- if project_nav_tab? :builds - %li.hidden - = link_to project_jobs_path(@project), title: _('Jobs'), class: 'shortcuts-builds' do - = _('Jobs') - --# Shortcut to commits page -- if project_nav_tab? :commits - %li.hidden - = link_to project_commits_path(@project), title: _('Commits'), class: 'shortcuts-commits' do - = _('Commits') - --# Shortcut to issue boards -- if project_nav_tab?(:issues) - %li.hidden - = link_to _('Issue Boards'), project_boards_path(@project), title: _('Issue Boards'), class: 'shortcuts-issue-boards' diff --git a/app/views/shared/nav/_sidebar.html.haml b/app/views/shared/nav/_sidebar.html.haml index 1c06fc9eebf..8e388f2826d 100644 --- a/app/views/shared/nav/_sidebar.html.haml +++ b/app/views/shared/nav/_sidebar.html.haml @@ -11,4 +11,5 @@ - if sidebar.render_raw_menus_partial = render sidebar.render_raw_menus_partial + = render partial: 'shared/nav/sidebar_hidden_menu_item', collection: sidebar.hidden_menu&.items = render 'shared/sidebar_toggle_button' diff --git a/app/views/shared/nav/_sidebar_hidden_menu_item.html.haml b/app/views/shared/nav/_sidebar_hidden_menu_item.html.haml new file mode 100644 index 00000000000..953f7a8ae60 --- /dev/null +++ b/app/views/shared/nav/_sidebar_hidden_menu_item.html.haml @@ -0,0 +1,3 @@ +%li.hidden + = link_to sidebar_hidden_menu_item.link, **sidebar_hidden_menu_item.container_html_options do + = sidebar_hidden_menu_item.title diff --git a/db/post_migrate/20200305082754_remove_duplicate_labels_from_project.rb b/db/post_migrate/20200305082754_remove_duplicate_labels_from_project.rb index 4bb43da43bb..f7df9f28187 100644 --- a/db/post_migrate/20200305082754_remove_duplicate_labels_from_project.rb +++ b/db/post_migrate/20200305082754_remove_duplicate_labels_from_project.rb @@ -9,6 +9,8 @@ class RemoveDuplicateLabelsFromProject < ActiveRecord::Migration[6.0] disable_ddl_transaction! class BackupLabel < Label + self.inheritance_column = :_type_disabled + self.table_name = 'backup_labels' end diff --git a/doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md b/doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md index 6b1cf2d1194..6a510900a41 100644 --- a/doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md +++ b/doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md @@ -537,7 +537,7 @@ inactive_users.each do |user| end ``` -### Find Max permissions for project/group +### Find a user's max permissions for project/group ```ruby user = User.find_by_username 'username' diff --git a/doc/api/users.md b/doc/api/users.md index 228194f10fa..ac8fbe8492f 100644 --- a/doc/api/users.md +++ b/doc/api/users.md @@ -190,7 +190,7 @@ GET /users ] ``` -Users on GitLab [Premium or higher](https://about.gitlab.com/pricing/) also see the `shared_runners_minutes_limit`, `extra_shared_runners_minutes_limit`, and `using_license_seat` parameters. +Users on GitLab [Premium or higher](https://about.gitlab.com/pricing/) also see the `shared_runners_minutes_limit`, `extra_shared_runners_minutes_limit`, `is_auditor`, and `using_license_seat` parameters. ```json [ @@ -199,6 +199,7 @@ Users on GitLab [Premium or higher](https://about.gitlab.com/pricing/) also see ... "shared_runners_minutes_limit": 133, "extra_shared_runners_minutes_limit": 133, + "is_auditor": false, "using_license_seat": true ... } @@ -359,12 +360,13 @@ NOTE: The `plan` and `trial` parameters are only available on GitLab Enterprise Edition. Users on GitLab [Premium or higher](https://about.gitlab.com/pricing/) also see -the `shared_runners_minutes_limit`, and `extra_shared_runners_minutes_limit` parameters. +the `shared_runners_minutes_limit`, `is_auditor`, and `extra_shared_runners_minutes_limit` parameters. ```json { "id": 1, "username": "john_smith", + "is_auditor": false, "shared_runners_minutes_limit": 133, "extra_shared_runners_minutes_limit": 133, ... @@ -628,6 +630,8 @@ GET /user } ``` +Users on GitLab [Premium or higher](https://about.gitlab.com/pricing/) also see the `shared_runners_minutes_limit`, `extra_shared_runners_minutes_limit`, `is_auditor`, and `using_license_seat` parameters. + ## User status Get the status of the currently signed in user. diff --git a/doc/development/changelog.md b/doc/development/changelog.md index f77f918d2a1..6412c303735 100644 --- a/doc/development/changelog.md +++ b/doc/development/changelog.md @@ -52,11 +52,9 @@ the `author` field. GitLab team members **should not**. a changelog entry regardless of these guidelines if the contributor wants one. Example: "Fixed a typo on the search results page." - Any docs-only changes **should not** have a changelog entry. -- Any change behind a feature flag **disabled** by default **should not** have a changelog entry. -- Any change behind a feature flag that is **enabled** by default **should** have a changelog entry. +- For changes related to feature flags, use [feature flag guide](feature_flags/index.md#changelog) to determine the changelog entry. - Any change that adds new Usage Data metrics, sets the status of existing ones to `removed`, and changes that need to be documented in Product Intelligence [Metrics Dictionary](usage_ping/dictionary.md) **should** have a changelog entry. - A change that adds snowplow events **should** have a changelog entry - -- A change that [removes a feature flag, or removes a feature and its feature flag](feature_flags/index.md) **must** have a changelog entry. - A fix for a regression introduced and then fixed in the same release (i.e., fixing a bug introduced during a monthly release candidate) **should not** have a changelog entry. diff --git a/doc/development/feature_flags/index.md b/doc/development/feature_flags/index.md index 560e4f8cb90..e18bcaa1f4e 100644 --- a/doc/development/feature_flags/index.md +++ b/doc/development/feature_flags/index.md @@ -15,12 +15,6 @@ This document provides guidelines on how to use feature flags in the GitLab codebase to conditionally enable features and test them. -Features that are developed and merged behind a feature flag -should not include a changelog entry. A changelog entry with `type: added` should be included in the merge -request removing the feature flag or the merge request where the default value of -the feature flag is set to enabled. If the feature contains any database migrations, it -*should* include a changelog entry for the database changes. - WARNING: All newly-introduced feature flags should be [disabled by default](https://about.gitlab.com/handbook/product-development-flow/feature-flag-lifecycle/#feature-flags-in-gitlab-development). @@ -55,7 +49,7 @@ should be leveraged: a specific project and ensure that there are no issues with the implementation. 1. When the feature is ready to be announced, create a merge request that adds documentation about the feature, including [documentation for the feature flag itself](../documentation/feature_flags.md), - and a changelog entry. In the same merge request either flip the feature flag to + and a [changelog entry](#changelog). In the same merge request either flip the feature flag to be **on by default** or remove it entirely in order to enable the new behavior. One might be tempted to think that feature flags will delay the release of a @@ -461,6 +455,24 @@ as follows: Feature.remove(:feature_flag_name) ``` +## Changelog + +- Any change behind a feature flag **disabled** by default **should not** have a changelog entry. + - **Exception:** database migrations **should** have a changelog entry. +- Any change related to a feature flag itself (flag removal, default-on setting) **should** have a changelog entry. + Use the flowchart to determine the changelog entry type. + + ```mermaid + graph LR + A[flag: default off] -->|'added' / 'changed'| B(flag: default on) + B -->|'other'| C(remove flag, keep new code) + B -->|'removed' / 'changed'| D(remove flag, keep old code) + A -->|'added' / 'changed'| C + A -->|no changelog| D + ``` + +- Any change behind a feature flag that is **enabled** by default **should** have a changelog entry. + ## Feature flags in tests Introducing a feature flag into the codebase creates an additional code path that should be tested. diff --git a/doc/user/application_security/api_fuzzing/index.md b/doc/user/application_security/api_fuzzing/index.md index a1193715018..bc6ce132566 100644 --- a/doc/user/application_security/api_fuzzing/index.md +++ b/doc/user/application_security/api_fuzzing/index.md @@ -569,7 +569,10 @@ To get you started quickly, GitLab provides the configuration file [`gitlab-api-fuzzing-config.yml`](https://gitlab.com/gitlab-org/security-products/analyzers/api-fuzzing/-/blob/master/gitlab-api-fuzzing-config.yml). This file has several testing profiles that perform various numbers of tests. The run time of each profile increases as the test numbers go up. To use a configuration file, add it to your -repository's root as `.gitlab-api-fuzzing.yml`. +repository as `.gitlab/gitlab-api-fuzzing-config.yml`. + +NOTE: ++In GitLab 13.11 and earlier, the configuration file was `.gitlab-api-fuzzing.yml` in the repository's root. In GitLab 13.12 and later, it is `.gitlab/gitlab-api-fuzzing-config.yml` in the repository's root. | Profile | Fuzz Tests (per parameter) | |:---------|:-----------| diff --git a/doc/user/application_security/security_dashboard/img/security_center_dashboard_link_v12_4.png b/doc/user/application_security/security_dashboard/img/security_center_dashboard_link_v12_4.png deleted file mode 100644 index e0e80810b082e068d00a3e13a44e97b0131cad6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7921 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 diff --git a/doc/user/application_security/security_dashboard/img/security_center_settings_v13_4.png b/doc/user/application_security/security_dashboard/img/security_center_settings_v13_4.png index 4223494c2946136600eaaa9d1fae4998dd927f88..74592e2cea51b63b9e7074eacf7992862159345d 100644 GIT binary patch literal 69604 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 Ofr*RA2v-aK^8ara5{j4r diff --git a/doc/user/application_security/security_dashboard/index.md b/doc/user/application_security/security_dashboard/index.md index 6c03a6aea25..f0b3d895df5 100644 --- a/doc/user/application_security/security_dashboard/index.md +++ b/doc/user/application_security/security_dashboard/index.md @@ -150,10 +150,8 @@ the following: ![Security Center Dashboard with projects](img/security_center_dashboard_v13_4.png) -You can access the Security Center from the menu -bar at the top of the page. Under **More**, select **Security**. - -![Security Center navigation link](img/security_center_dashboard_link_v12_4.png) +To view the Security Center, from the navigation bar at the top of the page, select +**More > Security**. ### Adding projects to the Security Center diff --git a/lib/sidebars/projects/menus/hidden_menu.rb b/lib/sidebars/projects/menus/hidden_menu.rb new file mode 100644 index 00000000000..19c77c67e1a --- /dev/null +++ b/lib/sidebars/projects/menus/hidden_menu.rb @@ -0,0 +1,95 @@ +# frozen_string_literal: true + +module Sidebars + module Projects + module Menus + class HiddenMenu < ::Sidebars::Menu + override :configure_menu_items + def configure_menu_items + add_item(activity_menu_item) + add_item(graph_menu_item) + add_item(new_issue_menu_item) + add_item(jobs_menu_item) + add_item(commits_menu_item) + add_item(issue_boards_menu_item) + + true + end + + private + + def activity_menu_item + ::Sidebars::MenuItem.new( + title: _('Activity'), + link: activity_project_path(context.project), + active_routes: {}, + container_html_options: { class: 'shortcuts-project-activity' }, + item_id: :activity + ) + end + + def graph_menu_item + return unless can?(context.current_user, :download_code, context.project) + return if context.project.empty_repo? + + ::Sidebars::MenuItem.new( + title: _('Graph'), + link: project_network_path(context.project, context.current_ref), + active_routes: {}, + container_html_options: { class: 'shortcuts-network' }, + item_id: :graph + ) + end + + def new_issue_menu_item + return unless can?(context.current_user, :read_issue, context.project) + + ::Sidebars::MenuItem.new( + title: _('Create a new issue'), + link: new_project_issue_path(context.project), + active_routes: {}, + container_html_options: { class: 'shortcuts-new-issue' }, + item_id: :new_issue + ) + end + + def jobs_menu_item + return unless can?(context.current_user, :read_build, context.project) + + ::Sidebars::MenuItem.new( + title: _('Jobs'), + link: project_jobs_path(context.project), + active_routes: {}, + container_html_options: { class: 'shortcuts-builds' }, + item_id: :jobs + ) + end + + def commits_menu_item + return unless can?(context.current_user, :download_code, context.project) + return if context.project.empty_repo? + + ::Sidebars::MenuItem.new( + title: _('Commits'), + link: project_commits_path(context.project), + active_routes: {}, + container_html_options: { class: 'shortcuts-commits' }, + item_id: :commits + ) + end + + def issue_boards_menu_item + return unless can?(context.current_user, :read_issue, context.project) + + ::Sidebars::MenuItem.new( + title: _('Issue Boards'), + link: project_boards_path(context.project), + active_routes: {}, + container_html_options: { class: 'shortcuts-issue-boards' }, + item_id: :issue_boards + ) + end + end + end + end +end diff --git a/lib/sidebars/projects/panel.rb b/lib/sidebars/projects/panel.rb index dbf2977df01..7a35c224cbf 100644 --- a/lib/sidebars/projects/panel.rb +++ b/lib/sidebars/projects/panel.rb @@ -6,6 +6,7 @@ module Sidebars override :configure_menus def configure_menus set_scope_menu(Sidebars::Projects::Menus::ScopeMenu.new(context)) + set_hidden_menu(Sidebars::Projects::Menus::HiddenMenu.new(context)) add_menu(Sidebars::Projects::Menus::ProjectInformationMenu.new(context)) add_menu(Sidebars::Projects::Menus::LearnGitlabMenu.new(context)) @@ -27,11 +28,6 @@ module Sidebars add_menu(Sidebars::Projects::Menus::SettingsMenu.new(context)) end - override :render_raw_menus_partial - def render_raw_menus_partial - 'layouts/nav/sidebar/project_menus' - end - override :aria_label def aria_label _('Project navigation') diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 557cf5525b6..9b638aa1a63 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -10199,9 +10199,6 @@ msgstr "" msgid "DastProfiles|Password form field" msgstr "" -msgid "DastProfiles|Please enter a valid timeout value" -msgstr "" - msgid "DastProfiles|Profile name" msgstr "" diff --git a/spec/frontend/boards/stores/actions_spec.js b/spec/frontend/boards/stores/actions_spec.js index 34e24fe0a1c..09343b5704f 100644 --- a/spec/frontend/boards/stores/actions_spec.js +++ b/spec/frontend/boards/stores/actions_spec.js @@ -40,12 +40,6 @@ import { jest.mock('~/flash'); -const expectNotImplemented = (action) => { - it('is not implemented', () => { - expect(action).toThrow(new Error('Not implemented!')); - }); -}; - // We need this helper to make sure projectPath is including // subgroups when the movIssue action is called. const getProjectPath = (path) => path.split('#')[0]; @@ -1825,27 +1819,3 @@ describe('unsetError', () => { }); }); }); - -describe('fetchBacklog', () => { - expectNotImplemented(actions.fetchBacklog); -}); - -describe('bulkUpdateIssues', () => { - expectNotImplemented(actions.bulkUpdateIssues); -}); - -describe('fetchIssue', () => { - expectNotImplemented(actions.fetchIssue); -}); - -describe('toggleIssueSubscription', () => { - expectNotImplemented(actions.toggleIssueSubscription); -}); - -describe('showPage', () => { - expectNotImplemented(actions.showPage); -}); - -describe('toggleEmptyState', () => { - expectNotImplemented(actions.toggleEmptyState); -}); diff --git a/spec/frontend/boards/stores/mutations_spec.js b/spec/frontend/boards/stores/mutations_spec.js index af6d439e294..d89abcc79ae 100644 --- a/spec/frontend/boards/stores/mutations_spec.js +++ b/spec/frontend/boards/stores/mutations_spec.js @@ -13,12 +13,6 @@ import { mockList, } from '../mock_data'; -const expectNotImplemented = (action) => { - it('is not implemented', () => { - expect(action).toThrow(new Error('Not implemented!')); - }); -}; - describe('Board Store Mutations', () => { let state; @@ -158,10 +152,6 @@ describe('Board Store Mutations', () => { }); }); - describe('REQUEST_ADD_LIST', () => { - expectNotImplemented(mutations.REQUEST_ADD_LIST); - }); - describe('RECEIVE_ADD_LIST_SUCCESS', () => { it('adds list to boardLists state', () => { mutations.RECEIVE_ADD_LIST_SUCCESS(state, mockLists[0]); @@ -172,10 +162,6 @@ describe('Board Store Mutations', () => { }); }); - describe('RECEIVE_ADD_LIST_ERROR', () => { - expectNotImplemented(mutations.RECEIVE_ADD_LIST_ERROR); - }); - describe('MOVE_LIST', () => { it('updates boardLists state with reordered lists', () => { state = { @@ -341,10 +327,6 @@ describe('Board Store Mutations', () => { }); }); - describe('REQUEST_ADD_ISSUE', () => { - expectNotImplemented(mutations.REQUEST_ADD_ISSUE); - }); - describe('UPDATE_BOARD_ITEM_BY_ID', () => { const issueId = '1'; const prop = 'id'; @@ -386,14 +368,6 @@ describe('Board Store Mutations', () => { }); }); - describe('RECEIVE_ADD_ISSUE_SUCCESS', () => { - expectNotImplemented(mutations.RECEIVE_ADD_ISSUE_SUCCESS); - }); - - describe('RECEIVE_ADD_ISSUE_ERROR', () => { - expectNotImplemented(mutations.RECEIVE_ADD_ISSUE_ERROR); - }); - describe('MUTATE_ISSUE_SUCCESS', () => { it('updates issue in issues state', () => { const issues = { @@ -434,18 +408,6 @@ describe('Board Store Mutations', () => { }); }); - describe('REQUEST_UPDATE_ISSUE', () => { - expectNotImplemented(mutations.REQUEST_UPDATE_ISSUE); - }); - - describe('RECEIVE_UPDATE_ISSUE_SUCCESS', () => { - expectNotImplemented(mutations.RECEIVE_UPDATE_ISSUE_SUCCESS); - }); - - describe('RECEIVE_UPDATE_ISSUE_ERROR', () => { - expectNotImplemented(mutations.RECEIVE_UPDATE_ISSUE_ERROR); - }); - describe('ADD_BOARD_ITEM_TO_LIST', () => { beforeEach(() => { setBoardsListsState(); @@ -540,14 +502,6 @@ describe('Board Store Mutations', () => { }); }); - describe('SET_CURRENT_PAGE', () => { - expectNotImplemented(mutations.SET_CURRENT_PAGE); - }); - - describe('TOGGLE_EMPTY_STATE', () => { - expectNotImplemented(mutations.TOGGLE_EMPTY_STATE); - }); - describe('REQUEST_GROUP_PROJECTS', () => { it('Should set isLoading in groupProjectsFlags to true in state when fetchNext is false', () => { mutations[types.REQUEST_GROUP_PROJECTS](state, false); diff --git a/spec/frontend/vue_shared/directives/validation_spec.js b/spec/frontend/vue_shared/directives/validation_spec.js index 2764a71d204..0c84be9354f 100644 --- a/spec/frontend/vue_shared/directives/validation_spec.js +++ b/spec/frontend/vue_shared/directives/validation_spec.js @@ -4,12 +4,18 @@ import validation from '~/vue_shared/directives/validation'; describe('validation directive', () => { let wrapper; - const createComponent = ({ inputAttributes, showValidation } = {}) => { + const createComponent = ({ inputAttributes, showValidation, template } = {}) => { const defaultInputAttributes = { type: 'text', required: true, }; + const defaultTemplate = ` +
+ +
+ `; + const component = { directives: { validation: validation(), @@ -29,11 +35,7 @@ describe('validation directive', () => { }, }; }, - template: ` -
- -
- `, + template: template || defaultTemplate, }; wrapper = shallowMount(component, { attachTo: document.body }); @@ -48,6 +50,12 @@ describe('validation directive', () => { const findForm = () => wrapper.find('form'); const findInput = () => wrapper.find('input'); + const setValueAndTriggerValidation = (value) => { + const input = findInput(); + input.setValue(value); + input.trigger('blur'); + }; + describe.each([true, false])( 'with fields untouched and "showValidation" set to "%s"', (showValidation) => { @@ -78,12 +86,6 @@ describe('validation directive', () => { `( 'with input-attributes set to $inputAttributes', ({ inputAttributes, validValue, invalidValue }) => { - const setValueAndTriggerValidation = (value) => { - const input = findInput(); - input.setValue(value); - input.trigger('blur'); - }; - beforeEach(() => { createComponent({ inputAttributes }); }); @@ -129,4 +131,52 @@ describe('validation directive', () => { }); }, ); + + describe('with group elements', () => { + const template = ` +
+
+ +
+
+ `; + beforeEach(() => { + createComponent({ + template, + inputAttributes: { + required: true, + }, + }); + }); + + describe('with invalid value', () => { + beforeEach(() => { + setValueAndTriggerValidation(''); + }); + + it('should set correct field state', () => { + expect(getFormData().fields.exampleField).toEqual({ + state: false, + feedback: expect.any(String), + }); + }); + + it('should set correct feedback', () => { + expect(getFormData().fields.exampleField.feedback).toBe('Please fill out this field.'); + }); + }); + + describe('with valid value', () => { + beforeEach(() => { + setValueAndTriggerValidation('hello'); + }); + + it('set the correct state', () => { + expect(getFormData().fields.exampleField).toEqual({ + state: true, + feedback: '', + }); + }); + }); + }); }); diff --git a/spec/lib/sidebars/projects/menus/hidden_menu_spec.rb b/spec/lib/sidebars/projects/menus/hidden_menu_spec.rb new file mode 100644 index 00000000000..f7cb0adbb66 --- /dev/null +++ b/spec/lib/sidebars/projects/menus/hidden_menu_spec.rb @@ -0,0 +1,102 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Sidebars::Projects::Menus::HiddenMenu do + let_it_be(:project) { create(:project, :repository) } + + let(:user) { project.owner } + let(:context) { Sidebars::Projects::Context.new(current_user: user, container: project, current_ref: project.repository.root_ref) } + + describe '#render?' do + subject { described_class.new(context) } + + context 'when menu does not have any menu items' do + it 'returns false' do + allow(subject).to receive(:has_items?).and_return(false) + + expect(subject.render?).to be false + end + end + + context 'when menu has menu items' do + it 'returns true' do + expect(subject.render?).to be true + end + end + end + + describe 'Menu items' do + subject { described_class.new(context).items.index { |e| e.item_id == item_id } } + + shared_examples 'access rights checks' do + specify { is_expected.not_to be_nil } + + describe 'when the user does not have access' do + let(:user) { nil } + + specify { is_expected.to be_nil } + end + end + + describe 'Activity' do + let(:item_id) { :activity } + + context 'when user has access to the project' do + specify { is_expected.not_to be_nil } + + describe 'when the user is not present' do + let(:user) { nil } + + specify { is_expected.not_to be_nil } + end + end + end + + describe 'Graph' do + let(:item_id) { :graph } + + context 'when project repository is empty' do + before do + allow(project).to receive(:empty_repo?).and_return(true) + end + + specify { is_expected.to be_nil } + end + + it_behaves_like 'access rights checks' + end + + describe 'New Issue' do + let(:item_id) { :new_issue } + + it_behaves_like 'access rights checks' + end + + describe 'Jobs' do + let(:item_id) { :jobs } + + it_behaves_like 'access rights checks' + end + + describe 'Commits' do + let(:item_id) { :commits } + + context 'when project repository is empty' do + before do + allow(project).to receive(:empty_repo?).and_return(true) + end + + specify { is_expected.to be_nil } + end + + it_behaves_like 'access rights checks' + end + + describe 'Issue Boards' do + let(:item_id) { :issue_boards } + + it_behaves_like 'access rights checks' + end + end +end diff --git a/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb b/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb index 11bb81bcd40..fafd5777f93 100644 --- a/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb +++ b/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb @@ -1090,5 +1090,43 @@ RSpec.describe 'layouts/nav/sidebar/_project' do end end + describe 'Hidden menus' do + it 'has a link to the Activity page' do + render + + expect(rendered).to have_link('Activity', href: activity_project_path(project), class: 'shortcuts-project-activity', visible: false) + end + + it 'has a link to the Graph page' do + render + + expect(rendered).to have_link('Graph', href: project_network_path(project, current_ref), class: 'shortcuts-network', visible: false) + end + + it 'has a link to the New Issue page' do + render + + expect(rendered).to have_link('Create a new issue', href: new_project_issue_path(project), class: 'shortcuts-new-issue', visible: false) + end + + it 'has a link to the Jobs page' do + render + + expect(rendered).to have_link('Jobs', href: project_jobs_path(project), class: 'shortcuts-builds', visible: false) + end + + it 'has a link to the Commits page' do + render + + expect(rendered).to have_link('Commits', href: project_commits_path(project), class: 'shortcuts-commits', visible: false) + end + + it 'has a link to the Issue Boards page' do + render + + expect(rendered).to have_link('Issue Boards', href: project_boards_path(project), class: 'shortcuts-issue-boards', visible: false) + end + end + it_behaves_like 'sidebar includes snowplow attributes', 'render', 'projects_side_navigation', 'projects_side_navigation' end