Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2025-05-28 12:07:26 +00:00
parent 5c2a27a69b
commit 3715ecdb64
103 changed files with 260 additions and 239 deletions

View File

@ -1 +1 @@
f32d3d9029112f6740e784a031d4b9b60f49aa48
41a9a2963eb4f08f2ba15667d005377f6127fa4d

View File

@ -1,2 +1 @@
export const isMultiDomainEnabled = () =>
gon?.dot_com === true && gon?.features?.webIdeMultiDomain === true;
export const isMultiDomainEnabled = () => gon?.dot_com === true;

View File

@ -2,7 +2,7 @@
module Admin
class OrganizationsController < ApplicationController
feature_category :cell
feature_category :organization
before_action :check_feature_flag!
before_action only: [:index] do

View File

@ -24,7 +24,6 @@ class IdeController < ApplicationController
def index
@fork_info = fork_info(project, params[:branch])
push_frontend_feature_flag(:web_ide_multi_domain, @project.group)
render layout: 'fullscreen'
end

View File

@ -145,7 +145,7 @@ class SearchController < ApplicationController
return true
end
return true if ::Feature.disabled?(:allow_anonymous_searches, type: :ops)
return true unless ::Gitlab::CurrentSettings.anonymous_searches_allowed?
false
end

View File

@ -74,6 +74,13 @@ module ApplicationSettingsHelper
def global_search_settings_checkboxes(form)
[
form.gitlab_ui_checkbox_component(
:anonymous_searches_allowed,
_("Allow unauthenticated users to use search"),
checkbox_options: {
checked: @application_setting.anonymous_searches_allowed, multiple: false
}
),
form.gitlab_ui_checkbox_component(
:global_search_block_anonymous_searches_enabled,
_("Restrict global search to authenticated users only"),

View File

@ -42,6 +42,10 @@ module WorkItems
handle_widget_quick_actions!(work_item)
end
def params_include_state_and_status_changes?
params.include?(:state_event) && widget_params.dig(:status_widget, :status)
end
private
def new_type_excludes_widget?(widget, resource_parent)

View File

@ -3,10 +3,10 @@
module Issues
class CloseService < Issues::BaseService
# Closes the supplied issue if the current user is able to do so.
def execute(issue, commit: nil, notifications: true, system_note: true, skip_authorization: false)
def execute(issue, commit: nil, notifications: true, system_note: true, skip_authorization: false, status: nil)
return issue unless can_close?(issue, skip_authorization: skip_authorization)
close_issue(issue, closed_via: commit, notifications: notifications, system_note: system_note)
close_issue(issue, closed_via: commit, notifications: notifications, system_note: system_note, status: status)
end
# Closes the supplied issue without checking if the user is authorized to
@ -14,7 +14,7 @@ module Issues
#
# The code calling this method is responsible for ensuring that a user is
# allowed to close the given issue.
def close_issue(issue, closed_via: nil, notifications: true, system_note: true)
def close_issue(issue, closed_via: nil, notifications: true, system_note: true, status: nil)
if issue.is_a?(ExternalIssue)
close_external_issue(issue, closed_via)
@ -23,7 +23,7 @@ module Issues
return issue unless handle_closing_issue!(issue, current_user)
after_close(issue, closed_via: closed_via, notifications: notifications, system_note: system_note)
after_close(issue, status, closed_via: closed_via, notifications: notifications, system_note: system_note)
end
private
@ -34,7 +34,7 @@ module Issues
end
# overriden in EE
def after_close(issue, closed_via: nil, notifications: true, system_note: true)
def after_close(issue, _status, closed_via: nil, notifications: true, system_note: true)
event_service.close_issue(issue, current_user)
create_note(issue, closed_via) if system_note
@ -45,7 +45,13 @@ module Issues
closed_via = _("commit %{commit_id}") % { commit_id: closed_via.id } if closed_via.is_a?(Commit)
notification_service.async.close_issue(issue, current_user, { closed_via: closed_via }) if notifications
if notifications
user = current_user
issue.run_after_commit_or_now do
NotificationService.new.async.close_issue(issue, user, { closed_via: closed_via })
end
end
todo_service.close_issue(issue, current_user)
perform_incident_management_actions(issue)
execute_hooks(issue, 'close')

View File

@ -11,8 +11,8 @@ module Issues
create_issue_duplicate_note(duplicate_issue, canonical_issue)
create_issue_canonical_note(canonical_issue, duplicate_issue)
close_service.new(container: container, current_user: current_user).execute(duplicate_issue)
duplicate_issue.update(duplicated_to: canonical_issue)
close_service.new(container: container, current_user: current_user).execute(duplicate_issue)
relate_two_issues(duplicate_issue, canonical_issue)
end

View File

@ -2,10 +2,10 @@
module Issues
class ReopenService < Issues::BaseService
def execute(issue, skip_authorization: false)
def execute(issue, skip_authorization: false, status: nil)
return issue unless can_reopen?(issue, skip_authorization: skip_authorization)
after_reopen(issue) if reopen_issue(issue)
after_reopen(issue, status) if reopen_issue(issue)
issue
end
@ -13,7 +13,7 @@ module Issues
private
# overriden in EE
def after_reopen(issue)
def after_reopen(issue, _status)
event_service.reopen_issue(issue, current_user)
if current_user.project_bot?
@ -22,7 +22,8 @@ module Issues
end
create_note(issue, 'reopened')
notification_service.async.reopen_issue(issue, current_user)
user = current_user
issue.run_after_commit_or_now { NotificationService.new.async.reopen_issue(issue, user) }
perform_incident_management_actions(issue)
execute_hooks(issue, 'reopen')
invalidate_cache_counts(issue, users: issue.assignees)

View File

@ -24,11 +24,6 @@ module Namespaces
# rubocop: disable CodeReuse/ActiveRecord -- Batching over groups.
def perform
# rubocop: disable Gitlab/FeatureFlagWithoutActor -- This is a global worker.
return if Feature.disabled?(:periodical_namespace_descendants_cache_worker)
# rubocop: enable Gitlab/FeatureFlagWithoutActor
limiter = Gitlab::Metrics::RuntimeLimiter.new(MAX_RUNTIME)
ids_to_cache = Set.new
last_id = get_last_id

View File

@ -1,9 +0,0 @@
---
name: periodical_namespace_descendants_cache_worker
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/509554
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/176648
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/510967
milestone: '17.8'
group: group::optimize
type: beta
default_enabled: true

View File

@ -1,9 +0,0 @@
---
name: web_ide_multi_domain
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/520263
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/185623
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/526529
milestone: '17.11'
group: group::remote development
type: gitlab_com_derisk
default_enabled: false

View File

@ -192,6 +192,7 @@ class Gitlab::Seeder::Users
end
Gitlab::Seeder.quiet do
users = Gitlab::Seeder::Users.new(organization: Organizations::Organization.default_organization)
organization = User.admins.first.organizations.first
users = Gitlab::Seeder::Users.new(organization: organization)
users.seed!
end

View File

@ -251,6 +251,7 @@ class Gitlab::Seeder::Projects
end
Gitlab::Seeder.quiet do
projects = Gitlab::Seeder::Projects.new(organization: Organizations::Organization.default_organization)
organization = User.admins.first.organizations.first
projects = Gitlab::Seeder::Projects.new(organization: organization)
projects.seed!
end

View File

@ -33,7 +33,7 @@ Gitlab::Seeder.quiet do
title: FFaker::Lorem.sentence(3),
file_name: 'file.rb',
visibility_level: Gitlab::VisibilityLevel.values.sample,
organization: Organizations::Organization.default_organization,
organization: User.admins.first.organizations.first,
content: 'foo'
}).tap do |snippet|
snippet.repository.expire_exists_cache

View File

@ -231,7 +231,7 @@ class Gitlab::Seeder::CycleAnalytics # rubocop:disable Style/ClassAndModuleChild
confirmed_at: DateTime.now,
password: ::User.random_password
) do |user|
user.assign_personal_namespace(Organizations::Organization.default_organization)
user.assign_personal_namespace(project.organization)
end
project.group&.add_developer(user)
@ -252,6 +252,7 @@ class Gitlab::Seeder::CycleAnalytics # rubocop:disable Style/ClassAndModuleChild
name: "Value Stream Management Group #{suffix}",
path: "vsmg-#{suffix}"
)
project = FactoryBot.create(
:project,
:repository,
@ -260,7 +261,6 @@ class Gitlab::Seeder::CycleAnalytics # rubocop:disable Style/ClassAndModuleChild
creator: admin,
namespace: namespace
)
project.create_repository
project
end

View File

@ -4,6 +4,8 @@ module Db
class AbuseReport
def self.seed
Gitlab::Seeder.quiet do
organization = User.admins.first.organizations.first
(::AbuseReport.default_per_page + 3).times do |i|
username = "#{::Gitlab::Seeder::REPORTED_USER_START}#{::Gitlab::Faker::Internet.unique_username}"
reported_user =
@ -14,7 +16,7 @@ module Db
confirmed_at: DateTime.now,
password: ::User.random_password
) do |user|
user.assign_personal_namespace(Organizations::Organization.default_organization)
user.assign_personal_namespace(organization)
end
label_title = "abuse_report_label_#{FactoryBot.generate(:label_title)}"

View File

@ -25,7 +25,7 @@ Sidekiq::Testing.inline! do
full_path, _, project_path = full_path.rpartition('/')
group = Sidekiq::Worker.skipping_transaction_check do
Group.find_by_full_path(full_path) || Groups::NestedCreateService.new(
user, group_path: full_path, organization_id: Organizations::Organization.default_organization.id
user, group_path: full_path, organization_id: user.organizations.first.id
).execute
end

View File

@ -14,7 +14,7 @@ Gitlab::Seeder.quiet do
user.personal_access_tokens.build(params).tap do |pat|
pat.expires_at = 365.days.from_now
pat.set_token(token)
pat.organization = Organizations::Organization.default_organization
pat.organization = user.organizations.first
pat.save!
end
end

View File

@ -101,7 +101,9 @@ Gitlab::Seeder.quiet do
Sidekiq::Testing.inline! do
COMPOSER_PACKAGES.each do |path, versions|
project = Gitlab::Seeder::ComposerPackages.new(organization: Organizations::Organization.default_organization)
organization = User.admins.first.organizations.first
project = Gitlab::Seeder::ComposerPackages.new(organization: organization)
project.create_real_project!(path)
versions.each do |version|

View File

@ -170,7 +170,7 @@ class Gitlab::Seeder::TriageOps
password: SecureRandom.hex.slice(0, 16),
user_type: :project_bot
) do |user|
user.assign_personal_namespace(Organizations::Organization.default_organization)
user.assign_personal_namespace(@organization)
end
end
@ -220,7 +220,7 @@ class Gitlab::Seeder::TriageOps
name: group_path.titleize,
path: group_path,
parent: parent,
organization_id: organization.id
organization_id: @organization.id
)
group.description = FFaker::Lorem.sentence
group.save!
@ -247,7 +247,8 @@ class Gitlab::Seeder::TriageOps
path: project_path,
description: FFaker::Lorem.sentence,
visibility_level: Gitlab::VisibilityLevel::PRIVATE,
skip_disk_validation: true
skip_disk_validation: true,
organization_id: @organization.id
}
project = ::Projects::CreateService.new(User.first, params).execute
@ -260,7 +261,9 @@ end
if ENV['SEED_TRIAGE_OPS']
Gitlab::Seeder.quiet do
seeder = Gitlab::Seeder::TriageOps.new(organization: Organizations::Organization.default_organization)
organization = User.admins.first.organizations.first
seeder = Gitlab::Seeder::TriageOps.new(organization: organization)
seeder.seed!
end
else

View File

@ -59,7 +59,9 @@ class Gitlab::Seeder::Timelogs
end
def self.find_or_create_reporter_user(username, password)
organization = User.admins.first.organizations.first
user = User.find_by_username(username)
if user.nil?
print "\nCreating user '#{username}' with password: '#{password}'"
@ -70,7 +72,7 @@ class Gitlab::Seeder::Timelogs
confirmed_at: DateTime.now,
password: password
) do |user|
user.assign_personal_namespace(Organizations::Organization.default_organization)
user.assign_personal_namespace(organization)
end
end

View File

@ -28,7 +28,7 @@ reasons are:
removes these.
- Artifact files might be left on disk and not deleted by housekeeping. Run the
[Rake task for _orphaned_ artifact files](../raketasks/cleanup.md#remove-orphan-artifact-files)
to remove these. This script should always find work to do because it also removes empty directories (see above).
to remove these. This script should always find work to do because it also removes empty directories (see the previous reason).
- [Artifact housekeeping was changed significantly](#housekeeping-disabled-in-gitlab-150-to-152), and you might need to enable a feature flag to use the updated system.
- The [keep latest artifacts from most recent success jobs](../../ci/jobs/job_artifacts.md#keep-artifacts-from-most-recent-successful-jobs)
feature is enabled.
@ -149,7 +149,7 @@ for more details.
#### Clean up `unknown` artifacts
The Sidekiq worker that processes all `unknown` artifacts is enabled by default in
GitLab 15.3 and later. It analyzes the artifacts returned by the above database query and
GitLab 15.3 and later. It analyzes the artifacts returned by the previous database query and
determines which should be `locked` or `unlocked`. Artifacts are then deleted
by that worker if needed.
@ -638,7 +638,7 @@ WARNING: Uploading artifacts as "archive" to coordinator... POST https://gitlab.
FATAL: invalid argument
```
If a job artifact fails to upload with the above error when using consolidated object storage, make sure you are [using separate buckets](../object_storage.md#use-separate-buckets) for each data type.
If a job artifact fails to upload due to the previous error when using consolidated object storage, make sure you are [using separate buckets](../object_storage.md#use-separate-buckets) for each data type.
## Job artifacts fail to upload with `FATAL: invalid argument` when using Windows mount

View File

@ -250,7 +250,7 @@ The incremental logging process uses Redis as temporary storage and follows this
1. The runner sends a piece of log to GitLab.
1. GitLab appends the data to Redis in the `Gitlab::Redis::TraceChunks` namespace.
1. After the data in Redis reaches 128 KB, the data is flushed to a persistent store.
1. The above steps repeat until the job is finished.
1. The previous steps repeat until the job is finished.
1. After the job is finished, GitLab schedules a Sidekiq worker to archive the log.
1. The Sidekiq worker archives the log to object storage and cleans up temporary data.

View File

@ -56,7 +56,7 @@ To add a SAML provider for your GitLab Dedicated instance:
- **Security**
1. To start using this provider, select the **Enable this provider** checkbox.
1. Select **Save**.
1. To add another SAML provider, select **Add SAML provider** again and follow the steps above. You can add up to ten providers.
1. To add another SAML provider, select **Add SAML provider** again and follow the previous steps. You can add up to ten providers.
1. Scroll up to the top of the page. The **Initiated changes** banner explains that your SAML configuration changes are applied during the next maintenance window. To apply the changes immediately, select **Apply changes now**.
After the changes are applied, you can sign in to your GitLab Dedicated instance using this SAML provider. To use group sync, [configure the SAML group links](../../../user/group/saml_sso/group_sync.md#configure-saml-group-links).

View File

@ -109,7 +109,7 @@ GitLab Pages requires a separate virtual IP address. Configure DNS to point the
Some organizations have policies against opening SSH port 22. In this case,
it may be helpful to configure an alternate SSH hostname that allows users
to use SSH on port 443. An alternate SSH hostname requires a new virtual IP address
compared to the other GitLab HTTP configuration above.
compared to the other GitLab HTTP configuration documented previously.
Configure DNS for an alternate SSH hostname such as `altssh.gitlab.example.com`.

View File

@ -619,7 +619,7 @@ processing them, such as before being enqueued.
This log file follows the same structure as
[`sidekiq.log`](#sidekiqlog), so it is structured as JSON if
you've configured this for Sidekiq as mentioned above.
you've configured this for Sidekiq as mentioned previously.
## `gitlab-shell.log`
@ -863,7 +863,8 @@ This file is located at:
- `/home/git/gitlab/log/mail_room_json.log` on self-compiled installations.
This structured log file records internal activity in the `mail_room` gem.
Its name and path are configurable, so the name and path may not match the above.
Its name and path are configurable, so the name and path may not match this one
documented previously.
## `web_hooks.log`

View File

@ -189,7 +189,7 @@ The response contains the data from the API endpoint, and a `correlation_id` val
You can then view the database details for this request:
1. Paste the `x-request-id` value into the `request details` field of the [performance bar](../monitoring/performance/performance_bar.md) and press <kbd>Enter/Return</kbd>. This example uses the `x-request-id` value `01FGN8P881GF2E5J91JYA338Y3`, returned by the above response:
1. Paste the `x-request-id` value into the `request details` field of the [performance bar](../monitoring/performance/performance_bar.md) and press <kbd>Enter/Return</kbd>. This example uses the `x-request-id` value `01FGN8P881GF2E5J91JYA338Y3`, returned by the previous response:
![The request details field of the performance bar containing an example value](img/paste-request-id-into-progress-bar_v14_3.png)

View File

@ -89,7 +89,7 @@ If Geo is enabled, Git pushes to both primary and secondaries fail.
### Merge requests, issues, epics
All write actions except those mentioned above fail. For example, a user cannot update merge requests or issues.
All write actions except those mentioned previously fail. For example, a user cannot update merge requests or issues.
### Incoming email

View File

@ -39,7 +39,7 @@ GitLab displays your link in the **Admin** area under **Monitoring > Metrics Das
## Required Scopes
When setting up Grafana through the process above, no scope shows in the screen in
When setting up Grafana through the previous process, no scope shows in the screen in
the **Admin** area under **Applications > GitLab Grafana**. However, the `read_user` scope is
required and is provided to the application automatically. Setting any scope other than
`read_user` without also including `read_user` leads to this error when you try to sign in using

View File

@ -93,7 +93,7 @@ To serve metrics via HTTPS instead of HTTP, enable TLS in the exporter settings:
1. Save the file and [reconfigure GitLab](../../restart_gitlab.md#reconfigure-a-linux-package-installation)
for the changes to take effect.
When TLS is enabled, the same `port` and `address` is used as described above.
When TLS is enabled, the same `port` and `address` is used as described previously.
The metrics server cannot serve both HTTP and HTTPS at the same time.
## Troubleshooting

View File

@ -139,7 +139,7 @@ For an example, see how to [use the consolidated form and Amazon S3](#full-examp
#### Disable object storage for specific features
As seen above, object storage can be disabled for specific types by
As seen previously, object storage can be disabled for specific types by
setting the `enabled` flag to `false`. For example, to disable object
storage for CI artifacts:

View File

@ -1689,7 +1689,7 @@ flowchart LR
linkStyle 2 stroke-width:4px,stroke:green
```
The flow described by the diagram above:
The flow described by the previous diagram:
1. A user runs `docker login registry.gitlab.example` on their client. This reaches the web server (or LB) on port 443.
1. Web server connects to the Registry backend pool (by default, using port 5000). Because the user

View File

@ -740,7 +740,7 @@ which can happen if you:
- Attempted the [one step import](#one-step-import) and encountered errors.
- Attempted the [three-step import](#three-step-import) process and encountered errors.
- Stopped the import process on purpose.
- Tried to run the import again after any of the above.
- Tried to run the import again after any of the previous actions.
- Ran the import against the wrong configuration file.
To resolve this issue, you must delete the existing entries in the tags table.

View File

@ -52,7 +52,7 @@ Error response from daemon: Get registry.example.com/v1/users/: x509: certificat
```
The Docker daemon running the command expects a cert signed by a recognized CA,
thus the error above.
thus the previous error.
While GitLab doesn't support using self-signed certificates with Container
Registry out of the box, it is possible to make it work by
@ -583,7 +583,7 @@ docker login example.s3.amazonaws.com:5050
docker push example.s3.amazonaws.com:5050/root/docker-test/docker-image
```
In the example above, we see the following trace on the mitmproxy window:
In the previous example, we see the following trace on the mitmproxy window:
```plaintext
PUT https://example.s3.amazonaws.com:4567/v2/root/docker-test/blobs/uploads/(UUID)/(QUERYSTRING)

View File

@ -1176,7 +1176,7 @@ It's possible to run GitLab Pages on multiple servers if you wish to distribute
the load. You can do this through standard load balancing practices such as
configuring your DNS server to return multiple IPs for your Pages server, or
configuring a load balancer to work at the IP level. If you wish to
set up GitLab Pages on multiple servers, perform the above procedure for each
set up GitLab Pages on multiple servers, perform the previous procedure for each
Pages server.
## Domain source configuration

View File

@ -236,7 +236,7 @@ outside world.
1. Edit `/etc/default/gitlab` and set `gitlab_pages_enabled` to `true` in
order to enable the pages daemon. In `gitlab_pages_options` the
`-pages-domain` must match the `host` setting that you set above.
`-pages-domain` must match the `host` value that you set previously.
The `-root-cert` and `-root-key` settings are the wildcard TLS certificates
of the `example.io` domain:

View File

@ -426,8 +426,8 @@ To reset broken tokens:
## Troubleshooting
The following are solutions to problems you might discover using the Rake tasks documented
above.
The following are solutions to problems you might discover using the Rake tasks
documented previously.
### Dangling objects

View File

@ -174,4 +174,4 @@ to apply to their experimental and beta features:
a different direction would provide more value or a better user experience. If open questions must be answered
to decide if the feature is worth putting in the product, list and answer those.
For the exit criteria of **AI features**, in addition to the above, see the UX maturity requirements.
For the exit criteria of **AI features**, in addition to the list documented previously, see the UX maturity requirements.

View File

@ -26,7 +26,8 @@ You are more than welcome to [request a free trial](https://about.gitlab.com/fre
## Add a feature to the program
Create a merge request and add your feature to the [table above](#features-included-in-the-gitlab-early-access-program). Assign `@nick_vh` and `@knockfog-ext` as reviewers. In addition, post a message in the `#developer-relations-early-access-program` Slack channel for details.
Create a merge request and add your feature to the [previous table](#features-included-in-the-gitlab-early-access-program).
Assign `@nick_vh` and `@knockfog-ext` as reviewers. In addition, post a message in the `#developer-relations-early-access-program` Slack channel for details.
<!--
## Features previously enrolled

View File

@ -111,16 +111,16 @@ release, depending on the severity of the bug.
The decision on whether backporting a change is performed is done at the discretion of the
[current release managers](https://about.gitlab.com/community/release-managers/),
based on *all* of the following:
based on **all** of the following:
1. Estimated severity of the bug:
Highest possible impact to users based on the current definition of severity.
1. Estimated priority of the bug:
Immediate impact on all impacted users based on the above estimated severity.
Immediate impact on all impacted users based on the previous estimated severity.
1. Potentially incurring data loss and/or security breach.
1. Potentially affecting one or more strategic accounts due to a proven inability by the user to upgrade to the current stable version.
If *all* of the above are satisfied, the backport releases can be created for
If **all** the items in the previous list are satisfied, the backport releases can be created for
the current stable release, and two previous monthly releases. In rare cases a release manager may grant an exception to backport to more than two previous monthly releases.
For instance, if we release `13.2.1` with a fix for a severe bug introduced in
`13.0.0`, we could backport the fix to a new `13.0.x`, and `13.1.x` patch release.

View File

@ -67,6 +67,7 @@ For more information, see [issue 477333](https://gitlab.com/gitlab-org/gitlab/-/
- Restricting global search to authenticated users [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/41041) in GitLab 13.4 [with a flag](../../administration/feature_flags.md) named `block_anonymous_global_searches`. Disabled by default.
- Allowing search for unauthenticated users [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/138975) in GitLab 16.7 [with a flag](../../administration/feature_flags.md) named `allow_anonymous_searches`. Enabled by default.
- Restricting global search to authenticated users [generally available](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/186727) in GitLab 17.11. Feature flag `block_anonymous_global_searches` removed.
- Allowing search for unauthenticated users [generally available](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/190090) in GitLab 18.0. Feature flag `allow_anonymous_searches` removed.
{{< /history >}}
@ -78,9 +79,15 @@ By default, requests to `/search` and global search are available for unauthenti
To restrict `/search` to authenticated users only, do one of the following:
- [Restrict public visibility](../../administration/settings/visibility_and_access_controls.md#restrict-visibility-levels)
of the project or group.
- Disable the [feature flag](../../administration/feature_flags.md) `allow_anonymous_searches`.
- [Restrict visibility levels](../../administration/settings/visibility_and_access_controls.md#restrict-visibility-levels)
for the project or group.
- Restrict access in the **Admin** area:
1. On the left sidebar, at the bottom, select **Admin**.
1. Select **Settings > Search**.
1. Expand **Advanced search**.
1. Clear the **Allow unauthenticated users to use search** checkbox.
1. Select **Save changes**.
To restrict global search to authenticated users only:

View File

@ -108,12 +108,28 @@ To configure the `remote_development` module in the agent project:
For a full list of configuration options, see the workspace [configuration reference](settings.md#configuration-reference).
{{< alert type="note" >}}
The GitLab agent is configured in one project, but you can use it in other project workspaces.
A separate agent is not required for each project.
The configured agent is not visible until you
[allow the agent in your group](#allow-the-gitlab-agent-in-your-group).
{{< /alert >}}
## Allow the GitLab agent in your group
When you allow an agent in a group, the group and its subgroups can use that agent.
Carefully consider the group where you allow the GitLab agent.
When you allow an agent in a group, the group, its subgroups, and all projects in those groups can
use that agent.
To allow your GitLab agent in a group and its subgroups:
{{< alert type="note" >}}
Only one agent is required. You can create workspaces from all projects in a group with the same agent.
{{< /alert >}}
To allow your GitLab agent in a group and make it available to all projects in that group:
1. On the left sidebar, select **Search or go to** and find your group.
1. Select **Settings > Workspaces**.

View File

@ -5,7 +5,7 @@ module Gitlab
class BackfillDefaultOrganizationOwnersAgain < BatchedMigrationJob
operation_name :backfill_default_organization_owners_again # This is used as the key on collecting metrics
scope_to ->(relation) { relation.where(admin: true) }
feature_category :cell
feature_category :organization
module Organizations
class OrganizationUser < ApplicationRecord

View File

@ -5,7 +5,7 @@ module Gitlab
class BackfillDefaultOrganizationUsers < BatchedMigrationJob
operation_name :backfill_default_organization_users # This is used as the key on collecting metrics
scope_to ->(relation) { relation.where(admin: false) } # true handled in BackfillDefaultOrganizationOwnersAgain
feature_category :cell
feature_category :organization
DEFAULT_ACCESS_LEVEL = 10
DEFAULT_ORGANIZATION_ID = 1

View File

@ -6624,6 +6624,9 @@ msgstr ""
msgid "Allow top-level group owners to create Service accounts."
msgstr ""
msgid "Allow unauthenticated users to use search"
msgstr ""
msgid "Allow use of licensed EE features"
msgstr ""

View File

@ -252,9 +252,9 @@ RSpec.describe SearchController, feature_category: :global_search do
end
end
context 'when allow_anonymous_searches is disabled' do
context 'when anonymous_searches_allowed is disabled' do
before do
stub_feature_flags(allow_anonymous_searches: false)
stub_application_setting(anonymous_searches_allowed: false)
end
context 'for unauthenticated user' do
@ -754,7 +754,7 @@ RSpec.describe SearchController, feature_category: :global_search do
describe 'redirecting' do
using RSpec::Parameterized::TableSyntax
where(:restricted_visibility_levels, :allow_anonymous_searches, :block_anonymous_global_searches, :redirect) do
where(:restricted_visibility_levels, :anonymous_searches_allowed, :block_anonymous_global_searches, :redirect) do
[Gitlab::VisibilityLevel::PUBLIC] | true | false | true
[Gitlab::VisibilityLevel::PRIVATE] | true | false | false
nil | true | false | false
@ -766,7 +766,7 @@ RSpec.describe SearchController, feature_category: :global_search do
with_them do
before do
stub_application_setting(restricted_visibility_levels: restricted_visibility_levels)
stub_feature_flags(allow_anonymous_searches: allow_anonymous_searches)
stub_application_setting(anonymous_searches_allowed: anonymous_searches_allowed)
stub_application_setting(global_search_block_anonymous_searches_enabled: block_anonymous_global_searches)
end

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::OrganizationAssociationCounter, feature_category: :cell do
RSpec.describe Organizations::OrganizationAssociationCounter, feature_category: :organization do
let_it_be(:other_organization) { create(:organization) }
let_it_be(:organization) { create(:organization) }
let_it_be(:owner) { create(:organization_user, :owner, organization: organization) }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::OrganizationUsersFinder, feature_category: :cell do
RSpec.describe Organizations::OrganizationUsersFinder, feature_category: :organization do
let_it_be(:organization) { create(:organization) }
let_it_be(:organization_owner) { create(:organization_owner, organization: organization) }
let_it_be(:organization_user) { create(:organization_user, organization: organization) }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::UserOrganizationsFinder, '#execute', feature_category: :cell do
RSpec.describe Organizations::UserOrganizationsFinder, '#execute', feature_category: :organization do
let_it_be(:admin) { create(:user, :admin) }
let_it_be(:another_user) { create(:user) }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::GroupsController, '(JavaScript fixtures)', type: :controller, feature_category: :cell do
RSpec.describe Organizations::GroupsController, '(JavaScript fixtures)', type: :controller, feature_category: :organization do
include JavaScriptFixturesHelpers
let_it_be(:current_user) { create(:user) }
@ -27,7 +27,7 @@ RSpec.describe Organizations::GroupsController, '(JavaScript fixtures)', type: :
end
end
RSpec.describe 'Organizations (GraphQL fixtures)', feature_category: :cell do
RSpec.describe 'Organizations (GraphQL fixtures)', feature_category: :organization do
describe GraphQL::Query, type: :request do
include GraphqlHelpers
include JavaScriptFixturesHelpers

View File

@ -13,22 +13,14 @@ describe('isMultiDomainEnabled', () => {
});
it.each`
dot_com | features | expected
${true} | ${true} | ${true}
${true} | ${false} | ${false}
${false} | ${true} | ${false}
${false} | ${false} | ${false}
`(
'returns $expected when gon.dot_com is $dot_com and gon.features.webIdeMultiDomain is $features',
({ dot_com, features, expected }) => {
window.gon = {
dot_com,
features: {
webIdeMultiDomain: features,
},
};
dot_com | expected
${true} | ${true}
${false} | ${false}
`('returns $expected when gon.dot_com is $dot_com', ({ dot_com, expected }) => {
window.gon = {
dot_com,
};
expect(isMultiDomainEnabled()).toBe(expected);
},
);
expect(isMultiDomainEnabled()).toBe(expected);
});
});

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe GitlabSchema.types['Organization'], feature_category: :cell do
RSpec.describe GitlabSchema.types['Organization'], feature_category: :organization do
let_it_be(:expected_fields) do
%w[avatar_url description description_html groups id name organization_users path projects web_url]
end

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Types::Organizations::OrganizationUserAccessLevelEnum, feature_category: :cell do
RSpec.describe Types::Organizations::OrganizationUserAccessLevelEnum, feature_category: :organization do
specify { expect(described_class.graphql_name).to eq('OrganizationUserAccessLevel') }
it 'exposes all the existing access levels' do

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe GitlabSchema.types['OrganizationUserAccess'], feature_category: :cell do
RSpec.describe GitlabSchema.types['OrganizationUserAccess'], feature_category: :organization do
specify { expect(described_class.graphql_name).to eq('OrganizationUserAccess') }
specify { expect(described_class).to require_graphql_authorizations(nil) }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe GitlabSchema.types['OrganizationUserBadge'], feature_category: :cell do
RSpec.describe GitlabSchema.types['OrganizationUserBadge'], feature_category: :organization do
let(:expected_fields) { %w[text variant] }
specify { expect(described_class.graphql_name).to eq('OrganizationUserBadge') }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe GitlabSchema.types['OrganizationUser'], feature_category: :cell do
RSpec.describe GitlabSchema.types['OrganizationUser'], feature_category: :organization do
let(:expected_fields) { %w[access_level badges id is_last_owner user user_permissions] }
specify { expect(described_class.graphql_name).to eq('OrganizationUser') }

View File

@ -402,11 +402,12 @@ RSpec.describe ApplicationSettingsHelper, feature_category: :shared do
it 'returns correctly checked checkboxes' do
helper.gitlab_ui_form_for(application_setting, url: search_admin_application_settings_path) do |form|
result = helper.global_search_settings_checkboxes(form)
expect(result[0]).to have_checked_field('Restrict global search to authenticated users only', with: 1)
expect(result[1]).to have_checked_field('Show issues in global search results', with: 1)
expect(result[2]).not_to have_checked_field('Show merge requests in global search results', with: 1)
expect(result[3]).to have_checked_field('Show snippets in global search results', with: 1)
expect(result[4]).not_to have_checked_field('Show users in global search results', with: 1)
expect(result[0]).to have_checked_field('Allow unauthenticated users to use search', with: 1)
expect(result[1]).to have_checked_field('Restrict global search to authenticated users only', with: 1)
expect(result[2]).to have_checked_field('Show issues in global search results', with: 1)
expect(result[3]).not_to have_checked_field('Show merge requests in global search results', with: 1)
expect(result[4]).to have_checked_field('Show snippets in global search results', with: 1)
expect(result[5]).not_to have_checked_field('Show users in global search results', with: 1)
end
end
end

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::OrganizationHelper, feature_category: :cell do
RSpec.describe Organizations::OrganizationHelper, feature_category: :organization do
include Devise::Test::ControllerHelpers
let_it_be(:user) { build_stubbed(:user, organization_groups_projects_sort: 'name_asc') }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe API::Entities::Organizations::Organization, feature_category: :cell do
RSpec.describe API::Entities::Organizations::Organization, feature_category: :organization do
let(:avatar_url) { 'https://example.com/uploads/-/system/organizations/organization_detail/avatar/1/avatar.png' }
let(:organization) { build_stubbed(:organization) }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Gitlab::BackgroundMigration::BackfillDefaultOrganizationOwnersAgain, schema: 20231220225325, feature_category: :cell do
RSpec.describe Gitlab::BackgroundMigration::BackfillDefaultOrganizationOwnersAgain, schema: 20231220225325, feature_category: :organization do
let(:organization_users) { table(:organization_users) }
let(:users) { table(:users) }

View File

@ -4,7 +4,7 @@ require 'spec_helper'
RSpec.describe Gitlab::BackgroundMigration::BackfillDefaultOrganizationUsers,
schema: 20240213210124,
feature_category: :cell do
feature_category: :organization do
let(:organization_users) { table(:organization_users) }
let(:users) { table(:users) }

View File

@ -2,11 +2,11 @@
require 'spec_helper'
RSpec.describe Gitlab::BackgroundMigration::BackfillDesiredShardingKeyJob, migration: :gitlab_ci, feature_category: :cell do
RSpec.describe Gitlab::BackgroundMigration::BackfillDesiredShardingKeyJob, migration: :gitlab_ci, feature_category: :organization do
let(:example_job_class) do
Class.new(described_class) do
operation_name :backfill_test_batch_table_project_id
feature_category :cell
feature_category :organization
end
end

View File

@ -2,11 +2,11 @@
require 'spec_helper'
RSpec.describe Gitlab::BackgroundMigration::BackfillDesiredShardingKeyPartitionJob, migration: :gitlab_ci, feature_category: :cell do
RSpec.describe Gitlab::BackgroundMigration::BackfillDesiredShardingKeyPartitionJob, migration: :gitlab_ci, feature_category: :organization do
let(:example_job_class) do
Class.new(described_class) do
operation_name :backfill_test_batch_table_project_id
feature_category :cell
feature_category :organization
end
end

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Gitlab::Current::Organization, feature_category: :cell do
RSpec.describe Gitlab::Current::Organization, feature_category: :organization do
let_it_be(:other_organization) { create(:organization) }
let_it_be(:organization) { create(:organization, name: 'Current Organization') }
let_it_be(:default_organization) { create(:organization, :default) }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe 'new tables missing sharding_key', feature_category: :cell do
RSpec.describe 'new tables missing sharding_key', feature_category: :organization do
include ShardingKeySpecHelpers
# Specific tables can be temporarily exempt from this requirement. You must add an issue link in a comment next to

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Gitlab::DatabaseImporters::DefaultOrganizationImporter, feature_category: :cell do
RSpec.describe Gitlab::DatabaseImporters::DefaultOrganizationImporter, feature_category: :organization do
describe '#create_default_organization' do
let(:default_id) { Organizations::Organization::DEFAULT_ORGANIZATION_ID }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Gitlab::Organizations::FallbackOrganizationTracker, :request_store, feature_category: :cell do
RSpec.describe Gitlab::Organizations::FallbackOrganizationTracker, :request_store, feature_category: :organization do
shared_examples 'tracker that is enabled' do
before do
described_class.enable

View File

@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
RSpec.describe QueueBackfillDefaultOrganizationUsers, feature_category: :cell do
RSpec.describe QueueBackfillDefaultOrganizationUsers, feature_category: :organization do
let!(:batched_migration) { described_class::MIGRATION }
it 'schedules a new batched migration' do

View File

@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
RSpec.describe SetDefaultOrganizationVisibilityToPublic, feature_category: :cell do
RSpec.describe SetDefaultOrganizationVisibilityToPublic, feature_category: :organization do
let(:organizations) { table(:organizations) }
let(:default_organization) do
organizations.create!(

View File

@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
RSpec.describe FixInconsistentOrganizationId, migration: :gitlab_main, feature_category: :cell do
RSpec.describe FixInconsistentOrganizationId, migration: :gitlab_main, feature_category: :organization do
let(:organization_2) { table(:organizations).create!(path: 'organization_2') }
let(:organization_3) { table(:organizations).create!(path: 'organization_3') }
let(:organization_4) { table(:organizations).create!(path: 'organization_4') }

View File

@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
RSpec.describe UpdateNamespacesOrganizationId, migration: :gitlab_main, feature_category: :cell do
RSpec.describe UpdateNamespacesOrganizationId, migration: :gitlab_main, feature_category: :organization do
let(:namespaces) { table(:namespaces) }
let!(:group_with_organization) { namespaces.create!(name: 'my_org', path: 'my-org-1', organization_id: 10) }

View File

@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
RSpec.describe UpdateImportFailuresOrganizationId, migration: :gitlab_main, feature_category: :cell do
RSpec.describe UpdateImportFailuresOrganizationId, migration: :gitlab_main, feature_category: :organization do
let(:import_failures) { table(:import_failures) }
let(:projects) { table(:projects) }
let(:organizations) { table(:organizations) }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Members::Enumerable, feature_category: :cell do
RSpec.describe Members::Enumerable, feature_category: :groups_and_projects do
using RSpec::Parameterized::TableSyntax
before_all do

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Current, feature_category: :cell do
RSpec.describe Current, feature_category: :organization do
let_it_be(:current_organization) { create(:organization) }
after do

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe GroupMember, feature_category: :cell do
RSpec.describe GroupMember, feature_category: :groups_and_projects do
describe 'default values' do
subject(:goup_member) { build(:group_member) }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::OrganizationDetail, type: :model, feature_category: :cell do
RSpec.describe Organizations::OrganizationDetail, type: :model, feature_category: :organization do
describe 'associations' do
it { is_expected.to belong_to(:organization).inverse_of(:organization_detail) }
end

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::OrganizationSetting, type: :model, feature_category: :cell do
RSpec.describe Organizations::OrganizationSetting, type: :model, feature_category: :organization do
let_it_be(:organization) { create(:organization) }
let_it_be(:organization_setting) { create(:organization_setting, organization: organization) }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::Organization, type: :model, feature_category: :cell do
RSpec.describe Organizations::Organization, type: :model, feature_category: :organization do
let_it_be_with_refind(:organization) { create(:organization) }
describe 'associations' do

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::OrganizationUserAlias, type: :model, feature_category: :cell do
RSpec.describe Organizations::OrganizationUserAlias, type: :model, feature_category: :organization do
describe 'associations' do
it { is_expected.to belong_to(:organization).inverse_of(:organization_user_aliases).required }
it { is_expected.to belong_to(:user).inverse_of(:organization_user_aliases).required }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::OrganizationUser, type: :model, feature_category: :cell do
RSpec.describe Organizations::OrganizationUser, type: :model, feature_category: :organization do
using RSpec::Parameterized::TableSyntax
describe 'associations' do

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::OrganizationPolicy, feature_category: :cell do
RSpec.describe Organizations::OrganizationPolicy, feature_category: :organization do
let_it_be_with_refind(:private_organization) { create(:organization, :private) }
let_it_be_with_refind(:organization) { private_organization }
let_it_be(:public_organization) { create(:organization, :public) }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::OrganizationUserPolicy, feature_category: :cell do
RSpec.describe Organizations::OrganizationUserPolicy, feature_category: :organization do
let_it_be(:organization) { create(:organization) }
let_it_be_with_refind(:current_user) { create :user }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Admin::OrganizationsController, type: :request, feature_category: :cell do
RSpec.describe Admin::OrganizationsController, type: :request, feature_category: :organization do
describe 'GET #index' do
subject(:gitlab_request) { get admin_organizations_path }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Mutations::Organizations::Create, feature_category: :cell do
RSpec.describe Mutations::Organizations::Create, feature_category: :organization do
include GraphqlHelpers
include WorkhorseHelpers

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Mutations::Organizations::OrganizationUsers::Update, feature_category: :cell do
RSpec.describe Mutations::Organizations::OrganizationUsers::Update, feature_category: :organization do
include GraphqlHelpers
let_it_be(:organization) { create(:organization) }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Mutations::Organizations::Update, feature_category: :cell do
RSpec.describe Mutations::Organizations::Update, feature_category: :organization do
include GraphqlHelpers
include WorkhorseHelpers

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe 'getting organization information', feature_category: :cell do
RSpec.describe 'getting organization information', feature_category: :organization do
include GraphqlHelpers
using RSpec::Parameterized::TableSyntax

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe 'getting organizations information', feature_category: :cell do
RSpec.describe 'getting organizations information', feature_category: :organization do
include GraphqlHelpers
let_it_be(:user) { create(:user) }

View File

@ -182,7 +182,7 @@ RSpec.describe Admin::GroupsController, "routing" do
end
end
RSpec.describe Admin::OrganizationsController, "routing", feature_category: :cell do
RSpec.describe Admin::OrganizationsController, "routing", feature_category: :organization do
it "to #index" do
expect(get("/admin/organizations")).to route_to('admin/organizations#index')
end

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::GroupsController, :routing, feature_category: :cell do
RSpec.describe Organizations::GroupsController, :routing, feature_category: :organization do
let_it_be(:organization) { build(:organization) }
let_it_be(:group) { build(:group, organization: organization) }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::OrganizationsController, :routing, feature_category: :cell do
RSpec.describe Organizations::OrganizationsController, :routing, feature_category: :organization do
let_it_be(:organization) { build(:organization) }
it 'routes to #show' do

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::GroupsController, :routing, feature_category: :cell do
RSpec.describe Organizations::GroupsController, :routing, feature_category: :organization do
let_it_be(:organization) { build(:organization) }
let_it_be(:project) { create(:project, organization: organization) }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::SettingsController, :routing, feature_category: :cell do
RSpec.describe Organizations::SettingsController, :routing, feature_category: :organization do
let_it_be(:organization) { build(:organization) }
it 'routes to settings#general' do

View File

@ -4,7 +4,7 @@ require 'rubocop_spec_helper'
require 'rspec-parameterized'
require_relative '../../../../rubocop/cop/gitlab/avoid_current_organization'
RSpec.describe RuboCop::Cop::Gitlab::AvoidCurrentOrganization, feature_category: :cell do
RSpec.describe RuboCop::Cop::Gitlab::AvoidCurrentOrganization, feature_category: :organization do
describe 'bad examples' do
shared_examples 'reference offense' do
it 'registers an offense' do

View File

@ -55,7 +55,7 @@ RSpec.describe Issues::CloseService, feature_category: :team_planning do
.and_return(false)
expect(service).to receive(:close_issue)
.with(external_issue, closed_via: nil, notifications: true, system_note: true)
.with(external_issue, closed_via: nil, notifications: true, system_note: true, status: nil)
service.execute(external_issue)
end
@ -65,7 +65,7 @@ RSpec.describe Issues::CloseService, feature_category: :team_planning do
.and_return(true)
expect(service).to receive(:close_issue)
.with(issue, closed_via: nil, notifications: true, system_note: true)
.with(issue, closed_via: nil, notifications: true, system_note: true, status: nil)
service.execute(issue)
end
@ -261,7 +261,7 @@ RSpec.describe Issues::CloseService, feature_category: :team_planning do
it 'verifies the number of queries' do
recorded = ActiveRecord::QueryRecorder.new { close_issue }
expected_queries = 33
expected_queries = 36
expect(recorded.count).to be <= expected_queries
expect(recorded.cached_count).to eq(0)

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::CreateService, feature_category: :cell do
RSpec.describe Organizations::CreateService, feature_category: :organization do
describe '#execute' do
let_it_be(:user) { create(:user) }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::OrganizationUsers::UpdateService, feature_category: :cell do
RSpec.describe Organizations::OrganizationUsers::UpdateService, feature_category: :organization do
describe '#execute' do
let_it_be(:organization) { create(:organization) }
let_it_be_with_reload(:organization_user) { create(:organization_user, organization: organization) }

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Organizations::UpdateService, feature_category: :cell do
RSpec.describe Organizations::UpdateService, feature_category: :organization do
describe '#execute' do
let_it_be(:user) { create(:user) }
let_it_be_with_reload(:organization) { create(:organization) }

Some files were not shown because too many files have changed in this diff Show More