rspec unit pg13 single-db 23/28
Passed Started
by
@fabiopitino
Fabio Pitino
1 .order_by_depth2 ascending3 is expected to eq [#<Group id:204 @group34/group35/group36>, #<Group id:203 @group34/group35>, #<Group id:202 @group34>]4 descending5 is expected to eq [#<Group id:202 @group34>, #<Group id:203 @group34/group35>, #<Group id:204 @group34/group35/group36>]6 .normal_select7 is expected to eq ["id", "name", "path", "owner_id", "created_at", "updated_at", "type", "description", "avatar", "memb..._enabled", "allow_descendants_override_disabled_shared_runners", "traversal_ids", "organization_id"]8 .roots9 use_traversal_ids_roots feature flag is true10 not make recursive queries11 behaves like .roots12 with only sub-groups13 is expected to contain exactly #<Group id:202 @group34> and #<Group id:205 @group37>14 with only root groups15 is expected to contain exactly #<Group id:202 @group34> and #<Group id:205 @group37>16 with all groups17 is expected to contain exactly #<Group id:202 @group34> and #<Group id:205 @group37>18 use_traversal_ids_roots feature flag is false19 makes recursive queries20 behaves like .roots21 with only sub-groups22 is expected to contain exactly #<Group id:202 @group34> and #<Group id:205 @group37>23 with only root groups24 is expected to contain exactly #<Group id:202 @group34> and #<Group id:205 @group37>25 with all groups26 is expected to contain exactly #<Group id:202 @group34> and #<Group id:205 @group37>27 .self_and_ancestors28 not make recursive queries29 behaves like .self_and_ancestors30 is expected to contain exactly #<Group id:202 @group34>, #<Group id:203 @group34/group35>, #<Group id:205 @group37>, and #<Group id:206 @group37/group38>31 when include_self is false32 is expected to contain exactly #<Group id:202 @group34> and #<Group id:205 @group37>33 when hierarchy_order is ascending34 is expected to contain exactly #<Group id:203 @group34/group35>, #<Group id:206 @group37/group38>, #<Group id:202 @group34>, and #<Group id:205 @group37>35 is expected to contain exactly #<Group id:203 @group34/group35> and #<Group id:206 @group37/group38>36 is expected to contain exactly #<Group id:202 @group34> and #<Group id:205 @group37>37 when hierarchy_order is descending38 is expected to contain exactly #<Group id:203 @group34/group35>, #<Group id:206 @group37/group38>, #<Group id:202 @group34>, and #<Group id:205 @group37>39 is expected to contain exactly #<Group id:202 @group34> and #<Group id:205 @group37>40 is expected to contain exactly #<Group id:203 @group34/group35> and #<Group id:206 @group37/group38>41 with offset and limit42 is expected to contain exactly #<Group id:205 @group37>, #<Group id:206 @group37/group38>, and #<Group id:207 @group37/group38/group39>43 with upto44 is expected to contain exactly #<Group id:204 @group34/group35/group36>45 .self_and_ancestor_ids46 not make recursive queries47 behaves like .self_and_ancestor_ids48 is expected to contain exactly 202, 203, 205, and 20649 when include_self is false50 is expected to contain exactly 202 and 20551 with offset and limit52 is expected to contain exactly 205, 206, and 20753 .self_and_descendants54 is expected to contain exactly #<Group id:203 @group34/group35>, #<Group id:204 @group34/group35/group36>, #<Group id:206 @group37/group38>, and #<Group id:207 @group37/group38/group39>55 with duplicate descendants56 is expected to contain exactly #<Group id:202 @group34>, #<Group id:203 @group34/group35>, #<Group id:204 @group34/group35/group36>, #<Group id:205 @group37>, #<Group id:206 @group37/group38>, and #<Group id:207 @group37/group38/group39>57 when include_self is false58 is expected to contain exactly #<Group id:204 @group34/group35/group36> and #<Group id:207 @group37/group38/group39>59 with duplicate descendants60 is expected to contain exactly #<Group id:203 @group34/group35> and #<Group id:204 @group34/group35/group36>61 with offset and limit62 is expected to contain exactly #<Group id:205 @group37>, #<Group id:206 @group37/group38>, and #<Group id:207 @group37/group38/group39>63 with nested query groups64 is expected to contain exactly #<Group id:202 @group34>, #<Group id:203 @group34/group35>, #<Group id:204 @group34/group35/group36>, #<Group id:241 @group34/group40>, and #<Group id:242 @group34/group40/group41>65 .self_and_descendant_ids66 is expected to contain exactly 203, 204, 206, and 20767 when include_self is false68 is expected to contain exactly 204 and 20769 with offset and limit70 is expected to contain exactly 205, 206, and 20771 .self_and_hierarchy72 behaves like .self_and_hierarchy73 with ancestors only74 is expected to contain exactly #<Group id:202 @group34>, #<Group id:203 @group34/group35>, #<Group id:204 @group34/group35/group36>, #<Group id:205 @group37>, #<Group id:206 @group37/group38>, and #<Group id:207 @group37/group38/group39>75 with descendants only76 is expected to contain exactly #<Group id:202 @group34>, #<Group id:203 @group34/group35>, #<Group id:204 @group34/group35/group36>, #<Group id:205 @group37>, #<Group id:206 @group37/group38>, and #<Group id:207 @group37/group38/group39>77 nodes with both ancestors and descendants78 is expected to contain exactly #<Group id:202 @group34>, #<Group id:203 @group34/group35>, #<Group id:204 @group34/group35/group36>, #<Group id:205 @group37>, #<Group id:206 @group37/group38>, and #<Group id:207 @group37/group38/group39>79 with duplicate base groups80 is expected to contain exactly #<Group id:202 @group34>, #<Group id:203 @group34/group35>, and #<Group id:204 @group34/group35/group36>81 use_traversal_ids_for_self_and_hierarchy_scopes feature flag is false82 makes recursive queries83 behaves like .self_and_hierarchy84 with ancestors only85 is expected to contain exactly #<Group id:202 @group34>, #<Group id:203 @group34/group35>, #<Group id:204 @group34/group35/group36>, #<Group id:205 @group37>, #<Group id:206 @group37/group38>, and #<Group id:207 @group37/group38/group39>86 with descendants only87 is expected to contain exactly #<Group id:202 @group34>, #<Group id:203 @group34/group35>, #<Group id:204 @group34/group35/group36>, #<Group id:205 @group37>, #<Group id:206 @group37/group38>, and #<Group id:207 @group37/group38/group39>88 nodes with both ancestors and descendants89 is expected to contain exactly #<Group id:202 @group34>, #<Group id:203 @group34/group35>, #<Group id:204 @group34/group35/group36>, #<Group id:205 @group37>, #<Group id:206 @group37/group38>, and #<Group id:207 @group37/group38/group39>90 with duplicate base groups91 is expected to contain exactly #<Group id:202 @group34>, #<Group id:203 @group34/group35>, and #<Group id:204 @group34/group35/group36>92 .self_and_descendants93 behaves like does not make recursive queries94 is expected not to make queries matching /WITH RECURSIVE/95 when feature flag :use_traversal_ids is disabled96 behaves like makes recursive queries97 is expected to make queries matching /WITH RECURSIVE/98 when feature flag :use_traversal_ids_for_descendants_scopes is disabled99 behaves like makes recursive queries100 is expected to make queries matching /WITH RECURSIVE/101 .self_and_descendant_ids102 behaves like does not make recursive queries103 is expected not to make queries matching /WITH RECURSIVE/104 when feature flag :use_traversal_ids is disabled105 behaves like makes recursive queries106 is expected to make queries matching /WITH RECURSIVE/107 when feature flag :use_traversal_ids_for_descendants_scopes is disabled108 behaves like makes recursive queries109 is expected to make queries matching /WITH RECURSIVE/110 traversal_ids on create111 is expected to eq [258]112 is expected to eq [260, 261]113 is expected to eq 1114 is expected to eq 1115 traversal_ids on update116 creates a Namespaces::SyncEvent using triggers117 creates sync_events using database trigger on the table118 does not create sync_events using database trigger on the table when only the parent_id has changed119 triggers the callback sync_traversal_ids on the namespace120 calls schedule_sync_event_worker on the updated namespace121 when parent_id is changed122 sets the traversal_ids attribute123 after_commit :expire_child_caches124 expires the child caches when updated125 expires on name changes126 expires on path changes127 expires on parent changes128 doesn't expire on other field changes129 #owner_required?130 is expected to be falsey131 is expected to be falsey132 is expected to be truthy133 #visibility_level_field134 is expected to eq :visibility_level135 #to_param136 is expected to eq "namespace272"137 #human_name138 is expected to eq "Sidney Jones281"139 #any_project_has_container_registry_tags?140 returns true if there is a project with container registry tags141 returns false if there is no project with container registry tags142 #first_project_with_container_registry_tags143 when Gitlab API is not supported144 returns the project145 returns no project146 does not cause N+1 query in fetching registries147 when Gitlab API is supported148 calls and returns GitlabApiClient.one_project_with_container_registry_tag149 #container_repositories_size_cache_key150 returns the correct cache key151 #container_repositories_size152 on gitlab.com153 gitlab_api_supported: nil, no_container_repositories: nil, all_migrated: nil, returned_size: nil, expected_result: nil154 is expected to eq nil155 caches the result when all migrated156 gitlab_api_supported: false, no_container_repositories: nil, all_migrated: nil, returned_size: nil, expected_result: nil157 is expected to eq nil158 caches the result when all migrated159 gitlab_api_supported: true, no_container_repositories: true, all_migrated: nil, returned_size: nil, expected_result: 0160 is expected to eq 0161 caches the result when all migrated162 gitlab_api_supported: true, no_container_repositories: false, all_migrated: false, returned_size: nil, expected_result: nil163 is expected to eq nil164 caches the result when all migrated165 gitlab_api_supported: true, no_container_repositories: false, all_migrated: true, returned_size: 555, expected_result: 555166 is expected to eq 555167 caches the result when all migrated168 gitlab_api_supported: true, no_container_repositories: false, all_migrated: true, returned_size: nil, expected_result: nil169 is expected to eq nil170 caches the result when all migrated171 not on gitlab.com172 is expected to eq nil173 for a sub-group174 is expected to eq nil175 #all_container_repositories176 with personal namespace177 with no project178 is expected to contain exactly179 with projects180 returns container repositories181 with subgroups182 with no project183 is expected to contain exactly184 with projects185 returns container repositories186 #any_project_with_shared_runners_enabled?187 when a child project has shared runners enabled188 is expected to eq true189 when all child projects have shared runners disabled190 is expected to eq false191 .search192 returns namespaces with a matching name193 returns namespaces with a partially matching name194 returns namespaces with a matching name regardless of the casing195 returns namespaces with a matching path196 returns namespaces with a partially matching path197 returns namespaces with a matching path regardless of the casing198 returns namespaces with a matching route path199 returns namespaces with a partially matching route path200 returns namespaces with a matching route path regardless of the casing201 defaults use_minimum_char_limit to true202 passes use_minimum_char_limit if it is set203 with project namespaces204 does not return project namespace205 does not return project namespace when including parents206 .with_statistics207 sums all project storage counters in the namespace208 correctly handles namespaces without projects209 .top_most210 only contains root namespaces211 #move_dir212 legacy storage213 raises error when directory exists214 moves dir if path changed215 behaves like namespace restrictions216 when any project has container images217 raises an error about not movable project218 when #write_projects_repository_config raises an error219 in test environment220 raises an exception221 in production environment222 does not cancel later callbacks223 project is without repository storage feature224 behaves like move_dir without repository storage feature225 calls namespace service226 behaves like move_dir without repository storage feature227 calls namespace service228 project has repository storage feature229 behaves like move_dir with repository storage feature230 does not call namespace service231 behaves like move_dir with repository storage feature232 does not call namespace service233 with subgroups234 renaming child235 when no projects have pages deployed236 moves the repository and uploads237 renaming parent238 when no projects have pages deployed239 moves the repository and uploads240 moving from one parent to another241 when no projects have pages deployed242 moves the repository and uploads243 moving from having a parent to root244 when no projects have pages deployed245 moves the repository and uploads246 moving from root to having a parent247 when no projects have pages deployed248 moves the repository and uploads249 hashed storage250 repository directory remains unchanged if path changed251 behaves like namespace restrictions252 when any project has container images253 raises an error about not movable project254 for each project inside the namespace255 updates project full path in .git/config256 updates the project storage location257 #rm_dir callback258 legacy storage259 renames its dirs when deleted260 schedules the namespace for deletion261 in sub-groups262 renames its dirs when deleted263 schedules the namespace for deletion264 hashed storage265 has no repositories base directories to remove266 .find_by_path_or_name267 is expected to eq #<Namespaces::UserNamespace id:495 @woW>268 is expected to eq #<Namespaces::UserNamespace id:497 @woW>269 is expected to eq nil270 .clean_path271 cleans the path and makes sure it's available272 .clean_name273 when the name complies with the group name regex274 returns the name as is275 when the name does not comply with the group name regex276 sanitizes the name by replacing all invalid char sequences with a space277 #default_branch_protection278 for a namespace279 returns the instance level setting280 for a group281 that has not altered the default value282 returns the instance level setting283 that has altered the default value284 returns the group level setting285 #use_traversal_ids?286 when use_traversal_ids feature flag is true287 is expected to eq true288 behaves like disabled feature flag when traversal_ids is blank289 is expected to eq false290 when use_traversal_ids feature flag is false291 is expected to eq false292 #use_traversal_ids_for_ancestors?293 when use_traversal_ids_for_ancestors? feature flag is true294 is expected to eq true295 behaves like disabled feature flag when traversal_ids is blank296 is expected to eq false297 when use_traversal_ids_for_ancestors? feature flag is false298 is expected to eq false299 when use_traversal_ids? feature flag is false300 is expected to eq false301 #use_traversal_ids_for_ancestors_upto?302 when use_traversal_ids_for_ancestors_upto feature flag is true303 is expected to eq true304 behaves like disabled feature flag when traversal_ids is blank305 is expected to eq false306 when use_traversal_ids_for_ancestors_upto feature flag is false307 is expected to eq false308 when use_traversal_ids? feature flag is false309 is expected to eq false310 #use_traversal_ids_for_self_and_hierarchy?311 is expected to eq true312 behaves like disabled feature flag when traversal_ids is blank313 is expected to eq false314 when use_traversal_ids_for_self_and_hierarchy feature flag is false315 is expected to eq false316 when use_traversal_ids? feature flag is false317 is expected to eq false318 #users_with_descendants319 returns member users on every nest level without duplication320 #user_ids_for_project_authorizations321 returns the user IDs for which to refresh authorizations322 #all_projects323 with use_traversal_ids feature flag enabled324 calls self_and_descendant_ids325 when namespace is a group326 is expected to contain exactly #<Project id:62 group85/group86/project-61>> and #<Project id:61 group85/project-60>>327 is expected to contain exactly #<Project id:62 group85/group86/project-61>>328 when namespace is a user namespace329 is expected to contain exactly #<Project id:64 namespace387/project-63>>330 with use_traversal_ids feature flag disabled331 when namespace is a group332 is expected to contain exactly #<Project id:67 group87/group88/project-66>> and #<Project id:66 group87/project-65>>333 is expected to contain exactly #<Project id:67 group87/group88/project-66>>334 when namespace is a user namespace335 is expected to contain exactly #<Project id:69 namespace391/project-68>>336 refreshing project access on updating share_with_group_lock337 calls AuthorizedProjectUpdate::ProjectRecalculateWorker to update project authorizations338 updates authorizations leading to users from shared groups losing access339 calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker with a delay to update project authorizations340 when the feature flag `specialized_worker_for_group_lock_update_auth_recalculation` is disabled341 updates authorizations leading to users from shared groups losing access342 updates the authorizations in a non-blocking manner343 #share_with_group_lock with subgroups344 when creating a subgroup345 under a parent with "Share with group lock" enabled346 enables "Share with group lock" on the subgroup347 under a parent with "Share with group lock" disabled348 does not enable "Share with group lock" on the subgroup349 when enabling the parent group "Share with group lock"350 the subgroup "Share with group lock" becomes enabled351 when disabling the parent group "Share with group lock" (which was already enabled)352 and the subgroup "Share with group lock" is enabled353 the subgroup "Share with group lock" does not change354 but the subgroup "Share with group lock" is disabled355 the subgroup "Share with group lock" does not change356 when a group is transferred into a root group357 when the root group "Share with group lock" is enabled358 when the subgroup "Share with group lock" is enabled359 the subgroup "Share with group lock" does not change360 when the subgroup "Share with group lock" is disabled361 the subgroup "Share with group lock" becomes enabled362 when the root group "Share with group lock" is disabled363 when the subgroup "Share with group lock" is enabled364 the subgroup "Share with group lock" does not change365 when the subgroup "Share with group lock" is disabled366 the subgroup "Share with group lock" does not change367 #find_fork_of?368 knows if there is a direct fork in the namespace369 knows when there is as fork-of-fork in the namespace370 with request store enabled371 only queries once372 #root_ancestor373 with persisted root group374 returns root_ancestor for root group without a query375 returns root_ancestor for nested group with a single query376 returns the top most ancestor377 with not persisted root group378 returns root_ancestor for root group without a query379 returns the top most ancestor380 when parent is changed381 by object382 is expected to change `group.root_ancestor` from #<Group id:655 @group126> to #<Group id:656 @group127>383 by id384 is expected to change `group.root_ancestor` from #<Group id:658 @group128> to #<Group id:659 @group129>385 within a transaction386 with a persisted parent387 is expected to eq #<Group id:661 @group130>388 with a non-persisted parent389 is expected to eq #<Group id:664 @group132>390 without a parent391 is expected to eq #<Group id:667 @group134>392 #full_path_before_last_save393 when the group has no parent394 returns the path before last save395 when a parent is assigned to a group with no previous parent396 returns the path before last save397 when a parent is removed from the group398 returns the parent full path399 when changing parents400 returns the previous parent full path401 #auto_devops_enabled402 with users403 when auto devops is explicitly enabled404 is expected to eq true405 when auto devops is explicitly disabled406 is expected to eq false407 #user_namespace?408 when type is a user409 is expected to be truthy410 when type is a group411 is expected to be falsy412 #bot_user_namespace?413 when owner is a bot user user414 is expected to be truthy415 when owner is a non-bot user416 is expected to be falsy417 when type is a group418 is expected to be falsy419 #aggregation_scheduled?420 with an aggregation scheduled association421 is expected to be truthy422 without an aggregation scheduled association423 is expected to be falsy424 #emails_disabled?425 when not a subgroup426 returns false427 returns true428 does not query the db when there is no parent group429 when a subgroup430 returns false431 when ancestor emails are disabled432 returns true433 #emails_enabled?434 without a persisted namespace_setting object435 is the opposite of emails_disabled436 with a persisted namespace_setting object437 is the opposite of emails_disabled438 #any_project_with_pages_deployed?439 returns true if any project nested under the group has pages deployed440 #has_parent?441 returns true when the group has a parent442 returns true when the group has an unsaved parent443 returns false when the group has no parent444 #closest_setting445 when setting is of non-boolean type446 root_setting: 100, child_setting: 200, result: 200447 behaves like fetching closest setting448 returns closest non-nil value449 root_setting: 100, child_setting: nil, result: 100450 behaves like fetching closest setting451 returns closest non-nil value452 root_setting: nil, child_setting: nil, result: nil453 behaves like fetching closest setting454 returns closest non-nil value455 when setting is of boolean type456 root_setting: true, child_setting: false, result: false457 behaves like fetching closest setting458 returns closest non-nil value459 root_setting: true, child_setting: nil, result: true460 behaves like fetching closest setting461 returns closest non-nil value462 root_setting: nil, child_setting: nil, result: nil463 behaves like fetching closest setting464 returns closest non-nil value465 #paid?466 returns false for a root namespace with a free plan467 #shared_runners_setting468 shared_runners_enabled: true, allow_descendants_override_disabled_shared_runners: true, shared_runners_setting: "enabled"469 returns the result470 shared_runners_enabled: true, allow_descendants_override_disabled_shared_runners: false, shared_runners_setting: "enabled"471 returns the result472 shared_runners_enabled: false, allow_descendants_override_disabled_shared_runners: true, shared_runners_setting: "disabled_and_overridable"473 returns the result474 shared_runners_enabled: false, allow_descendants_override_disabled_shared_runners: false, shared_runners_setting: "disabled_and_unoverridable"475 returns the result476 #shared_runners_setting_higher_than?477 shared_runners_enabled: true, allow_descendants_override_disabled_shared_runners: true, other_setting: "enabled", result: false478 returns the result479 shared_runners_enabled: true, allow_descendants_override_disabled_shared_runners: true, other_setting: "disabled_with_override", result: true480 returns the result481 shared_runners_enabled: true, allow_descendants_override_disabled_shared_runners: true, other_setting: "disabled_and_overridable", result: true482 returns the result483 shared_runners_enabled: true, allow_descendants_override_disabled_shared_runners: true, other_setting: "disabled_and_unoverridable", result: true484 returns the result485 shared_runners_enabled: false, allow_descendants_override_disabled_shared_runners: true, other_setting: "enabled", result: false486 returns the result487 shared_runners_enabled: false, allow_descendants_override_disabled_shared_runners: true, other_setting: "disabled_with_override", result: false488 returns the result489 shared_runners_enabled: false, allow_descendants_override_disabled_shared_runners: true, other_setting: "disabled_and_overridable", result: false490 returns the result491 shared_runners_enabled: false, allow_descendants_override_disabled_shared_runners: true, other_setting: "disabled_and_unoverridable", result: true492 returns the result493 shared_runners_enabled: false, allow_descendants_override_disabled_shared_runners: false, other_setting: "enabled", result: false494 returns the result495 shared_runners_enabled: false, allow_descendants_override_disabled_shared_runners: false, other_setting: "disabled_with_override", result: false496 returns the result497 shared_runners_enabled: false, allow_descendants_override_disabled_shared_runners: false, other_setting: "disabled_and_overridable", result: false498 returns the result499 shared_runners_enabled: false, allow_descendants_override_disabled_shared_runners: false, other_setting: "disabled_and_unoverridable", result: false500 returns the result501 validation #changing_shared_runners_enabled_is_allowed502 without a parent503 is valid504 with a parent505 when namespace is a group506 when parent has shared runners disabled507 is invalid508 when parent has shared runners disabled but allows override509 is valid510 when parent has shared runners enabled511 is valid512 behaves like validations called by different namespace types513 namespace_type: :namespace, call_validation: true514 conditionally runs given validation515 namespace_type: :group, call_validation: true516 conditionally runs given validation517 namespace_type: :user_namespace, call_validation: true518 conditionally runs given validation519 namespace_type: :project_namespace, call_validation: false520 conditionally runs given validation521 validation #changing_allow_descendants_override_disabled_shared_runners_is_allowed522 when namespace is a group523 without a parent524 with shared runners disabled525 is valid526 with shared runners enabled527 is invalid528 with a parent529 when parent does not allow shared runners530 is invalid531 when parent allows shared runners and setting to true532 is valid533 when parent allows shared runners and setting to false534 is valid535 behaves like validations called by different namespace types536 namespace_type: :namespace, call_validation: true537 conditionally runs given validation538 namespace_type: :group, call_validation: true539 conditionally runs given validation540 namespace_type: :user_namespace, call_validation: true541 conditionally runs given validation542 namespace_type: :project_namespace, call_validation: false543 conditionally runs given validation544 #root?545 when is subgroup546 returns false547 when is root548 returns true549 #recent?550 when created more than 90 days ago551 is expected to equal false552 when created less than 90 days ago553 is expected to equal true554 behaves like it has loose foreign keys555 has at least one loose foreign key definition556 has the deletion trigger present557 records record deletions558 cleans up record deletions559 Namespaces::SyncEvent560 when creating the namespace561 creates a namespaces_sync_event record562 enqueues ProcessSyncEventsWorker563 when updating namespace parent_id564 creates a namespaces_sync_event record565 creates a namespaces_sync_event for the parent and all the descendent namespaces566 enqueues ProcessSyncEventsWorker567 when updating namespace other attribute568 creates a namespaces_sync_event record569 in the same transaction570 when updating different parent_id571 creates two namespaces_sync_event records572 when updating the same parent_id573 creates one namespaces_sync_event record574 serialization575 behaves like blocks unsafe serialization576 blocks as_json577 blocks to_json578 #certificate_based_clusters_enabled?579 with ff disabled580 with a cluster_enabled_grant581 is truthy582 without a cluster_enabled_grant583 is falsy584 with ff enabled585 with a cluster_enabled_grant586 is truthy587 without a cluster_enabled_grant588 is truthy589 with loose foreign key on organization_id590 behaves like cleanup by a loose foreign key591 cleans up (delete or nullify) the model592Gitlab::Regex593 .project_name_regex594 behaves like project name regex595 is expected to match "Gitlab++"596 is expected not to match "?gitlab"597 is expected not to match "Users's something"598 is expected not to match "users/something"599 behaves like project/group name chars regex600 is expected to match "gitlab-ce"601 is expected to match "GitLab CE"602 is expected to match "100 lines"603 is expected to match "gitlab.git"604 is expected to match "Český název"605 is expected to match "Dash – is this"606 .group_name_regex607 allows parenthesis608 does not start with parenthesis609 behaves like group name regex610 is expected not to match "?gitlab"611 is expected not to match "Users's something"612 is expected not to match "users/something"613 behaves like project/group name chars regex614 is expected to match "gitlab-ce"615 is expected to match "GitLab CE"616 is expected to match "100 lines"617 is expected to match "gitlab.git"618 is expected to match "Český název"619 is expected to match "Dash – is this"620 .group_name_regex_chars621 allows partial matches622 behaves like project/group name chars regex623 is expected to match "gitlab-ce"624 is expected to match "GitLab CE"625 is expected to match "100 lines"626 is expected to match "gitlab.git"627 is expected to match "Český název"628 is expected to match "Dash – is this"629 .project_name_regex_message630 is expected to eq "can contain only letters, digits, emojis, '_', '.', '+', dashes, or spaces. It must start with a letter, digit, emoji, or '_'."631 .group_name_regex_message632 is expected to eq "can contain only letters, digits, emojis, '_', '.', dash, space, parenthesis. It must start with letter, digit, emoji or '_'."633 .bulk_import_destination_namespace_path_regex_message634 is expected to eq "must have a relative path structure with no HTTP protocol characters, or leading or trailing forward...ust not start or end with a special character, and must not contain consecutive special characters."635 .bulk_import_destination_namespace_path_regex636 is expected not to match "?gitlab"637 is expected not to match "Users's something"638 is expected not to match "/source"639 is expected not to match "http:"640 is expected not to match "https:"641 is expected not to match "example.com/?stuff=true"642 is expected not to match "example.com:5000/?stuff=true"643 is expected not to match "http://gitlab.example/gitlab-org/manage/import/gitlab-migration-test"644 is expected not to match "_good_for_me!"645 is expected not to match "good_for+you"646 is expected not to match "source/"647 is expected not to match ".source/full./path"648 is expected not to match ".source/.full/.path"649 is expected not to match "_source"650 is expected not to match ".source"651 is expected to match "source"652 is expected to match "source/full"653 is expected to match "source/full/path"654 is expected to match "sou_rce/fu-ll/pa.th"655 is expected to match "domain_namespace"656 is expected to match "gitlab-migration-test"657 is expected to match "1-project-path"658 is expected to match "e-project-path"659 is expected to match ""660 .bulk_import_source_full_path_regex_message661 is expected to eq "must have a relative path structure with no HTTP protocol characters, or leading or trailing forward...ust not start or end with a special character, and must not contain consecutive special characters."662 .bulk_import_source_full_path_regex663 is expected not to match "Users's something"664 is expected not to match "/source"665 is expected not to match "http:"666 is expected not to match "https:"667 is expected not to match "example.com/?stuff=true"668 is expected not to match "example.com:5000/?stuff=true"669 is expected not to match "http://gitlab.example/gitlab-org/manage/import/gitlab-migration-test"670 is expected not to match "source/"671 is expected not to match ""672 is expected not to match ".source/full./path"673 is expected not to match "?gitlab"674 is expected not to match "_good_for_me!"675 is expected not to match "group/@*%_my_other-project-----"676 is expected not to match "_foog-for-me!"677 is expected not to match ".source/full/path."678 is expected to match "good_for+you"679 is expected to match "source"680 is expected to match ".source"681 is expected to match "_source"682 is expected to match "source/full"683 is expected to match "source/full/path"684 is expected to match "domain_namespace"685 is expected to match "gitlab-migration-test"686 is expected to match "source/full/path-"687 is expected to match ".source/full/path"688 is expected to match ".source/.full/.path"689 is expected to match "source/full/.path"690 is expected to match "source/full/..path"691 is expected to match "source/full/---1path"692 is expected to match "source/full/-___path"693 is expected to match "source/full/path---"694 is expected to match "group/__my_other-project-----"695 .group_path_regex696 is expected not to match "?gitlab"697 is expected not to match "Users's something"698 is expected not to match "/source"699 is expected not to match "http:"700 is expected not to match "https:"701 is expected not to match "example.com/?stuff=true"702 is expected not to match "example.com:5000/?stuff=true"703 is expected not to match "http://gitlab.example/gitlab-org/manage/import/gitlab-migration-test"704 is expected not to match "_good_for_me!"705 is expected not to match "good_for+you"706 is expected not to match "source/"707 is expected not to match ".source/full./path"708 is expected not to match "source/full"709 is expected not to match "source/full/path"710 is expected not to match ".source/.full/.path"711 is expected to match "source"712 is expected to match ".source"713 is expected to match "_source"714 is expected to match "domain_namespace"715 is expected to match "gitlab-migration-test"716 .environment_name_regex717 is expected to match "foo"718 is expected to match "a"719 is expected to match "foo-1"720 is expected to match "FOO"721 is expected to match "foo/1"722 is expected to match "foo.1"723 is expected not to match "9&foo"724 is expected not to match "foo-^"725 is expected not to match "!!()()"726 is expected not to match "/foo"727 is expected not to match "foo/"728 is expected not to match "/foo/"729 is expected not to match "/"730 .environment_scope_regex731 is expected to match "foo"732 is expected to match "foo*Z"733 is expected not to match "!!()()"734 .environment_slug_regex735 is expected to match "foo"736 is expected to match "foo-1"737 is expected not to match "FOO"738 is expected not to match "foo/1"739 is expected not to match "foo.1"740 is expected not to match "foo*1"741 is expected not to match "9foo"742 is expected not to match "foo-"743 .build_trace_section_regex744 without options745 is expected to match "section_start:1600445393032:NAME\r\e[0K"746 is expected to match "section_end:12345678:aBcDeFg1234\r\e[0K"747 is expected to match "section_start:0:sect_for_alpha-v1.0\r\e[0K"748 is expected not to match "section_start:section:0\r\e[0K"749 is expected not to match "section_:1600445393032:NAME\r\e[0K"750 is expected not to match "SECTION_START:1600445393032:NAME\r\e[0K"751 with options752 is expected to match "section_start:1600445393032:NAME[collapsed=true]\r\e[0K"753 is expected to match "section_start:1600445393032:NAME[collapsed=true, example_option=false]\r\e[0K"754 is expected to match "section_start:1600445393032:NAME[collapsed=true,example_option=false]\r\e[0K"755 is expected to match "section_start:1600445393032:NAME[numeric_option=1234567]\r\e[0K"756 is expected to match "section_end:1600445393032:NAME[collapsed=true]\r\e[0K"757 is expected not to match "section_start:1600445393032:NAME[collapsed=[]]]\r\e[0K"758 is expected not to match "section_start:1600445393032:NAME[collapsed = true]\r\e[0K"759 is expected not to match "section_start:1600445393032:NAME[collapsed = true, example_option=false]\r\e[0K"760 is expected not to match "section_start:1600445393032:NAME[collapsed=true, example_option=false]\r\e[0K"761 is expected not to match "section_start:1600445393032:NAME[]\r\e[0K"762 .container_repository_name_regex763 is expected to match "image"764 is expected to match "my/image"765 is expected to match "my/awesome/image-1"766 is expected to match "my/awesome/image.test"767 is expected to match "my/awesome/image--test"768 is expected to match "my/image__test"769 is expected to match "user1/project/a_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb------------x"770 is expected not to match "user1/project/a_bbbbb-------------"771 is expected not to match "my/image-.test"772 is expected not to match "my/image___test"773 is expected not to match "my/image_.test"774 is expected not to match "my/image_-test"775 is expected not to match "my/image..test"776 is expected not to match "my/image\\ntest"777 is expected not to match ".my/image"778 is expected not to match "my/image."779 .aws_account_id_regex780 is expected to match "123456789012"781 is expected not to match "12345678901"782 is expected not to match "1234567890123"783 is expected not to match "12345678901a"784 .aws_arn_regex785 is expected to match "arn:aws:iam::123456789012:role/role-name"786 is expected to match "arn:aws:s3:::bucket/key"787 is expected to match "arn:aws:ec2:us-east-1:123456789012:volume/vol-1"788 is expected to match "arn:aws:rds:us-east-1:123456789012:pg:prod"789 is expected not to match "123456789012"790 is expected not to match "role/role-name"791 .utc_date_regex792 is expected to match "2019-10-20"793 is expected to match "1990-01-01"794 is expected not to match "11-1234-90"795 is expected not to match "aa-1234-cc"796 is expected not to match "9/9/2018"797 .cluster_agent_name_regex798 is expected to match "foo"799 is expected to match "foo-bar"800 is expected to match "1foo-bar"801 is expected to match "foo-bar2"802 is expected to match "foo-1bar"803 is expected not to match "foo.bar"804 is expected not to match "Foo"805 is expected not to match "FoO"806 is expected not to match "FoO-"807 is expected not to match "-foo-"808 is expected not to match "foo/bar"809 .kubernetes_namespace_regex810 is expected to match "foo"811 is expected to match "foo-bar"812 is expected to match "1foo-bar"813 is expected to match "foo-bar2"814 is expected to match "foo-1bar"815 is expected not to match "foo.bar"816 is expected not to match "Foo"817 is expected not to match "FoO"818 is expected not to match "FoO-"819 is expected not to match "-foo-"820 is expected not to match "foo/bar"821 .kubernetes_dns_subdomain_regex822 is expected to match "foo"823 is expected to match "foo-bar"824 is expected to match "foo.bar"825 is expected to match "foo1.bar"826 is expected to match "foo1.2bar"827 is expected to match "foo.bar1"828 is expected to match "1foo.bar1"829 is expected not to match "Foo"830 is expected not to match "FoO"831 is expected not to match "FoO-"832 is expected not to match "-foo-"833 is expected not to match "foo/bar"834 .conan_package_reference_regex835 is expected to match "123456789"836 is expected to match "asdf1234"837 is expected not to match "@foo"838 is expected not to match "0/pack+age/1@1/0"839 is expected not to match "!!()()"840 .conan_revision_regex841 is expected to match "0"842 is expected not to match "foo"843 is expected not to match "!!()()"844 .composer_dev_version_regex845 is expected to match "dev-master"846 is expected to match "1.x-dev"847 is expected not to match "foobar"848 is expected not to match "1.2.3"849 conan recipe components850 .conan_recipe_component_regex851 is expected not to match "_"852 behaves like accepting valid recipe components values853 is expected to match "foobar"854 is expected to match "foo_bar"855 is expected to match "foo+bar"856 is expected to match "_foo+bar-baz+1.0"857 is expected to match "1.0.0"858 is expected not to match "-foo_bar"859 is expected not to match "+foo_bar"860 is expected not to match ".foo_bar"861 is expected not to match "foo@bar"862 is expected not to match "foo/bar"863 is expected not to match "!!()()"864 is expected not to match "f_af_af_af_af_af_af_af_af_af_af_af_af_af_af_af_af_a"865 .conan_recipe_user_channel_regex866 is expected to match "_"867 behaves like accepting valid recipe components values868 is expected to match "foobar"869 is expected to match "foo_bar"870 is expected to match "foo+bar"871 is expected to match "_foo+bar-baz+1.0"872 is expected to match "1.0.0"873 is expected not to match "-foo_bar"874 is expected not to match "+foo_bar"875 is expected not to match ".foo_bar"876 is expected not to match "foo@bar"877 is expected not to match "foo/bar"878 is expected not to match "!!()()"879 is expected not to match "f_af_af_af_af_af_af_af_af_af_af_af_af_af_af_af_af_a"880 .package_name_regex881 is expected to match "123"882 is expected to match "foo"883 is expected to match "foo/bar"884 is expected to match "@foo/bar"885 is expected to match "com/mycompany/app/my-app"886 is expected to match "my-package/1.0.0@my+project+path/beta"887 is expected not to match "my-package/1.0.0@@@@@my+project+path/beta"888 is expected not to match "$foo/bar"889 is expected not to match "@foo/@/bar"890 is expected not to match "@@foo/bar"891 is expected not to match "my package name"892 is expected not to match "!!()()"893 is expected not to match "..\n..\foo"894 has no backtracking issue895 .maven_file_name_regex896 is expected to match "123"897 is expected to match "foo"898 is expected to match "foo+bar-2_0.pom"899 is expected to match "foo.bar.baz-2.0-20190901.47283-1.jar"900 is expected to match "maven-metadata.xml"901 is expected to match "1.0-SNAPSHOT"902 is expected not to match "../../foo"903 is expected not to match "..\\..\\foo"904 is expected not to match "%2f%2e%2e%2f%2essh%2fauthorized_keys"905 is expected not to match "$foo/bar"906 is expected not to match "my file name"907 is expected not to match "!!()()"908 .maven_path_regex909 is expected to match "123"910 is expected to match "foo"911 is expected to match "foo/bar"912 is expected to match "@foo/bar"913 is expected to match "com/mycompany/app/my-app"914 is expected to match "com/mycompany/app/my-app/1.0-SNAPSHOT"915 is expected to match "com/mycompany/app/my-app/1.0-SNAPSHOT+debian64"916 is expected not to match "com/mycompany/app/my+app/1.0-SNAPSHOT"917 is expected not to match "$foo/bar"918 is expected not to match "@foo/@/bar"919 is expected not to match "my package name"920 is expected not to match "!!()()"921 .maven_version_regex922 has no ReDoS issues with long strings923 has no ReDos issues with long strings ending with an exclamation mark924 is expected to match "0"925 is expected to match "1"926 is expected to match "03"927 is expected to match "2.0"928 is expected to match "01.2"929 is expected to match "10.2.3-beta"930 is expected to match "1.2-SNAPSHOT"931 is expected to match "20"932 is expected to match "20.3"933 is expected to match "1.2.1"934 is expected to match "1.4.2-12"935 is expected to match "1.2-beta-2"936 is expected to match "12.1.2-2-1"937 is expected to match "1.1-beta-2"938 is expected to match "1.3.350.v20200505-1744"939 is expected to match "2.0.0.v200706041905-7C78EK9E_EkMNfNOd2d8qq"940 is expected to match "1.2-alpha-1-20050205.060708-1"941 is expected to match "703220b4e2cea9592caeb9f3013f6b1e5335c293"942 is expected to match "RELEASE"943 is expected not to match "..1.2.3"944 is expected not to match "1.2.3..beta"945 is expected not to match " 1.2.3"946 is expected not to match "1.2.3 \r\t"947 is expected not to match "\r\t 1.2.3"948 is expected not to match "1./2.3"949 is expected not to match "1.2.3-4/../../"950 is expected not to match "1.2.3-4%2e%2e%"951 is expected not to match "../../../../../1.2.3"952 is expected not to match "%2e%2e%2f1.2.3"953 .nuget_version_regex954 is expected to match "1.2"955 is expected to match "1.2.3"956 is expected to match "1.2.3.4"957 is expected to match "1.2.3.4-stable.1"958 is expected to match "1.2.3-beta"959 is expected to match "1.2.3-alpha.3"960 is expected to match "1.0.7+r3456"961 is expected not to match "1"962 is expected not to match "1./2.3"963 is expected not to match "../../../../../1.2.3"964 is expected not to match "%2e%2e%2f1.2.3"965 .nuget_package_name_regex966 is expected to match "My.Package"967 is expected to match "My.Package.Mvc"968 is expected to match "MyPackage"969 is expected to match "My.23.Package"970 is expected to match "My23Package"971 is expected to match "runtime.my-test64.runtime.package.Mvc"972 is expected to match "my_package"973 is expected not to match "My/package"974 is expected not to match "../../../my_package"975 is expected not to match "%2e%2e%2fmy_package"976 .terraform_module_package_name_regex977 is expected to match "my-module/my-system"978 is expected to match "my/module"979 is expected not to match "my-module"980 is expected not to match "My-Module"981 is expected not to match "my_module"982 is expected not to match "my.module"983 is expected not to match "../../../my-module"984 is expected not to match "%2e%2e%2fmy-module"985 .pypi_version_regex986 is expected to match "0.1"987 is expected to match "2.0"988 is expected to match "1.2.0"989 is expected to match "0100!0.0"990 is expected to match "00!1.2"991 is expected to match "1.0a"992 is expected to match "1.0-a"993 is expected to match "1.0.a1"994 is expected to match "1.0a1"995 is expected to match "1.0-a1"996 is expected to match "1.0alpha1"997 is expected to match "1.0b1"998 is expected to match "1.0beta1"999 is expected to match "1.0rc1"1000 is expected to match "1.0pre1"1001 is expected to match "1.0preview1"1002 is expected to match "1.0.dev1"1003 is expected to match "1.0.DEV1"1004 is expected to match "1.0.post1"1005 is expected to match "1.0.rev1"1006 is expected to match "1.0.r1"1007 is expected to match "1.0c2"1008 is expected to match "2012.15"1009 is expected to match "1.0+5"1010 is expected to match "1.0+abc.5"1011 is expected to match "1!1.1"1012 is expected to match "1.0c3"1013 is expected to match "1.0rc2"1014 is expected to match "1.0c1"1015 is expected to match "1.0b2-346"1016 is expected to match "1.0b2.post345"1017 is expected to match "1.0b2.post345.dev456"1018 is expected to match "1.2.rev33+123456"1019 is expected to match "1.1.dev1"1020 is expected to match "1.0b1.dev456"1021 is expected to match "1.0a12.dev456"1022 is expected to match "1.0b2"1023 is expected to match "1.0.dev456"1024 is expected to match "1.0c1.dev456"1025 is expected to match "1.0.post456"1026 is expected to match "1.0.post456.dev34"1027 is expected to match "1.2+123abc"1028 is expected to match "1.2+abc"1029 is expected to match "1.2+abc123"1030 is expected to match "1.2+abc123def"1031 is expected to match "1.2+1234.abc"1032 is expected to match "1.2+123456"1033 is expected to match "1.2.r32+123456"1034 is expected to match "1!1.2.rev33+123456"1035 is expected to match "1.0a12"1036 is expected to match "1.2.3-45+abcdefgh"1037 is expected to match "v1.2.3"1038 is expected not to match "1.2.3-45-abcdefgh"1039 is expected not to match "..1.2.3"1040 is expected not to match " 1.2.3"1041 is expected not to match "1.2.3 \r\t"1042 is expected not to match "\r\t 1.2.3"1043 is expected not to match "1./2.3"1044 is expected not to match "1.2.3-4/../../"1045 is expected not to match "1.2.3-4%2e%2e%"1046 is expected not to match "../../../../../1.2.3"1047 is expected not to match "%2e%2e%2f1.2.3"1048 .debian_package_name_regex1049 is expected to match "0ad"1050 is expected to match "g++"1051 is expected to match "lua5.1"1052 is expected to match "samba"1053 is expected not to match ""1054 is expected not to match "-a"1055 is expected not to match "+a"1056 is expected not to match ".a"1057 is expected not to match "_a"1058 is expected not to match "a~"1059 is expected not to match "aé"1060 is expected not to match "a"1061 is expected not to match "Aa"1062 is expected not to match "aA"1063 is expected not to match "a_b"1064 behaves like regex rejecting path traversal1065 is expected not to match "a../b"1066 is expected not to match "a..%2fb"1067 is expected not to match "a%2e%2e%2fb"1068 is expected not to match "a%2e%2e/b"1069 .debian_version_regex1070 valid versions1071 is expected to match "1.0"1072 is expected to match "1.0~alpha1"1073 is expected to match "2:4.9.5+dfsg-5+deb10u1"1074 is expected to match "0.0.0-806aa143-f0bf-4f27-be65-8e4fcb745f37"1075 dpkg errors1076 is expected not to match ""1077 is expected not to match "1 0"1078 is expected not to match ":1.0"1079 is expected not to match "a:1.0"1080 is expected not to match "-1:1.0"1081 is expected not to match "9999999999:1.0"1082 is expected not to match "2:"1083 is expected not to match "1.0-"1084 is expected not to match "-1"1085 is expected not to match "2:-1"1086 dpkg warnings1087 is expected not to match "a"1088 is expected not to match "a1.0"1089 is expected not to match "1_0"1090 is expected not to match "1.0-1_0"1091 dpkg accepts1092 is expected not to match " 1.0"1093 is expected not to match "1.0 "1094 is expected not to match "1:2:3"1095 is expected to match "1-2-3-4-5-6-7-8-9-10-11-12-13-14-15"1096 is expected not to match "1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16"1097 path traversals1098 is expected not to match "1../0"1099 is expected not to match "1..%2f0"1100 is expected not to match "1%2e%2e%2f0"1101 is expected not to match "1%2e%2e/0"1102 .debian_direct_upload_filename_regex1103 is expected to match "libsample0_1.2.3~alpha2_amd64.deb"1104 is expected to match "sample-dev_1.2.3~binary_amd64.deb"1105 is expected to match "sample-udeb_1.2.3~alpha2_amd64.udeb"1106 is expected to match "sample-ddeb_1.2.3~alpha2_amd64.ddeb"1107 is expected not to match "sample_1.2.3~alpha2_amd64.buildinfo"1108 is expected not to match "sample_1.2.3~alpha2_amd64.changes"1109 is expected not to match "sample_1.2.3~alpha2.dsc"1110 is expected not to match "sample_1.2.3~alpha2.tar.xz"1111 is expected not to match "libsample0_1.2.3~alpha2_amd64.debu"1112 .helm_channel_regex1113 is expected to match "release"1114 is expected to match "my-repo"1115 is expected to match "My-Re_po"1116 is expected to match "my_repo42"1117 is expected to match "1.2.3"1118 is expected to match "v1.2.3-beta-12"1119 is expected to match "renovate_https-github.com-operator-framework-operator-lifecycle-manager.git-0.x"1120 is expected not to match ""1121 is expected not to match "hé"1122 is expected not to match ".1.23"1123 is expected not to match "1..23"1124 is expected not to match "1.2.3."1125 is expected not to match "1..2.3."1126 is expected not to match "1/../2.3."1127 is expected not to match "1/..%2F2.3."1128 .helm_package_regex1129 is expected to match "release"1130 is expected to match "my-repo"1131 is expected to match "my-repo42"1132 is expected not to match ""1133 is expected not to match "hé"1134 is expected not to match "my/../repo"1135 is expected not to match "me%2f%2e%2e%2f"1136 .helm_version_regex1137 is expected to match "1.2.3"1138 is expected to match "1.2.3-beta"1139 is expected to match "1.2.3-alpha.3"1140 is expected to match "v1.2.3"1141 is expected to match "v1.2.3-beta"1142 is expected to match "v1.2.3-alpha.3"1143 is expected not to match "1"1144 is expected not to match "1.2"1145 is expected not to match "1./2.3"1146 is expected not to match "../../../../../1.2.3"1147 is expected not to match "%2e%2e%2f1.2.3"1148 is expected not to match "v1"1149 is expected not to match "v1.2"1150 is expected not to match "v1./2.3"1151 is expected not to match "v../../../../../1.2.3"1152 is expected not to match "v%2e%2e%2f1.2.3"1153 .semver_regex1154 is expected to match "1.2.3"1155 is expected to match "1.2.3-beta"1156 is expected to match "1.2.3-alpha.3"1157 is expected not to match "1"1158 is expected not to match "1.2"1159 is expected not to match "1./2.3"1160 is expected not to match "../../../../../1.2.3"1161 is expected not to match "%2e%2e%2f1.2.3"1162 .go_package_regex1163 is expected to match "example.com"1164 is expected to match "example.com/foo"1165 is expected to match "example.com/foo/bar"1166 is expected to match "example.com/foo/bar/baz"1167 is expected to match "tl.dr.foo.bar.baz"1168 .unbounded_semver_regex1169 is expected to match "1.2.3"1170 is expected to match "1.2.3-beta"1171 is expected to match "1.2.3-alpha.3"1172 is expected not to match "1"1173 is expected not to match "1.2"1174 is expected not to match "1./2.3"1175 .generic_package_version_regex1176 is expected to match "1.2.3"1177 is expected to match "1.3.350"1178 is expected to match "1.3.350-20201230123456"1179 is expected to match "1.2.3-rc1"1180 is expected to match "1.2.3g"1181 is expected to match "1.2"1182 is expected to match "1.2.bananas"1183 is expected to match "v1.2.4-build"1184 is expected to match "d50d836eb3de6177ce6c7a5482f27f9c2c84b672"1185 is expected to match "this_is_a_string_only"1186 is expected not to match "..1.2.3"1187 is expected not to match " 1.2.3"1188 is expected not to match "1.2.3 \r\t"1189 is expected not to match "\r\t 1.2.3"1190 is expected not to match "1.2.3-4/../../"1191 is expected not to match "1.2.3-4%2e%2e%"1192 is expected not to match "../../../../../1.2.3"1193 is expected not to match "%2e%2e%2f1.2.3"1194 is expected not to match ""1195 .generic_package_name_regex1196 is expected to match "123"1197 is expected to match "foo"1198 is expected to match "foo.bar.baz-2.0-20190901.47283-1"1199 is expected not to match "../../foo"1200 is expected not to match "..\\..\\foo"1201 is expected not to match "%2f%2e%2e%2f%2essh%2fauthorized_keys"1202 is expected not to match "$foo/bar"1203 is expected not to match "my file name"1204 is expected not to match "!!()()"1205 .generic_package_file_name_regex1206 is expected to match "123"1207 is expected to match "foo"1208 is expected to match "foo.bar.baz-2.0-20190901.47283-1.jar"1209 is expected not to match "../../foo"1210 is expected not to match "..\\..\\foo"1211 is expected not to match "%2f%2e%2e%2f%2essh%2fauthorized_keys"1212 is expected not to match "$foo/bar"1213 is expected not to match "my file name"1214 is expected not to match "!!()()"1215 .prefixed_semver_regex1216 is expected to match "v1.2.3"1217 is expected to match "v1.2.3-beta"1218 is expected to match "v1.2.3-alpha.3"1219 is expected not to match "v1"1220 is expected not to match "v1.2"1221 is expected not to match "v1./2.3"1222 is expected not to match "v../../../../../1.2.3"1223 is expected not to match "v%2e%2e%2f1.2.3"1224 Packages::API_PATH_REGEX1225 is expected to match "/api/v4/group/12345/-/packages/composer/p/123456789"1226 is expected to match "/api/v4/group/12345/-/packages/composer/p2/pkg_name"1227 is expected to match "/api/v4/group/12345/-/packages/composer/packages"1228 is expected to match "/api/v4/group/12345/-/packages/composer/pkg_name"1229 is expected to match "/api/v4/groups/1234/-/packages/maven/a/path/file.jar"1230 is expected to match "/api/v4/groups/1234/-/packages/nuget/index"1231 is expected to match "/api/v4/groups/1234/-/packages/nuget/metadata/pkg_name/1.3.4"1232 is expected to match "/api/v4/groups/1234/-/packages/nuget/metadata/pkg_name/index"1233 is expected to match "/api/v4/groups/1234/-/packages/nuget/query"1234 is expected to match "/api/v4/packages/conan/v1/conans/pkg_name/1.2.3/username/stable"1235 is expected to match "/api/v4/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/digest"1236 is expected to match "/api/v4/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/download_urls"1237 is expected to match "/api/v4/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/packages/pkg_ref"1238 is expected to match "/api/v4/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/packages/pkg_ref/digest"1239 is expected to match "/api/v4/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/packages/pkg_ref/download_urls"1240 is expected to match "/api/v4/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/packages/pkg_ref/upload_urls"1241 is expected to match "/api/v4/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/upload_urls"1242 is expected to match "/api/v4/packages/conan/v1/conans/search"1243 is expected to match "/api/v4/packages/conan/v1/files/pkg_name/1.2.3/username/stable/2.3/export/file.name"1244 is expected to match "/api/v4/packages/conan/v1/files/pkg_name/1.2.3/username/stable/2.3/export/file.name/authorize"1245 is expected to match "/api/v4/packages/conan/v1/files/pkg_name/1.2.3/username/stable/2.3/package/pkg_ref/pkg_revision/file.name"1246 is expected to match "/api/v4/packages/conan/v1/files/pkg_name/1.2.3/username/stable/2.3/package/pkg_ref/pkg_revision/file.name/authorize"1247 is expected to match "/api/v4/packages/conan/v1/ping"1248 is expected to match "/api/v4/packages/conan/v1/users/authenticate"1249 is expected to match "/api/v4/packages/conan/v1/users/check_credentials"1250 is expected to match "/api/v4/packages/maven/a/path/file.jar"1251 is expected to match "/api/v4/packages/npm/-/package/pkg_name/dist-tags"1252 is expected to match "/api/v4/packages/npm/-/package/pkg_name/dist-tags/tag"1253 is expected to match "/api/v4/packages/npm/pkg_name"1254 is expected to match "/api/v4/projects/1234/packages/composer"1255 is expected to match "/api/v4/projects/1234/packages/composer/archives/pkg_name"1256 is expected to match "/api/v4/projects/1234/packages/conan/v1/conans/pkg_name/1.2.3/username/stable"1257 is expected to match "/api/v4/projects/1234/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/digest"1258 is expected to match "/api/v4/projects/1234/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/download_urls"1259 is expected to match "/api/v4/projects/1234/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/packages/pkg_ref"1260 is expected to match "/api/v4/projects/1234/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/packages/pkg_ref/digest"1261 is expected to match "/api/v4/projects/1234/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/packages/pkg_ref/download_urls"1262 is expected to match "/api/v4/projects/1234/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/packages/pkg_ref/upload_urls"1263 is expected to match "/api/v4/projects/1234/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/upload_urls"1264 is expected to match "/api/v4/projects/1234/packages/conan/v1/conans/search"1265 is expected to match "/api/v4/projects/1234/packages/conan/v1/files/pkg_name/1.2.3/username/stable/2.3/export/file.name"1266 is expected to match "/api/v4/projects/1234/packages/conan/v1/files/pkg_name/1.2.3/username/stable/2.3/export/file.name/authorize"1267 is expected to match "/api/v4/projects/1234/packages/conan/v1/files/pkg_name/1.2.3/username/stable/2.3/package/pkg_ref/pkg_revision/file.name"1268 is expected to match "/api/v4/projects/1234/packages/conan/v1/files/pkg_name/1.2.3/username/stable/2.3/package/pkg_ref/pkg_revision/file.name/authorize"1269 is expected to match "/api/v4/projects/1234/packages/conan/v1/ping"1270 is expected to match "/api/v4/projects/1234/packages/conan/v1/users/authenticate"1271 is expected to match "/api/v4/projects/1234/packages/conan/v1/users/check_credentials"1272 is expected to match "/api/v4/projects/1234/packages/debian/dists/stable/compon/binary-x64/Packages"1273 is expected to match "/api/v4/projects/1234/packages/debian/dists/stable/InRelease"1274 is expected to match "/api/v4/projects/1234/packages/debian/dists/stable/Release"1275 is expected to match "/api/v4/projects/1234/packages/debian/dists/stable/Release.gpg"1276 is expected to match "/api/v4/projects/1234/packages/debian/file.name"1277 is expected to match "/api/v4/projects/1234/packages/debian/file.name/authorize"1278 is expected to match "/api/v4/projects/1234/packages/debian/pool/compon/e/pkg/file.name"1279 is expected to match "/api/v4/projects/1234/packages/generic/pkg_name/1.3.4/myfile.txt"1280 is expected to match "/api/v4/projects/1234/packages/generic/pkg_name/1.3.4/myfile.txt/authorize"1281 is expected to match "/api/v4/projects/1234/packages/go/my_module/@v/11.2.3.info"1282 is expected to match "/api/v4/projects/1234/packages/go/my_module/@v/11.2.3.mod"1283 is expected to match "/api/v4/projects/1234/packages/go/my_module/@v/11.2.3.zip"1284 is expected to match "/api/v4/projects/1234/packages/go/my_module/@v/list"1285 is expected to match "/api/v4/projects/1234/packages/maven/a/path/file.jar"1286 is expected to match "/api/v4/projects/1234/packages/maven/a/path/file.jar/authorize"1287 is expected to match "/api/v4/projects/1234/packages/npm/-/package/pkg_name/dist-tags"1288 is expected to match "/api/v4/projects/1234/packages/npm/-/package/pkg_name/dist-tags/tag"1289 is expected to match "/api/v4/projects/1234/packages/npm/pkg_name"1290 is expected to match "/api/v4/projects/1234/packages/npm/pkg_name/-/tarball.tgz"1291 is expected to match "/api/v4/projects/1234/packages/nuget"1292 is expected to match "/api/v4/projects/1234/packages/nuget/authorize"1293 is expected to match "/api/v4/projects/1234/packages/nuget/download/pkg_name/1.3.4/pkg.npkg"1294 is expected to match "/api/v4/projects/1234/packages/nuget/download/pkg_name/index"1295 is expected to match "/api/v4/projects/1234/packages/nuget/index"1296 is expected to match "/api/v4/projects/1234/packages/nuget/metadata/pkg_name/1.3.4"1297 is expected to match "/api/v4/projects/1234/packages/nuget/metadata/pkg_name/index"1298 is expected to match "/api/v4/projects/1234/packages/nuget/query"1299 is expected to match "/api/v4/projects/1234/packages/pypi"1300 is expected to match "/api/v4/projects/1234/packages/pypi/authorize"1301 is expected to match "/api/v4/projects/1234/packages/pypi/files/1234567890/file.identifier"1302 is expected to match "/api/v4/projects/1234/packages/pypi/simple/pkg_name"1303 is expected to match "/api/v4/projects/1234/packages/rubygems/api/v1/dependencies"1304 is expected to match "/api/v4/projects/1234/packages/rubygems/api/v1/gems"1305 is expected to match "/api/v4/projects/1234/packages/rubygems/api/v1/gems/authorize"1306 is expected to match "/api/v4/projects/1234/packages/rubygems/gems/pkg"1307 is expected to match "/api/v4/projects/1234/packages/rubygems/pkg"1308 is expected to match "/api/v4/projects/1234/packages/rubygems/quick/Marshal.4.8/pkg"1309 is expected not to match ""1310 is expected not to match "foo"1311 is expected not to match "/api/v4"1312 is expected not to match "/api/v4/version"1313 is expected not to match "/api/v4/packages"1314 is expected not to match "/api/v4/packages/"1315 is expected not to match "/api/v4/group"1316 is expected not to match "/api/v4/group/12345"1317 is expected not to match "/api/v4/group/12345/-"1318 is expected not to match "/api/v4/group/12345/-/packages"1319 is expected not to match "/api/v4/group/12345/-/packages/"1320 is expected not to match "/api/v4/group/12345/-/packages/50"1321 is expected not to match "/api/v4/groups"1322 is expected not to match "/api/v4/groups/12345"1323 is expected not to match "/api/v4/groups/12345/-"1324 is expected not to match "/api/v4/groups/12345/-/packages"1325 is expected not to match "/api/v4/groups/12345/-/packages/"1326 is expected not to match "/api/v4/groups/12345/-/packages/50"1327 is expected not to match "/api/v4/groups/12345/packages"1328 is expected not to match "/api/v4/groups/12345/packages/"1329 is expected not to match "/api/v4/groups/12345/badges"1330 is expected not to match "/api/v4/groups/12345/issues"1331 is expected not to match "/api/v4/projects"1332 is expected not to match "/api/v4/projects/1234"1333 is expected not to match "/api/v4/projects/1234/packages"1334 is expected not to match "/api/v4/projects/1234/packages/"1335 is expected not to match "/api/v4/projects/1234/packages/50"1336 is expected not to match "/api/v4/projects/1234/packages/50/package_files"1337 is expected not to match "/api/v4/projects/1234/merge_requests"1338 is expected not to match "/api/v4/projects/1234/registry/repositories"1339 is expected not to match "/api/v4/projects/1234/issues"1340 is expected not to match "/api/v4/projects/1234/members"1341 is expected not to match "/api/v4/projects/1234/milestones"1342 is expected not to match "/api/v4/groups/1234/packages/debian/dists/stable/compon/binary-compo/Packages"1343 is expected not to match "/api/v4/groups/1234/packages/debian/dists/stable/InRelease"1344 is expected not to match "/api/v4/groups/1234/packages/debian/dists/stable/Release"1345 is expected not to match "/api/v4/groups/1234/packages/debian/dists/stable/Release.gpg"1346 is expected not to match "/api/v4/groups/1234/packages/debian/pool/compon/a/pkg/file.name"1347 Packages::MAVEN_SNAPSHOT_DYNAMIC_PARTS1348 is expected to match "test-2.11-20230303.163304-1.jar"1349 is expected to match "test-2.11-20230303.163304-1-javadoc.jar"1350 is expected to match "test-2.11-20230303.163304-1-sources.jar"1351 is expected to match "test-2.11-20230303.163304-1-20230303.163304-1.jar"1352 is expected to match "test-2.11-20230303.163304-1-20230303.163304-1-javadoc.jar"1353 is expected to match "test-2.11-20230303.163304-1-20230303.163304-1-sources.jar"1354 is expected to match "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-20230303.163304-1-sources.jar"1355 is expected to match "test-2.11-20230303.163304-1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.jar"1356 is expected to match "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-20230303.163304-1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.jar"1357 is expected not to match ""1358 is expected not to match nil1359 is expected not to match "test"1360 is expected not to match "1.2.3"1361 is expected not to match "1.2.3-javadoc.jar"1362 is expected not to match "-202303039.163304-1.jar"1363 is expected not to match "test-2.11-202303039.163304-1.jar"1364 is expected not to match "test-2.11-20230303.16330-1.jar"1365 is expected not to match "test-2.11-202303039.163304.jar"1366 is expected not to match "test-2.11-202303039.163304-.jar"1367 is expected not to match "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-20230303.163304-1-sources.jar"1368 is expected not to match "test-2.11-20230303.163304-1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.jar"1369 is expected not to match "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-20230303.163304-1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.jar"1370 .composer_package_version_regex1371 is expected to match "v1.2.3"1372 is expected to match "v1.2.x"1373 is expected to match "v1.2.X"1374 is expected to match "1.2.3"1375 is expected to match "1"1376 is expected to match "v1"1377 is expected to match "1.2"1378 is expected to match "v1.2"1379 is expected not to match "1.2.3-beta"1380 is expected not to match "1.2.x-beta"1381 is expected not to match "1.2.X-beta"1382 is expected not to match "1.2.3-alpha.3"1383 is expected not to match "1./2.3"1384 is expected not to match "v1./2.3"1385 is expected not to match "../../../../../1.2.3"1386 is expected not to match "%2e%2e%2f1.2.3"1387 .sha256_regex1388 is expected to match "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"1389 is expected to match "abcdefABCDEF1234567890abcdefABCDEF1234567890abcdefABCDEF12345678"1390 is expected not to match "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"1391 is expected not to match "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"1392 is expected not to match "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag"1393 is expected not to match "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{"1394 is expected not to match "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%"1395 is expected not to match "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa*"1396 is expected not to match "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#"1397 is expected not to match ""1398 .sep_by_11399 is expected to match "abc"1400 is expected to match "abc.def"1401 is expected to match "abc.def.caf"1402 is expected to match "abc..def"1403 is expected to match "abc..def..caf"1404 is expected to match "abc...def"1405 is expected to match "abc....def........caf"1406 is expected to match "abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc"1407 is expected not to match ""1408 is expected not to match "a"1409 is expected not to match "aaaa"1410 is expected not to match "foo"1411 is expected not to match ".abc"1412 is expected not to match "abc."1413 is expected not to match ".abc.def"1414 is expected not to match "abc.def."1415 is expected not to match "abc.defe.caf"1416 is expected not to match "abc!abc"1417 is expected not to match "abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc.abc!"1418 .x509_subject_key_identifier_regex1419 is expected to match "AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB"1420 is expected to match "CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD"1421 is expected to match "79:FB:C1:E5:6B:53:8B:0A"1422 is expected to match "79:fb:c1:e5:6b:53:8b:0a"1423 is expected not to match ""1424 is expected not to match "CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:CD:GG"1425 is expected not to match "random string"1426 is expected not to match "12321342545356434523412341245452345623453542345234523453245"1427 code, html blocks, or html comment blocks regex1428 code blocks1429 is expected to match "```ruby\nsomething\n```"1430 is expected not to match "must start in first column ```ruby\nsomething\n```"1431 is expected not to match "```ruby must be multi-line ```"1432 is expected to eq "```code\nsome code\n\n>>>\nthat includes a multiline-blockquote\n>>>\n```"1433 HTML blocks1434 normal regular expression1435 is expected to match "<section>\nsomething\n</section>"1436 is expected not to match "must start in first column <section>\nsomething\n</section>"1437 is expected not to match "<section>must be multi-line</section>"1438 is expected to eq "<section>\n<p>paragraph</p>\n\n>>>\nthat includes a multiline-blockquote\n>>>\n</section>"1439 untrusted regular expression1440 is expected to match "<section>\nsomething\n</section>"1441 is expected not to match "must start in first column <section>\nsomething\n</section>"1442 is expected not to match "<section>must be multi-line</section>"1443 is expected to eq "<section>\n<p>paragraph</p>\n\n>>>\nthat includes a multiline-blockquote\n>>>\n</section>"1444 HTML comment lines1445 is expected to match "<!-- single line comment -->"1446 is expected not to match "<!--\nblock comment\n-->"1447 is expected not to match "must start in first column <!-- comment -->"1448 is expected to eq [["<!-- an HTML comment -->"], ["<!-- another HTML comment -->"]]1449 HTML comment blocks1450 is expected to match "<!--\ncomment\n-->"1451 is expected not to match "must start in first column <!--\ncomment\n-->"1452 is expected to eq "<!-- the start of an HTML comment\n- [ ] list item commented out\nmore text -->"1453Member1454 default values1455 is expected to eq 31456 Associations1457 is expected to belong to user required: false1458 is expected to belong to member_namespace required: false1459 is expected to have one member_task1460 Validation1461 is expected to validate that :user cannot be empty/falsy1462 is expected to validate that :source cannot be empty/falsy1463 expires_at1464 is expected not to allow :expires_at to be ‹Thu, 01 Jun 2023›1465 is expected to allow :expires_at to be ‹Sat, 03 Jun 2023›1466 is expected to allow :expires_at to be ‹Fri, 02 Jun 2023›1467 is expected to allow :expires_at to be ‹nil›1468 behaves like an object with email-formatted attributes1469 specifically its :invite_email attribute1470 with a value of 'info@example.com'1471 is valid1472 with a value of 'info+test@example.com'1473 is valid1474 with a value of 'o'reilly@example.com'1475 is valid1476 with a value of 'mailto:test@example.com'1477 is valid1478 with a value of 'lol!'+=?><#$%^&*()@gmail.com'1479 is valid1480 with a value of 'foobar'1481 is invalid1482 with a value of 'test@test@example.com'1483 is invalid1484 when an invite email is provided1485 doesn't require a user1486 requires a valid invite email1487 requires a unique invite email scoped to this source1488 when an invite email is not provided1489 requires a user1490 is valid otherwise1491 with admin signup restrictions1492 when allowed domains for signup is enabled1493 adds an error message when email is not accepted1494 when denylist is enabled1495 adds an error message when email is denied1496 when email restrictions is enabled1497 adds an error message when email is not accepted1498 when a child member inherits its access level1499 requires a higher level1500 is valid with an equal level1501 is valid with a higher level1502 project bots1503 not a member of any group or project1504 is valid1505 already member of a project1506 is not valid1507 Scopes & finders1508 .access_for_user_ids1509 returns the right access levels1510 .in_hierarchy1511 is expected to contain exactly #<GroupMember id: 91, access_level: 50, source_id: 842, source_type: "Namespace", user_id: 529, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 842, member_role_id: nil>, #<ProjectMember id: 93, access_level: 40, source_id: 98, source_type: "Project", user_id: 532, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 847, member_role_id: nil>, #<GroupMember id: 94, access_level: 50, source_id: 851, source_type: "Namespace", user_id: 534, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 851, member_role_id: nil>, and #<ProjectMember id: 96, access_level: 40, source_id: 100, source_type: "Project", user_id: 537, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 856, member_role_id: nil>1512 with scope prefix1513 is expected to contain exactly #<GroupMember id: 97, access_level: 50, source_id: 860, source_type: "Namespace", user_id: 539, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 860, member_role_id: nil>, #<GroupMember id: 100, access_level: 50, source_id: 869, source_type: "Namespace", user_id: 544, noti...verride: false, state: 0, invite_email_success: true, member_namespace_id: 869, member_role_id: nil>, and #<ProjectMember id: 102, access_level: 40, source_id: 104, source_type: "Project", user_id: 547, noti...verride: false, state: 0, invite_email_success: true, member_namespace_id: 874, member_role_id: nil>1514 with scope suffix1515 is expected to contain exactly #<GroupMember id: 103, access_level: 50, source_id: 878, source_type: "Namespace", user_id: 549, noti...verride: false, state: 0, invite_email_success: true, member_namespace_id: 878, member_role_id: nil>, #<GroupMember id: 106, access_level: 50, source_id: 887, source_type: "Namespace", user_id: 554, noti...verride: false, state: 0, invite_email_success: true, member_namespace_id: 887, member_role_id: nil>, and #<ProjectMember id: 108, access_level: 40, source_id: 108, source_type: "Project", user_id: 557, noti...verride: false, state: 0, invite_email_success: true, member_namespace_id: 892, member_role_id: nil>1516 .invite1517 is expected not to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1518 is expected to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1519 is expected not to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1520 is expected not to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1521 is expected not to include #<ProjectMember id: 89, access_level: 30, source_id: 93, source_type: "Project", user_id: 527, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1522 .non_invite1523 is expected to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1524 is expected not to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1525 is expected to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1526 is expected to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1527 is expected to include #<ProjectMember id: 89, access_level: 30, source_id: 93, source_type: "Project", user_id: 527, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1528 .non_minimal_access1529 is expected to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1530 is expected to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1531 is expected to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1532 is expected to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1533 is expected to include #<ProjectMember id: 89, access_level: 30, source_id: 93, source_type: "Project", user_id: 527, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1534 is expected not to include #<GroupMember id: 90, access_level: 5, source_id: 818, source_type: "Namespace", user_id: 528, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1535 .request1536 is expected not to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1537 is expected not to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1538 is expected not to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1539 is expected to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1540 is expected not to include #<ProjectMember id: 89, access_level: 30, source_id: 93, source_type: "Project", user_id: 527, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1541 .non_request1542 is expected to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1543 is expected to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1544 is expected to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1545 is expected not to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1546 is expected to include #<ProjectMember id: 89, access_level: 30, source_id: 93, source_type: "Project", user_id: 527, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1547 .not_accepted_invitations1548 is expected to include #<ProjectMember id: 110, access_level: 40, source_id: 110, source_type: "Project", user_id: nil, noti...verride: false, state: 0, invite_email_success: true, member_namespace_id: 898, member_role_id: nil>1549 is expected not to include #<ProjectMember id: 112, access_level: 40, source_id: 111, source_type: "Project", user_id: nil, noti...verride: false, state: 0, invite_email_success: true, member_namespace_id: 901, member_role_id: nil>1550 .not_accepted_invitations_by_user1551 is expected to contain exactly #<ProjectMember id: 118, access_level: 40, source_id: 93, source_type: "Project", user_id: nil, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1552 .not_expired1553 is expected not to include #<GroupMember id: 119, access_level: 50, source_id: 911, source_type: "Namespace", user_id: 569, noti...verride: false, state: 0, invite_email_success: true, member_namespace_id: 911, member_role_id: nil> and #<GroupMember id: 120, access_level: 50, source_id: 913, source_type: "Namespace", user_id: 570, noti...verride: false, state: 0, invite_email_success: true, member_namespace_id: 913, member_role_id: nil>1554 is expected to include #<GroupMember id: 121, access_level: 50, source_id: 915, source_type: "Namespace", user_id: 571, noti...verride: false, state: 0, invite_email_success: true, member_namespace_id: 915, member_role_id: nil> and #<GroupMember id: 122, access_level: 50, source_id: 917, source_type: "Namespace", user_id: 572, noti...verride: false, state: 0, invite_email_success: true, member_namespace_id: 917, member_role_id: nil>1555 .created_today1556 is expected not to include #<GroupMember id: 124, access_level: 50, source_id: 921, source_type: "Namespace", user_id: 574, noti...verride: false, state: 0, invite_email_success: true, member_namespace_id: 921, member_role_id: nil>1557 is expected to include #<GroupMember id: 123, access_level: 50, source_id: 919, source_type: "Namespace", user_id: 573, noti...verride: false, state: 0, invite_email_success: true, member_namespace_id: 919, member_role_id: nil>1558 .last_ten_days_excluding_today1559 is expected to include #<GroupMember id: 126, access_level: 50, source_id: 925, source_type: "Namespace", user_id: 576, noti...verride: false, state: 0, invite_email_success: true, member_namespace_id: 925, member_role_id: nil>1560 is expected not to include #<GroupMember id: 125, access_level: 50, source_id: 923, source_type: "Namespace", user_id: 575, noti...verride: false, state: 0, invite_email_success: true, member_namespace_id: 923, member_role_id: nil> and #<GroupMember id: 127, access_level: 50, source_id: 927, source_type: "Namespace", user_id: 577, noti...verride: false, state: 0, invite_email_success: true, member_namespace_id: 927, member_role_id: nil>1561 .search_invite_email1562 returns only members the matching e-mail1563 .by_access_level1564 by owner1565 is expected to include #<GroupMember id: 80, access_level: 50, source_id: 818, source_type: "Namespace", user_id: 517, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1566 is expected not to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1567 is expected not to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1568 is expected not to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1569 is expected not to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1570 is expected not to include nil1571 is expected not to include #<ProjectMember id: 82, access_level: 40, source_id: 93, source_type: "Project", user_id: 519, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1572 is expected not to include #<ProjectMember id: 83, access_level: 30, source_id: 93, source_type: "Project", user_id: 520, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1573 by maintainer1574 is expected not to include #<GroupMember id: 80, access_level: 50, source_id: 818, source_type: "Namespace", user_id: 517, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1575 is expected to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1576 is expected not to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1577 is expected not to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1578 is expected not to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1579 is expected not to include nil1580 is expected not to include #<ProjectMember id: 82, access_level: 40, source_id: 93, source_type: "Project", user_id: 519, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1581 is expected not to include #<ProjectMember id: 83, access_level: 30, source_id: 93, source_type: "Project", user_id: 520, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1582 by developer1583 is expected not to include #<GroupMember id: 80, access_level: 50, source_id: 818, source_type: "Namespace", user_id: 517, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1584 is expected not to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1585 is expected to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1586 is expected to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1587 is expected not to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1588 is expected not to include nil1589 is expected not to include #<ProjectMember id: 82, access_level: 40, source_id: 93, source_type: "Project", user_id: 519, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1590 is expected not to include #<ProjectMember id: 83, access_level: 30, source_id: 93, source_type: "Project", user_id: 520, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1591 by owner and maintainer1592 is expected to include #<GroupMember id: 80, access_level: 50, source_id: 818, source_type: "Namespace", user_id: 517, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1593 is expected to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1594 is expected not to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1595 is expected not to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1596 is expected not to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1597 is expected not to include nil1598 is expected not to include #<ProjectMember id: 82, access_level: 40, source_id: 93, source_type: "Project", user_id: 519, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1599 is expected not to include #<ProjectMember id: 83, access_level: 30, source_id: 93, source_type: "Project", user_id: 520, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1600 by owner, maintainer and developer1601 is expected to include #<GroupMember id: 80, access_level: 50, source_id: 818, source_type: "Namespace", user_id: 517, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1602 is expected to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1603 is expected to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1604 is expected to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1605 is expected not to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1606 is expected not to include nil1607 is expected not to include #<ProjectMember id: 82, access_level: 40, source_id: 93, source_type: "Project", user_id: 519, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1608 is expected not to include #<ProjectMember id: 83, access_level: 30, source_id: 93, source_type: "Project", user_id: 520, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1609 .developers1610 is expected not to include #<GroupMember id: 80, access_level: 50, source_id: 818, source_type: "Namespace", user_id: 517, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1611 is expected not to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1612 is expected to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1613 is expected to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1614 is expected not to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1615 is expected to include #<ProjectMember id: 89, access_level: 30, source_id: 93, source_type: "Project", user_id: 527, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1616 is expected not to include #<ProjectMember id: 82, access_level: 40, source_id: 93, source_type: "Project", user_id: 519, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1617 is expected not to include #<ProjectMember id: 83, access_level: 30, source_id: 93, source_type: "Project", user_id: 520, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1618 .owners_and_maintainers1619 is expected to include #<GroupMember id: 80, access_level: 50, source_id: 818, source_type: "Namespace", user_id: 517, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1620 is expected to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1621 is expected not to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1622 is expected not to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1623 is expected not to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1624 is expected not to include #<ProjectMember id: 89, access_level: 30, source_id: 93, source_type: "Project", user_id: 527, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1625 is expected not to include #<ProjectMember id: 82, access_level: 40, source_id: 93, source_type: "Project", user_id: 519, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1626 .has_access1627 is expected to include #<GroupMember id: 80, access_level: 50, source_id: 818, source_type: "Namespace", user_id: 517, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1628 is expected to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1629 is expected to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1630 is expected to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1631 is expected not to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1632 is expected to include #<ProjectMember id: 89, access_level: 30, source_id: 93, source_type: "Project", user_id: 527, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1633 is expected not to include #<ProjectMember id: 82, access_level: 40, source_id: 93, source_type: "Project", user_id: 519, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1634 is expected not to include #<ProjectMember id: 83, access_level: 30, source_id: 93, source_type: "Project", user_id: 520, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1635 .active1636 is expected to include #<GroupMember id: 80, access_level: 50, source_id: 818, source_type: "Namespace", user_id: 517, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1637 is expected to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1638 is expected to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1639 is expected to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1640 is expected not to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1641 is expected to include #<ProjectMember id: 89, access_level: 30, source_id: 93, source_type: "Project", user_id: 527, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1642 is expected not to include #<ProjectMember id: 82, access_level: 40, source_id: 93, source_type: "Project", user_id: 519, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1643 is expected not to include #<ProjectMember id: 83, access_level: 30, source_id: 93, source_type: "Project", user_id: 520, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1644 is expected not to include #<GroupMember id: 90, access_level: 5, source_id: 818, source_type: "Namespace", user_id: 528, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1645 .blocked1646 is expected not to include #<GroupMember id: 80, access_level: 50, source_id: 818, source_type: "Namespace", user_id: 517, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1647 is expected not to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1648 is expected not to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1649 is expected not to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1650 is expected not to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1651 is expected not to include #<ProjectMember id: 89, access_level: 30, source_id: 93, source_type: "Project", user_id: 527, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1652 is expected to include #<ProjectMember id: 82, access_level: 40, source_id: 93, source_type: "Project", user_id: 519, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1653 is expected to include #<ProjectMember id: 83, access_level: 30, source_id: 93, source_type: "Project", user_id: 520, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1654 is expected not to include #<GroupMember id: 90, access_level: 5, source_id: 818, source_type: "Namespace", user_id: 528, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1655 .active_without_invites_and_requests1656 is expected to include #<GroupMember id: 80, access_level: 50, source_id: 818, source_type: "Namespace", user_id: 517, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1657 is expected to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1658 is expected not to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1659 is expected to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1660 is expected not to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1661 is expected to include #<ProjectMember id: 89, access_level: 30, source_id: 93, source_type: "Project", user_id: 527, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1662 is expected not to include #<ProjectMember id: 82, access_level: 40, source_id: 93, source_type: "Project", user_id: 519, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1663 is expected not to include #<ProjectMember id: 83, access_level: 30, source_id: 93, source_type: "Project", user_id: 520, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1664 is expected not to include #<GroupMember id: 90, access_level: 5, source_id: 818, source_type: "Namespace", user_id: 528, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1665 .without_invites_and_requests1666 is expected to include #<GroupMember id: 80, access_level: 50, source_id: 818, source_type: "Namespace", user_id: 517, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1667 is expected to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1668 is expected not to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1669 is expected to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1670 is expected not to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1671 is expected to include #<ProjectMember id: 89, access_level: 30, source_id: 93, source_type: "Project", user_id: 527, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1672 is expected to include #<ProjectMember id: 82, access_level: 40, source_id: 93, source_type: "Project", user_id: 519, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1673 is expected to include #<ProjectMember id: 83, access_level: 30, source_id: 93, source_type: "Project", user_id: 520, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1674 is expected not to include #<GroupMember id: 90, access_level: 5, source_id: 818, source_type: "Namespace", user_id: 528, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1675 is expected not to include #<GroupMember id: 77, access_level: 50, source_id: 818, source_type: "Namespace", user_id: 514, notif...verride: false, state: 1, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1676 is expected not to include #<ProjectMember id: 79, access_level: 40, source_id: 93, source_type: "Project", user_id: 515, notifi...verride: false, state: 1, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1677 .connected_to_user1678 is expected to include #<GroupMember id: 80, access_level: 50, source_id: 818, source_type: "Namespace", user_id: 517, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1679 is expected to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1680 is expected to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1681 is expected to include #<ProjectMember id: 89, access_level: 30, source_id: 93, source_type: "Project", user_id: 527, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1682 is expected to include #<ProjectMember id: 82, access_level: 40, source_id: 93, source_type: "Project", user_id: 519, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1683 is expected to include #<ProjectMember id: 83, access_level: 30, source_id: 93, source_type: "Project", user_id: 520, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1684 is expected to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1685 is expected to include #<GroupMember id: 90, access_level: 5, source_id: 818, source_type: "Namespace", user_id: 528, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1686 is expected not to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1687 .authorizable1688 includes the member who has an associated user record,but also having an invite_token1689 is expected to include #<GroupMember id: 80, access_level: 50, source_id: 818, source_type: "Namespace", user_id: 517, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1690 is expected to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1691 is expected to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1692 is expected to include #<ProjectMember id: 89, access_level: 30, source_id: 93, source_type: "Project", user_id: 527, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1693 is expected to include #<ProjectMember id: 82, access_level: 40, source_id: 93, source_type: "Project", user_id: 519, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1694 is expected to include #<ProjectMember id: 83, access_level: 30, source_id: 93, source_type: "Project", user_id: 520, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1695 is expected not to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1696 is expected not to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1697 is expected not to include #<GroupMember id: 90, access_level: 5, source_id: 818, source_type: "Namespace", user_id: 528, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1698 is expected not to include #<GroupMember id: 77, access_level: 50, source_id: 818, source_type: "Namespace", user_id: 514, notif...verride: false, state: 1, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1699 is expected not to include #<ProjectMember id: 79, access_level: 40, source_id: 93, source_type: "Project", user_id: 515, notifi...verride: false, state: 1, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1700 .distinct_on_user_with_max_access_level1701 is expected not to include #<GroupMember id: 131, access_level: 30, source_id: 934, source_type: "Namespace", user_id: 517, noti...verride: false, state: 0, invite_email_success: true, member_namespace_id: 934, member_role_id: nil>1702 is expected to include #<GroupMember id: 80, access_level: 50, source_id: 818, source_type: "Namespace", user_id: 517, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1703 is expected to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1704 is expected to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1705 is expected to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1706 is expected to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1707 is expected to include #<ProjectMember id: 89, access_level: 30, source_id: 93, source_type: "Project", user_id: 527, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1708 is expected to include #<ProjectMember id: 82, access_level: 40, source_id: 93, source_type: "Project", user_id: 519, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1709 is expected to include #<ProjectMember id: 83, access_level: 30, source_id: 93, source_type: "Project", user_id: 520, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1710 is expected to include #<GroupMember id: 90, access_level: 5, source_id: 818, source_type: "Namespace", user_id: 528, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1711 with where conditions1712 is expected to eq [#<GroupMember id: 132, access_level: 50, source_id: 936, source_type: "Namespace", user_id: 581, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 936, member_role_id: nil>]1713 .with_invited_user_state1714 is expected to include #<GroupMember id: 80, access_level: 50, source_id: 818, source_type: "Namespace", user_id: 517, notif...verride: false, state: 0, invite_email_success: true, member_namespace_id: 818, member_role_id: nil>1715 is expected to include #<ProjectMember id: 81, access_level: 40, source_id: 93, source_type: "Project", user_id: 518, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1716 is expected to include #<ProjectMember id: 85, access_level: 30, source_id: 93, source_type: "Project", user_id: nil, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1717 is expected to include #<ProjectMember id: 87, access_level: 30, source_id: 93, source_type: "Project", user_id: 525, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1718 is expected to include #<ProjectMember id: 88, access_level: 30, source_id: 93, source_type: "Project", user_id: 526, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1719 is expected to include #<ProjectMember id: 89, access_level: 30, source_id: 93, source_type: "Project", user_id: 527, notifi...verride: false, state: 0, invite_email_success: true, member_namespace_id: 817, member_role_id: nil>1720 with invited pending members1721 includes invited user state1722 .active_state1723 includes members with an active state1724 does not include members with an awaiting state1725 .excluding_users1726 excludes members with given user ids1727 Delegate methods1728 is expected to respond to #user_name1729 is expected to respond to #user_email1730 .valid_email?1731 is a valid email format1732 is not a valid email format1733 .filter_by_user_type1734 when the user type is valid1735 returns service accounts1736 when the user type is invalid1737 returns nil1738 #accept_request1739 is expected to be truthy1740 is expected to be truthy1741 clears requested_at1742 saves the approving user1743 calls #after_accept_request1744 #invite?1745 is expected to be invite1746 #request?1747 when requests for project and group are raised1748 behaves like calls notification service and todo service1749 is expected to be request1750 behaves like calls notification service and todo service1751 is expected to be request1752 #pending?1753 is expected to be pending1754 is expected to be pending1755 #hook_prerequisites_met?1756 when the member does not have an associated user1757 returns false1758 when the member has an associated user1759 returns true1760 #accept_invite!1761 resets the invite token1762 sets the invite accepted timestamp1763 sets the user1764 calls #after_accept_invite1765 does not accept the invite if saving a new user fails1766 schedules a TasksToBeDone::CreateWorker task1767 authorized projects1768 successfully completes a refresh1769 #decline_invite!1770 destroys the member1771 calls #after_decline_invite1772 #generate_invite_token1773 sets the invite token1774 generate invite token on create1775 sets the invite token1776 when invite was already accepted1777 does not set invite token1778 .find_by_invite_token1779 finds the member1780 .pluck_user_ids1781 plucks the user ids1782 #send_invitation_reminder1783 an invited group member1784 sends a reminder1785 an invited member without a raw invite token set1786 generates a new token1787 an uninvited member1788 does not send a reminder1789 #invite_to_unknown_user?1790 when user is nil1791 is expected to eq true1792 when user is set1793 is expected to eq false1794 destroying a record1795 refreshes user's authorized projects1796 when after_commit :update_highest_role1797 member_type: :project_member, source_type: :project1798 create member1799 when lease is obtained1800 takes the lease but does not release it1801 schedules a job in the future1802 when lease cannot be obtained1803 only schedules one job1804 when member exists1805 update member1806 when access level was changed1807 when lease is obtained1808 takes the lease but does not release it1809 schedules a job in the future1810 when lease cannot be obtained1811 only schedules one job1812 when access level was not changed1813 does not obtain an exclusive lease1814 destroy member1815 when lease is obtained1816 takes the lease but does not release it1817 schedules a job in the future1818 when lease cannot be obtained1819 only schedules one job1820 member_type: :group_member, source_type: :group1821 create member1822 when lease is obtained1823 takes the lease but does not release it1824 schedules a job in the future1825 when lease cannot be obtained1826 only schedules one job1827 when member exists1828 update member1829 when access level was changed1830 when lease is obtained1831 takes the lease but does not release it1832 schedules a job in the future1833 when lease cannot be obtained1834 only schedules one job1835 when access level was not changed1836 does not obtain an exclusive lease1837 destroy member1838 when lease is obtained1839 takes the lease but does not release it1840 schedules a job in the future1841 when lease cannot be obtained1842 only schedules one job1843 log_invitation_token_cleanup1844 when on gitlab.com1845 doesn't log info for members without invitation or accepted invitation1846 logs error for accepted members with token and creates membership1847 when not on gitlab.com1848 does not log error for accepted members with token and creates membership1849 #set_member_namespace_id1850 on create1851 sets the member_namespace_id1852 .sort_by_attribute1853 sort users in ascending order by access-level1854 sort users in descending order by access-level1855 sorts users in descending order by their creation time1856 sorts users in ascending order by their creation time1857 sort users by recent last activity1858 sort users by oldest last activity1859 when sort by recent_sign_in1860 sorts users by recent sign-in time1861 pushes users who never signed in to the end1862 when sort by oldest_sign_in1863 sorts users by the oldest sign-in time1864 pushes users who never signed in to the end1865Gitlab::Git::Commit1866 Commit info from gitaly commit1867 is expected to eq "9a761b6c911"1868 is expected to eq "712a42bc29740415f5a65b795daf36f946b09670"1869 is expected to eq "4a0180229a5dcc9e1a2c580833d88fe63f81caba"1870 is expected to eq "My commitMy body"1871 is expected to eq 2023-06-02 06:30:20.000000000 +00001872 is expected to eq "user783@example.org"1873 is expected to eq "Sidney Jones783"1874 is expected to eq "Sidney Jones787"1875 is expected to eq "user793@example.org"1876 is expected to eq ["ad57ea3f3af5934fdbf365d32368b2dea38ecf74", "84d90e32510fc04ec8cf0275a1431a7380ddeb19"]1877 non-UTC dates1878 sets timezones correctly1879 body_size != body.size1880 zero body_size1881 is expected to eq "My commit"1882 body_size less than threshold1883 fetches commit message separately1884 body_size greater than threshold1885 returns the subject plus a notice about message size1886 large commit message1887 returns a String1888 Class methods1889 .find with Gitaly enabled1890 behaves like .find1891 returns first head commit if without params1892 returns valid commit1893 returns an array of parent ids1894 returns valid commit for tag1895 returns nil for non-commit ids1896 returns nil for parent of non-commit object1897 returns nil for nonexisting ids1898 returns nil for id started with dash1899 returns nil for id containing colon1900 returns nil for id containing space1901 returns nil for id containing tab1902 returns nil for id containing NULL1903 .find with Rugged enabled1904 calls out to the Rugged implementation1905 behaves like .find1906 returns first head commit if without params1907 returns valid commit1908 returns an array of parent ids1909 returns valid commit for tag1910 returns nil for non-commit ids1911 returns nil for parent of non-commit object1912 returns nil for nonexisting ids1913 returns nil for id started with dash1914 returns nil for id containing colon1915 returns nil for id containing space1916 returns nil for id containing tab1917 returns nil for id containing NULL1918 .last_for_path1919 no path1920 #id1921 is expected to eq "b83d6e391c22777fca1ed3012fce84f633d7fed0"1922 path1923 #id1924 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"1925 pathspec1926 with default literal_pathspec value1927 finds the seed commit1928 with literal_pathspec set to false1929 finds the seed commit1930 with literal_pathspec set to true1931 does not find the seed commit1932 ref + path1933 #id1934 is expected to eq "913c66a37b4a45b9769037c55c2d238bd0942d2e"1935 path is empty string1936 has 10 elements1937 is expected to include "b83d6e391c22777fca1ed3012fce84f633d7fed0"1938 path is nil1939 has 10 elements1940 is expected to include "b83d6e391c22777fca1ed3012fce84f633d7fed0"1941 ref is commit id1942 has 3 elements1943 is expected to include "2f63565e7aac07bcdadb654e253078b727143ec4"1944 is expected not to include "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"1945 ref is tag1946 has 3 elements1947 is expected to include "874797c3a73b60d2187ed6e2fcabd289ff75171e"1948 is expected not to include "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"1949 .between1950 requesting a single commit1951 is expected to contain exactly "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"1952 requesting a commit range1953 no limit1954 is expected to eq ["570e7b2abdd848b95f2f578043fc23bd6f6fd24d", "5937ac0a7beb003549fc5fd26fc247adbce4a52e"]1955 limited1956 is expected to eq ["5937ac0a7beb003549fc5fd26fc247adbce4a52e"]1957 .shas_with_signatures1958 has 2 signed shas1959 has 0 signed shas1960 has 1 signed sha1961 .find_all1962 returns a return a collection of commits1963 max_count1964 has maximum elements1965 ref + max_count + skip1966 has 36 elements1967 includes the expected commits1968 .batch_by_oid with Gitaly enabled1969 behaves like .batch_by_oid1970 with multiple OIDs1971 returns multiple commits1972 when repo does not exist1973 returns empty commits1974 when oids is empty1975 returns empty commits1976 when oids is empty1977 makes no Gitaly request1978 .batch_by_oid with Rugged enabled1979 calls out to the Rugged implementation1980 behaves like .batch_by_oid1981 with multiple OIDs1982 returns multiple commits1983 when repo does not exist1984 returns empty commits1985 when oids is empty1986 returns empty commits1987 .extract_signature_lazily1988 when the commit is signed1989 returns signature and signed text1990 when the commit has no signature1991 returns nil1992 when the commit cannot be found1993 returns nil1994 when the commit ID is invalid1995 raises ArgumentError1996 when loading signatures in batch once1997 fetches signatures in batch once1998 #init_from_hash1999 #id2000 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"2001 #message2002 is expected to eq "tree css fixes"2003 #stats2004 #additions2005 is expected to eq 112006 #deletions2007 is expected to eq 62008 #total2009 is expected to eq 172010 #gitaly_commit?2011 when the commit data comes from gitaly2012 is expected to eq true2013 when the commit data comes from a Hash2014 is expected to eq false2015 #has_zero_stats?2016 is expected to eq false2017 #to_hash2018 is expected to be a kind of Hash2019 #keys2020 is expected to match [:author_email, :author_name, :authored_date, :committed_date, :committer_email, :committer_name, :id, :message, :parent_ids, :referenced_by, :trailers]2021 #diffs2022 is expected to be a kind of Gitlab::Git::DiffCollection2023 is expected to eq 22024 is expected to be a kind of Gitlab::Git::Diff2025 #ref_names2026 has 3 elements2027 is expected to include "master"2028 is expected not to include "feature"2029 #first_ref_by_oid2030 is expected to eq "master"2031 .get_message2032 gets commit messages2033 gets messages in one batch2034Projects::CreateService#execute2035 calls the passed block2036 writes project full path to gitaly2037 triggers PostCreationWorker2038 with labels2039 creates labels on project creation2040 using gitlab project import2041 does not creates labels on project creation2042 setting name and path2043 when both are set2044 keeps them as specified2045 when path is set2046 sets name == path2047 when name is a valid path2048 sets path == name2049 when name is not a valid path2050 parameterizes the name2051 topics2052 with 'topics' parameter2053 keeps them as specified2054 with 'topic_list' parameter2055 keeps them as specified2056 with 'tag_list' parameter (deprecated)2057 keeps them as specified2058 user namespace2059 creates a project in user namespace2060 project_authorizations record creation2061 when the project_authrizations records are not created via the callback2062 still creates project_authrizations record for the user2063 when the passed in namespace is for a bot user2064 raises an error2065 after create actions2066 invalidate personal_projects_count caches2067 creates associated project settings2068 logs creation2069 publishes a ProjectCreatedEvent2070 behaves like storing arguments in the application context2071 places the expected params in the application context2072 admin creates project with other user's namespace_id2073 when admin mode is enabled2074 sets the correct permissions2075 when admin mode is disabled2076 is not allowed2077 group namespace2078 creates the project2079 behaves like has sync-ed traversal_ids2080 is expected to eq [1328, 1329]2081 when project is an import2082 when user is not allowed to import projects2083 does not create the project2084 group sharing2085 updates authorization2086 user with project limit2087 under personal namespace2088 cannot create a project2089 under group namespace2090 can create a project2091 membership overrides2092 membership is higher from group hierarchy2093 updates authorization2094 membership is higher from group share2095 share max access level is not limiting2096 updates authorization2097 share max access level is limiting2098 updates authorization2099 error handling2100 handles invalid options2101 wiki_enabled creates repository directory2102 wiki_enabled true creates wiki repository directory2103 is expected to be truthy2104 wiki_enabled false does not create wiki repository directory2105 is expected to be falsey2106 import data2107 does not write repository config2108 stores import data and URL2109 tracks for imported project2110 import scheduling2111 when project import type is gitlab project migration2112 does not schedule project import2113 builds_enabled global setting2114 global builds_enabled false does not enable CI by default2115 is expected to be falsey2116 global builds_enabled true does enable CI by default2117 is expected to be truthy2118 default visibility level2119 in public group2120 creates project with correct visibility level2121 in internal group2122 creates project with correct visibility level2123 in private group2124 creates project with correct visibility level2125 restricted visibility level2126 when visibility is project based2127 does not allow a restricted visibility level for non-admins2128 does not allow a restricted visibility level for admins when admin mode is disabled2129 allows a restricted visibility level for admins when admin mode is enabled2130 when visibility is overridden2131 does not allow a restricted visibility level for non-admins2132 does not allow a restricted visibility level for admins when admin mode is disabled2133 allows a restricted visibility level for admins when admin mode is enabled2134 when visibility is misspelled2135 does not restrict project creation2136 repository creation2137 synchronously creates the repository2138 when another repository already exists on disk2139 with legacy storage2140 does not allow to create a project when path matches existing repository on disk2141 does not allow to import project when path matches existing repository on disk2142 with hashed storage2143 does not allow to create a project when path matches existing repository on disk2144 when readme initialization is requested2145 behaves like a repo with a README.md2146 is expected to equal 12147 is expected to eql "README.md"2148 is expected to include "cd existing_repo\ngit remote add origin http://localhost/user224/GitLab.git\ngit branch -M master\ngit push -uf origin master\n"2149 and a readme_template is specified2150 behaves like a repo with a README.md2151 is expected to equal 12152 is expected to eql "README.md"2153 is expected to include "# GitLab\nThis is customized readme."2154 and default_branch is specified2155 creates the correct branch2156 behaves like a repo with a README.md2157 is expected to equal 12158 is expected to eql "README.md"2159 is expected to include "cd existing_repo\ngit remote add origin http://localhost/user231/GitLab.git\ngit branch -M example_branch\ngit push -uf origin example_branch\n"2160 and the default branch setting is configured2161 creates the correct branch2162 behaves like a repo with a README.md2163 is expected to equal 12164 is expected to eql "README.md"2165 is expected to include "cd existing_repo\ngit remote add origin http://localhost/user235/GitLab.git\ngit branch -M example_branch\ngit push -uf origin example_branch\n"2166 when SAST initialization is requested2167 creates a commit for SAST2168 create integration for the project2169 with an active instance-level integration2170 creates an integration from the instance-level integration2171 with an active group-level integration2172 creates an integration from the group-level integration2173 with an active subgroup2174 creates an integration from the subgroup-level integration2175 when skip_disk_validation is used2176 sets the project attribute2177 when import source is enabled2178 does not raise an error when import_source is string2179 does not raise an error when import_source is symbol2180 when import source is disabled2181 raises an error2182 with external authorization enabled2183 does not save the project with an error if the service denies access2184 saves the project when the user has access to the label2185 does not save the project when the user has no access to the default label and no label is provided2186 with specialized project_authorization workers2187 updates authorization for current_user2188 schedules authorization update for users with access to group2189 shared Runners config2190 when parent group is present2191 default value based on parent group setting2192 shared_runners_setting: "enabled", desired_config_for_new_project: nil, expected_result_for_project: true2193 creates project following the parent config2194 shared_runners_setting: "disabled_with_override", desired_config_for_new_project: nil, expected_result_for_project: false2195 creates project following the parent config2196 shared_runners_setting: "disabled_and_overridable", desired_config_for_new_project: nil, expected_result_for_project: false2197 creates project following the parent config2198 shared_runners_setting: "disabled_and_unoverridable", desired_config_for_new_project: nil, expected_result_for_project: false2199 creates project following the parent config2200 parent group is present and allows desired config2201 shared_runners_setting: "enabled", desired_config_for_new_project: true, expected_result_for_project: true2202 creates project following the parent config2203 shared_runners_setting: "enabled", desired_config_for_new_project: false, expected_result_for_project: false2204 creates project following the parent config2205 shared_runners_setting: "disabled_with_override", desired_config_for_new_project: false, expected_result_for_project: false2206 creates project following the parent config2207 shared_runners_setting: "disabled_with_override", desired_config_for_new_project: true, expected_result_for_project: true2208 creates project following the parent config2209 shared_runners_setting: "disabled_and_overridable", desired_config_for_new_project: false, expected_result_for_project: false2210 creates project following the parent config2211 shared_runners_setting: "disabled_and_overridable", desired_config_for_new_project: true, expected_result_for_project: true2212 creates project following the parent config2213 shared_runners_setting: "disabled_and_unoverridable", desired_config_for_new_project: false, expected_result_for_project: false2214 creates project following the parent config2215 parent group is present and disallows desired config2216 shared_runners_setting: "disabled_and_unoverridable", desired_config_for_new_project: true2217 does not create project2218 parent group is not present2219 desired_config: true, expected_result: true2220 follows desired config2221 desired_config: false, expected_result: false2222 follows desired config2223 desired_config: nil, expected_result: true2224 follows desired config2225 when using access_level params2226 when using issues2227 when using forking2228 when using merge_requests2229 when using wiki2230 when using snippets2231 when using builds2232 when using pages2233 when using metrics_dashboard2234 when using analytics2235 when using monitor2236 when using operations2237 when using security_and_compliance2238 when using container_registry2239 when using environments2240 when using feature_flags2241 when using releases2242 when using infrastructure2243 when using model_experiments2244 when using repository2245Gitlab::ImportExport::Group::TreeRestorer2246 restore group tree2247 has the group description2248 has group labels2249 has badges2250 has milestones2251 has group children2252 has group members2253 issue boards2254 has issue boards2255 has board label lists2256 child with no parent2257 captures import failures when a child group does not have a valid parent_id2258 when child group creation fails2259 captures import failure2260 excluded attributes2261 does not import root group name2262 does not import root group path2263 does not allow override of excluded attributes2264 does not allow override of excluded attributes2265 does not allow override of excluded attributes2266 does not allow override of excluded attributes2267 does not allow override of excluded attributes2268 does not allow override of excluded attributes2269 does not allow override of excluded attributes2270 does not allow override of excluded attributes2271 group.json file access check2272 does not read a symlink2273 group visibility levels2274 when visibility level is public2275 imports all subgroups as public2276 when visibility level is private2277 imports all subgroups as private2278 when visibility level is internal2279 imports all subgroups as internal2280IntegrationsHelper2281 #integration_event_title2282 behaves like is defined for each integration event2283 when integration is buildkite, event is push2284 is expected not to be nil2285 when integration is buildkite, event is merge_request2286 is expected not to be nil2287 when integration is buildkite, event is tag_push2288 is expected not to be nil2289 when integration is discord, event is push2290 is expected not to be nil2291 when integration is discord, event is issue2292 is expected not to be nil2293 when integration is discord, event is confidential_issue2294 is expected not to be nil2295 when integration is discord, event is merge_request2296 is expected not to be nil2297 when integration is discord, event is note2298 is expected not to be nil2299 when integration is discord, event is confidential_note2300 is expected not to be nil2301 when integration is discord, event is tag_push2302 is expected not to be nil2303 when integration is discord, event is pipeline2304 is expected not to be nil2305 when integration is discord, event is wiki_page2306 is expected not to be nil2307 when integration is drone_ci, event is push2308 is expected not to be nil2309 when integration is drone_ci, event is merge_request2310 is expected not to be nil2311 when integration is drone_ci, event is tag_push2312 is expected not to be nil2313 when integration is emails_on_push, event is push2314 is expected not to be nil2315 when integration is emails_on_push, event is tag_push2316 is expected not to be nil2317 when integration is hangouts_chat, event is push2318 is expected not to be nil2319 when integration is hangouts_chat, event is issue2320 is expected not to be nil2321 when integration is hangouts_chat, event is confidential_issue2322 is expected not to be nil2323 when integration is hangouts_chat, event is merge_request2324 is expected not to be nil2325 when integration is hangouts_chat, event is note2326 is expected not to be nil2327 when integration is hangouts_chat, event is confidential_note2328 is expected not to be nil2329 when integration is hangouts_chat, event is tag_push2330 is expected not to be nil2331 when integration is hangouts_chat, event is pipeline2332 is expected not to be nil2333 when integration is hangouts_chat, event is wiki_page2334 is expected not to be nil2335 when integration is jenkins, event is push2336 is expected not to be nil2337 when integration is jenkins, event is merge_request2338 is expected not to be nil2339 when integration is jenkins, event is tag_push2340 is expected not to be nil2341 when integration is jira, event is commit2342 is expected not to be nil2343 when integration is jira, event is merge_request2344 is expected not to be nil2345 when integration is mattermost, event is push2346 is expected not to be nil2347 when integration is mattermost, event is issue2348 is expected not to be nil2349 when integration is mattermost, event is confidential_issue2350 is expected not to be nil2351 when integration is mattermost, event is merge_request2352 is expected not to be nil2353 when integration is mattermost, event is note2354 is expected not to be nil2355 when integration is mattermost, event is confidential_note2356 is expected not to be nil2357 when integration is mattermost, event is tag_push2358 is expected not to be nil2359 when integration is mattermost, event is pipeline2360 is expected not to be nil2361 when integration is mattermost, event is wiki_page2362 is expected not to be nil2363 when integration is mattermost, event is deployment2364 is expected not to be nil2365 when integration is mattermost, event is incident2366 is expected not to be nil2367 when integration is mattermost, event is vulnerability2368 is expected not to be nil2369 when integration is microsoft_teams, event is push2370 is expected not to be nil2371 when integration is microsoft_teams, event is issue2372 is expected not to be nil2373 when integration is microsoft_teams, event is confidential_issue2374 is expected not to be nil2375 when integration is microsoft_teams, event is merge_request2376 is expected not to be nil2377 when integration is microsoft_teams, event is note2378 is expected not to be nil2379 when integration is microsoft_teams, event is confidential_note2380 is expected not to be nil2381 when integration is microsoft_teams, event is tag_push2382 is expected not to be nil2383 when integration is microsoft_teams, event is pipeline2384 is expected not to be nil2385 when integration is microsoft_teams, event is wiki_page2386 is expected not to be nil2387 when integration is packagist, event is push2388 is expected not to be nil2389 when integration is packagist, event is merge_request2390 is expected not to be nil2391 when integration is packagist, event is tag_push2392 is expected not to be nil2393 when integration is pumble, event is push2394 is expected not to be nil2395 when integration is pumble, event is issue2396 is expected not to be nil2397 when integration is pumble, event is confidential_issue2398 is expected not to be nil2399 when integration is pumble, event is merge_request2400 is expected not to be nil2401 when integration is pumble, event is note2402 is expected not to be nil2403 when integration is pumble, event is confidential_note2404 is expected not to be nil2405 when integration is pumble, event is tag_push2406 is expected not to be nil2407 when integration is pumble, event is pipeline2408 is expected not to be nil2409 when integration is pumble, event is wiki_page2410 is expected not to be nil2411 when integration is slack, event is push2412 is expected not to be nil2413 when integration is slack, event is issue2414 is expected not to be nil2415 when integration is slack, event is confidential_issue2416 is expected not to be nil2417 when integration is slack, event is merge_request2418 is expected not to be nil2419 when integration is slack, event is note2420 is expected not to be nil2421 when integration is slack, event is confidential_note2422 is expected not to be nil2423 when integration is slack, event is tag_push2424 is expected not to be nil2425 when integration is slack, event is pipeline2426 is expected not to be nil2427 when integration is slack, event is wiki_page2428 is expected not to be nil2429 when integration is slack, event is deployment2430 is expected not to be nil2431 when integration is slack, event is incident2432 is expected not to be nil2433 when integration is slack, event is vulnerability2434 is expected not to be nil2435 when integration is slack, event is alert2436 is expected not to be nil2437 when integration is squash_tm, event is issue2438 is expected not to be nil2439 when integration is squash_tm, event is confidential_issue2440 is expected not to be nil2441 when integration is teamcity, event is push2442 is expected not to be nil2443 when integration is teamcity, event is merge_request2444 is expected not to be nil2445 when integration is unify_circuit, event is push2446 is expected not to be nil2447 when integration is unify_circuit, event is issue2448 is expected not to be nil2449 when integration is unify_circuit, event is confidential_issue2450 is expected not to be nil2451 when integration is unify_circuit, event is merge_request2452 is expected not to be nil2453 when integration is unify_circuit, event is note2454 is expected not to be nil2455 when integration is unify_circuit, event is confidential_note2456 is expected not to be nil2457 when integration is unify_circuit, event is tag_push2458 is expected not to be nil2459 when integration is unify_circuit, event is pipeline2460 is expected not to be nil2461 when integration is unify_circuit, event is wiki_page2462 is expected not to be nil2463 when integration is webex_teams, event is push2464 is expected not to be nil2465 when integration is webex_teams, event is issue2466 is expected not to be nil2467 when integration is webex_teams, event is confidential_issue2468 is expected not to be nil2469 when integration is webex_teams, event is merge_request2470 is expected not to be nil2471 when integration is webex_teams, event is note2472 is expected not to be nil2473 when integration is webex_teams, event is confidential_note2474 is expected not to be nil2475 when integration is webex_teams, event is tag_push2476 is expected not to be nil2477 when integration is webex_teams, event is pipeline2478 is expected not to be nil2479 when integration is webex_teams, event is wiki_page2480 is expected not to be nil2481 #integration_event_description2482 behaves like is defined for each integration event2483 when integration is buildkite, event is push2484 is expected not to be nil2485 when integration is buildkite, event is merge_request2486 is expected not to be nil2487 when integration is buildkite, event is tag_push2488 is expected not to be nil2489 when integration is discord, event is push2490 is expected not to be nil2491 when integration is discord, event is issue2492 is expected not to be nil2493 when integration is discord, event is confidential_issue2494 is expected not to be nil2495 when integration is discord, event is merge_request2496 is expected not to be nil2497 when integration is discord, event is note2498 is expected not to be nil2499 when integration is discord, event is confidential_note2500 is expected not to be nil2501 when integration is discord, event is tag_push2502 is expected not to be nil2503 when integration is discord, event is pipeline2504 is expected not to be nil2505 when integration is discord, event is wiki_page2506 is expected not to be nil2507 when integration is drone_ci, event is push2508 is expected not to be nil2509 when integration is drone_ci, event is merge_request2510 is expected not to be nil2511 when integration is drone_ci, event is tag_push2512 is expected not to be nil2513 when integration is emails_on_push, event is push2514 is expected not to be nil2515 when integration is emails_on_push, event is tag_push2516 is expected not to be nil2517 when integration is hangouts_chat, event is push2518 is expected not to be nil2519 when integration is hangouts_chat, event is issue2520 is expected not to be nil2521 when integration is hangouts_chat, event is confidential_issue2522 is expected not to be nil2523 when integration is hangouts_chat, event is merge_request2524 is expected not to be nil2525 when integration is hangouts_chat, event is note2526 is expected not to be nil2527 when integration is hangouts_chat, event is confidential_note2528 is expected not to be nil2529 when integration is hangouts_chat, event is tag_push2530 is expected not to be nil2531 when integration is hangouts_chat, event is pipeline2532 is expected not to be nil2533 when integration is hangouts_chat, event is wiki_page2534 is expected not to be nil2535 when integration is jenkins, event is push2536 is expected not to be nil2537 when integration is jenkins, event is merge_request2538 is expected not to be nil2539 when integration is jenkins, event is tag_push2540 is expected not to be nil2541 when integration is jira, event is commit2542 is expected not to be nil2543 when integration is jira, event is merge_request2544 is expected not to be nil2545 when integration is mattermost, event is push2546 is expected not to be nil2547 when integration is mattermost, event is issue2548 is expected not to be nil2549 when integration is mattermost, event is confidential_issue2550 is expected not to be nil2551 when integration is mattermost, event is merge_request2552 is expected not to be nil2553 when integration is mattermost, event is note2554 is expected not to be nil2555 when integration is mattermost, event is confidential_note2556 is expected not to be nil2557 when integration is mattermost, event is tag_push2558 is expected not to be nil2559 when integration is mattermost, event is pipeline2560 is expected not to be nil2561 when integration is mattermost, event is wiki_page2562 is expected not to be nil2563 when integration is mattermost, event is deployment2564 is expected not to be nil2565 when integration is mattermost, event is incident2566 is expected not to be nil2567 when integration is mattermost, event is vulnerability2568 is expected not to be nil2569 when integration is microsoft_teams, event is push2570 is expected not to be nil2571 when integration is microsoft_teams, event is issue2572 is expected not to be nil2573 when integration is microsoft_teams, event is confidential_issue2574 is expected not to be nil2575 when integration is microsoft_teams, event is merge_request2576 is expected not to be nil2577 when integration is microsoft_teams, event is note2578 is expected not to be nil2579 when integration is microsoft_teams, event is confidential_note2580 is expected not to be nil2581 when integration is microsoft_teams, event is tag_push2582 is expected not to be nil2583 when integration is microsoft_teams, event is pipeline2584 is expected not to be nil2585 when integration is microsoft_teams, event is wiki_page2586 is expected not to be nil2587 when integration is packagist, event is push2588 is expected not to be nil2589 when integration is packagist, event is merge_request2590 is expected not to be nil2591 when integration is packagist, event is tag_push2592 is expected not to be nil2593 when integration is pumble, event is push2594 is expected not to be nil2595 when integration is pumble, event is issue2596 is expected not to be nil2597 when integration is pumble, event is confidential_issue2598 is expected not to be nil2599 when integration is pumble, event is merge_request2600 is expected not to be nil2601 when integration is pumble, event is note2602 is expected not to be nil2603 when integration is pumble, event is confidential_note2604 is expected not to be nil2605 when integration is pumble, event is tag_push2606 is expected not to be nil2607 when integration is pumble, event is pipeline2608 is expected not to be nil2609 when integration is pumble, event is wiki_page2610 is expected not to be nil2611 when integration is slack, event is push2612 is expected not to be nil2613 when integration is slack, event is issue2614 is expected not to be nil2615 when integration is slack, event is confidential_issue2616 is expected not to be nil2617 when integration is slack, event is merge_request2618 is expected not to be nil2619 when integration is slack, event is note2620 is expected not to be nil2621 when integration is slack, event is confidential_note2622 is expected not to be nil2623 when integration is slack, event is tag_push2624 is expected not to be nil2625 when integration is slack, event is pipeline2626 is expected not to be nil2627 when integration is slack, event is wiki_page2628 is expected not to be nil2629 when integration is slack, event is deployment2630 is expected not to be nil2631 when integration is slack, event is incident2632 is expected not to be nil2633 when integration is slack, event is vulnerability2634 is expected not to be nil2635 when integration is slack, event is alert2636 is expected not to be nil2637 when integration is squash_tm, event is issue2638 is expected not to be nil2639 when integration is squash_tm, event is confidential_issue2640 is expected not to be nil2641 when integration is teamcity, event is push2642 is expected not to be nil2643 when integration is teamcity, event is merge_request2644 is expected not to be nil2645 when integration is unify_circuit, event is push2646 is expected not to be nil2647 when integration is unify_circuit, event is issue2648 is expected not to be nil2649 when integration is unify_circuit, event is confidential_issue2650 is expected not to be nil2651 when integration is unify_circuit, event is merge_request2652 is expected not to be nil2653 when integration is unify_circuit, event is note2654 is expected not to be nil2655 when integration is unify_circuit, event is confidential_note2656 is expected not to be nil2657 when integration is unify_circuit, event is tag_push2658 is expected not to be nil2659 when integration is unify_circuit, event is pipeline2660 is expected not to be nil2661 when integration is unify_circuit, event is wiki_page2662 is expected not to be nil2663 when integration is webex_teams, event is push2664 is expected not to be nil2665 when integration is webex_teams, event is issue2666 is expected not to be nil2667 when integration is webex_teams, event is confidential_issue2668 is expected not to be nil2669 when integration is webex_teams, event is merge_request2670 is expected not to be nil2671 when integration is webex_teams, event is note2672 is expected not to be nil2673 when integration is webex_teams, event is confidential_note2674 is expected not to be nil2675 when integration is webex_teams, event is tag_push2676 is expected not to be nil2677 when integration is webex_teams, event is pipeline2678 is expected not to be nil2679 when integration is webex_teams, event is wiki_page2680 is expected not to be nil2681 when integration is Jira2682 is expected to include "Jira"2683 when integration is Team City2684 is expected to include "TeamCity"2685 #integration_form_data2686 with Slack integration2687 is expected to include :id, :show_active, :activated, :activate_disabled, :type, :merge_request_events, :commit_events, :enable_comments, :comment_detail, :learn_more_path, :about_pricing_url, :trigger_events, :fields, :inherit_from_id, :integration_level, :editable, :cancel_path, :can_test, :test_path, :reset_path, :form_path, and :redirect_to2688 is expected not to include :jira_issue_transition_automatic and :jira_issue_transition_id2689 is expected to eq ""2690 is expected to eq "/services"2691 Jira service2692 is expected to include :id, :show_active, :activated, :activate_disabled, :type, :merge_request_events, :commit_events, :enable_comments, :comment_detail, :learn_more_path, :about_pricing_url, :trigger_events, :fields, :inherit_from_id, :integration_level, :editable, :cancel_path, :can_test, :test_path, :reset_path, :form_path, :redirect_to, :jira_issue_transition_automatic, and :jira_issue_transition_id2693 #integration_overrides_data2694 is expected to include {:edit_path => "/admin/application_settings/integrations/jira/edit", :overrides_path => "/admin/application_settings/integrations/jira/overrides.json"}2695 #scoped_reset_integration_path2696 when no group is present2697 returns instance-level path2698 when group is present2699 returns group-level path2700 when a new integration is not persisted2701 returns an empty string2702 #integration_issue_type2703 only consider these enumeration values are valid2704 issue_type: "issue", expected_i18n_issue_type: "Issue"2705 return the correct i18n issue type2706 issue_type: "incident", expected_i18n_issue_type: "Incident"2707 return the correct i18n issue type2708 issue_type: "test_case", expected_i18n_issue_type: "Test case"2709 return the correct i18n issue type2710 issue_type: "requirement", expected_i18n_issue_type: "Requirement"2711 return the correct i18n issue type2712 issue_type: "task", expected_i18n_issue_type: "Task"2713 return the correct i18n issue type2714 #integration_todo_target_type2715 target_type: "Commit", expected_i18n_target_type: "Commit"2716 is expected to eq "Commit"2717 target_type: "Issue", expected_i18n_target_type: "Issue"2718 is expected to eq "Issue"2719 target_type: "MergeRequest", expected_i18n_target_type: "Merge Request"2720 is expected to eq "Merge Request"2721 target_type: "Epic", expected_i18n_target_type: "Epic"2722 is expected to eq "Epic"2723 target_type: "DesignManagement::Design", expected_i18n_target_type: "design"2724 is expected to eq "design"2725 target_type: "AlertManagement::Alert", expected_i18n_target_type: "alert"2726 is expected to eq "alert"2727Gitlab::Kubernetes::KubeClient2728 .graceful_request2729 successful2730 returns connected status and foo response2731 errored2732 error: SocketError, connection_status: :unreachable, error_status: :connection_error2733 returns error status2734 error: OpenSSL::X509::CertificateError, connection_status: :authentication_failure, error_status: :authentication_error2735 returns error status2736 error: StandardError, connection_status: :unknown_failure, error_status: :unknown_error2737 returns error status2738 error: #<Kubeclient::HttpError: HTTP status code 408, timed out>, connection_status: :unreachable, error_status: :http_error2739 returns error status2740 error: #<Kubeclient::HttpError: HTTP status code 408, timeout>, connection_status: :unreachable, error_status: :http_error2741 returns error status2742 error: #<Kubeclient::HttpError: HTTP status code 408, >, connection_status: :authentication_failure, error_status: :http_error2743 returns error status2744 #initialize2745 falls back to default options, but allows overriding2746 localhost address2747 behaves like local address2748 blocks local addresses2749 when local requests are allowed2750 allows local addresses2751 private network address2752 behaves like local address2753 blocks local addresses2754 when local requests are allowed2755 allows local addresses2756 when a non HTTP/HTTPS URL is provided2757 raises an error2758 #core_client2759 has the core API endpoint2760 has the api_version2761 behaves like a Kubeclient2762 is a Kubeclient::Client2763 has the kubeclient options2764 #rbac_client2765 has the RBAC API group endpoint2766 has the api_version2767 behaves like a Kubeclient2768 is a Kubeclient::Client2769 has the kubeclient options2770 #istio_client2771 has the Istio API group endpoint2772 has the api_version2773 behaves like a Kubeclient2774 is a Kubeclient::Client2775 has the kubeclient options2776 #knative_client2777 has the extensions API group endpoint2778 has the api_version2779 behaves like a Kubeclient2780 is a Kubeclient::Client2781 has the kubeclient options2782 #networking_client2783 has the networking API group endpoint2784 has the api_version2785 behaves like a Kubeclient2786 is a Kubeclient::Client2787 has the kubeclient options2788 #metrics_client2789 has the metrics API group endpoint2790 has the api_version2791 behaves like a Kubeclient2792 is a Kubeclient::Client2793 has the kubeclient options2794 core API2795 #get_nodes2796 does not allow DNS rebinding2797 delegates to the core client2798 responds to the method2799 api_url is redirected2800 does not follow redirects2801 #get_pods2802 does not allow DNS rebinding2803 delegates to the core client2804 responds to the method2805 api_url is redirected2806 does not follow redirects2807 #get_secrets2808 does not allow DNS rebinding2809 delegates to the core client2810 responds to the method2811 api_url is redirected2812 does not follow redirects2813 #get_config_map2814 does not allow DNS rebinding2815 delegates to the core client2816 responds to the method2817 api_url is redirected2818 does not follow redirects2819 #get_pod2820 does not allow DNS rebinding2821 delegates to the core client2822 responds to the method2823 api_url is redirected2824 does not follow redirects2825 #get_namespace2826 does not allow DNS rebinding2827 delegates to the core client2828 responds to the method2829 api_url is redirected2830 does not follow redirects2831 #get_secret2832 does not allow DNS rebinding2833 delegates to the core client2834 responds to the method2835 api_url is redirected2836 does not follow redirects2837 #get_service2838 does not allow DNS rebinding2839 delegates to the core client2840 responds to the method2841 api_url is redirected2842 does not follow redirects2843 #get_service_account2844 does not allow DNS rebinding2845 delegates to the core client2846 responds to the method2847 api_url is redirected2848 does not follow redirects2849 #delete_namespace2850 does not allow DNS rebinding2851 delegates to the core client2852 responds to the method2853 api_url is redirected2854 does not follow redirects2855 #delete_pod2856 does not allow DNS rebinding2857 delegates to the core client2858 responds to the method2859 api_url is redirected2860 does not follow redirects2861 #delete_service_account2862 does not allow DNS rebinding2863 delegates to the core client2864 responds to the method2865 api_url is redirected2866 does not follow redirects2867 #create_config_map2868 does not allow DNS rebinding2869 delegates to the core client2870 responds to the method2871 api_url is redirected2872 does not follow redirects2873 #create_namespace2874 does not allow DNS rebinding2875 delegates to the core client2876 responds to the method2877 api_url is redirected2878 does not follow redirects2879 #create_pod2880 does not allow DNS rebinding2881 delegates to the core client2882 responds to the method2883 api_url is redirected2884 does not follow redirects2885 #create_secret2886 does not allow DNS rebinding2887 delegates to the core client2888 responds to the method2889 api_url is redirected2890 does not follow redirects2891 #create_service_account2892 does not allow DNS rebinding2893 delegates to the core client2894 responds to the method2895 api_url is redirected2896 does not follow redirects2897 #update_config_map2898 does not allow DNS rebinding2899 delegates to the core client2900 responds to the method2901 api_url is redirected2902 does not follow redirects2903 #update_secret2904 does not allow DNS rebinding2905 delegates to the core client2906 responds to the method2907 api_url is redirected2908 does not follow redirects2909 #update_service_account2910 does not allow DNS rebinding2911 delegates to the core client2912 responds to the method2913 api_url is redirected2914 does not follow redirects2915 rbac API group2916 #create_role2917 does not allow DNS rebinding2918 delegates to the rbac client2919 responds to the method2920 api_url is redirected2921 does not follow redirects2922 #get_role2923 does not allow DNS rebinding2924 delegates to the rbac client2925 responds to the method2926 api_url is redirected2927 does not follow redirects2928 #update_role2929 does not allow DNS rebinding2930 delegates to the rbac client2931 responds to the method2932 api_url is redirected2933 does not follow redirects2934 #delete_role_binding2935 does not allow DNS rebinding2936 delegates to the rbac client2937 responds to the method2938 api_url is redirected2939 does not follow redirects2940 #update_role_binding2941 does not allow DNS rebinding2942 delegates to the rbac client2943 responds to the method2944 api_url is redirected2945 does not follow redirects2946 #update_cluster_role_binding2947 does not allow DNS rebinding2948 delegates to the rbac client2949 responds to the method2950 api_url is redirected2951 does not follow redirects2952 apps/v1 API group2953 get_deployments2954 does not allow DNS rebinding2955 delegates to the apps client2956 responds to the method2957 api_url is redirected2958 does not follow redirects2959 networking.k8s.io/v1 API group2960 #get_ingresses2961 does not allow DNS rebinding2962 delegates to the networking client2963 responds to the method2964 api_url is redirected2965 does not follow redirects2966 #patch_ingress2967 does not allow DNS rebinding2968 delegates to the networking client2969 responds to the method2970 api_url is redirected2971 does not follow redirects2972 istio API group2973 #create_gateway2974 does not allow DNS rebinding2975 delegates to the istio client2976 responds to the method2977 api_url is redirected2978 does not follow redirects2979 #get_gateway2980 does not allow DNS rebinding2981 delegates to the istio client2982 responds to the method2983 api_url is redirected2984 does not follow redirects2985 #update_gateway2986 does not allow DNS rebinding2987 delegates to the istio client2988 responds to the method2989 api_url is redirected2990 does not follow redirects2991 non-entity methods2992 does not proxy for non-entity methods2993 throws an error2994 #get_pod_log2995 is delegated to the core client2996 #watch_pod_log2997 is delegated to the core client2998 #create_or_update_cluster_role_binding2999 behaves like create_or_update method using put3000 calls the update method3001 #create_or_update_role_binding3002 behaves like create_or_update method using put3003 calls the update method3004 #create_or_update_service_account3005 behaves like create_or_update method3006 resource exists3007 calls the update method3008 resource does not exist3009 calls the create method3010 #create_or_update_secret3011 behaves like create_or_update method3012 resource exists3013 calls the update method3014 resource does not exist3015 calls the create method3016 methods that do not exist on any client3017 throws an error3018 returns false for respond_to3019TodosFinder3020 #execute3021 #execute3022 returns no todos if user is nil3023 filtering3024 returns correct todos when filtered by a project3025 returns correct todos when filtered by a group3026 when filtering by type3027 returns todos by type when filtered by a single type3028 returns todos by type when filtered by multiple types3029 returns all todos when type is nil3030 returns all todos when type is an empty collection3031 returns all todos when type is blank3032 returns todos by type when blank type is in type collection3033 returns todos of all types when only blanks are in a collection3034 returns all todos when no type param3035 raises an argument error when invalid type is passed3036 when filtering for actions3037 by action ids3038 returns the expected todos3039 returns the expected todos when filtering for multiple action ids3040 by action names3041 returns the expected todos3042 returns the expected todos when filtering for multiple action names3043 when filtering by author3044 returns correct todos when filtering by an author3045 querying for multiple authors3046 returns the correct todo items3047 by groups3048 with subgroups3049 returns todos from subgroups when filtered by a group3050 filtering for multiple groups3051 returns the expected groups3052 by state3053 returns the expected items when no state is provided3054 returns the expected items when a state is provided3055 returns the expected items when multiple states are provided3056 by project3057 returns the expected todos for one project3058 returns the expected todos for many projects3059 when filtering by target id3060 returns the expected todos for the target3061 returns the expected todos for multiple target ids3062 returns the expected todos for empty target id collection3063 external authorization3064 behaves like a finder with external authorization service3065 finds the subject3066 with an external authorization service3067 does not include the subject when no project was given3068 includes the subject when a project id was given3069 #sort3070 sorts by priority3071 by date3072 sorts with oldest created first3073 sorts with newest created first3074 .todo_types3075 returns the expected types3076 #any_for_target?3077 returns true if there are any todos for the given target3078 returns false if there are no todos for the given target3079Packages::Maven::Metadata::SyncWorker3080 #perform3081 with a jar3082 with a valid package name3083 logs the message from the service3084 behaves like an idempotent worker3085 is labeled as idempotent3086 performs multiple times sequentially without raising an exception3087 creates the updated metadata files3088 not in the passed project3089 does not create the updated metadata files3090 with a user with not enough permissions3091 does not create the updated metadata files3092 with a maven plugin3093 with a valid package name3094 logs the message from the service3095 behaves like an idempotent worker3096 is labeled as idempotent3097 performs multiple times sequentially without raising an exception3098 creates the updated metadata files3099 not in the passed project3100 does not create the updated metadata files3101 with a user with not enough permissions3102 does not create the updated metadata files3103 with no package name3104 does not run3105 with no user id3106 does not run3107 with no project id3108 does not run3109AbuseReport3110 is expected to be valid3111 associations3112 is expected to belong to reporter class_name => User required: false inverse_of => reported_abuse_reports3113 is expected to belong to resolved_by class_name => User required: false inverse_of => resolved_abuse_reports3114 is expected to belong to assignee class_name => User required: false inverse_of => assigned_abuse_reports3115 is expected to belong to user required: false inverse_of => abuse_reports3116 is expected to have many events class_name => ResourceEvents::AbuseReportEvent inverse_of => abuse_report3117 aliases reporter to author3118 validations3119 is expected to validate that :reporter cannot be empty/falsy3120 is expected to validate that :user cannot be empty/falsy3121 is expected to validate that :message cannot be empty/falsy3122 is expected to validate that :category cannot be empty/falsy3123 is expected to validate that :user_id is case-sensitively unique within the scope of :reporter_id and :category, producing a custom validation error on failure3124 is expected to validate that the length of :reported_from_url is at most 5123125 is expected to allow :reported_from_url to be ‹"http://gitlab.com"›3126 is expected to allow :reported_from_url to be ‹"https://gitlab.com"›3127 is expected not to allow :reported_from_url to be ‹"ftp://example.com"›3128 is expected not to allow :reported_from_url to be ‹"javascript:alert(window.opener.document.location)"›3129 is expected to allow :reported_from_url to be ‹"http://localhost:9000"›3130 is expected to allow :reported_from_url to be ‹"https://gitlab.com"›3131 is expected to validate that the length of :mitigation_steps is at most 10003132 is expected to allow :links_to_spam to be ‹[]›3133 is expected to allow :links_to_spam to be ‹nil›3134 is expected to allow :links_to_spam to be ‹""›3135 is expected to allow :links_to_spam to be ‹["https://gitlab.com"]›3136 is expected to allow :links_to_spam to be ‹["http://localhost:9000"]›3137 is expected not to allow :links_to_spam to be ‹["spam"]›3138 is expected not to allow :links_to_spam to be ‹["http://localhost:9000", "spam"]›3139 is expected to allow :links_to_spam to be ‹["https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com"]›3140 is expected not to allow :links_to_spam to be ‹["https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com", "https://gitlab.com"]›3141 is expected to allow :links_to_spam to be ‹["https://gitlab.com/qW1h2RgDs1ydOwGmFerYNe3hAXLx4OvL0uykoF9lhCvAKAHFMrEpreaWyxuFt4ZGIcLAnERkS3nuZcA5BQm1KOrj3aGgBkbsi1x8Of6B6ODwi7BwGoEKtdxbdlAh7Ur9SjjGNRimabwkpKJrqUezDWNRWu5SVTnZiIAy5PrOyMkg26Al4n91oJuqL39j4TEy7UjzhimvbPWaLpSTkBT9a9hcgvyZrZQvwHc6fGnNCmSNbbeOxWRt8zUjshafCpzCFZvnAPi95xP6n2tmQuEwSmIIlsjPIFCV3Nio7t1QaaZEovH4OiVkiybGkqd1hm8PS3sJ0twvZ23kKRWFTb2KQNxYBld8b2hBEmS3CPSZE6dqMSGmpqBoBx20DrnTbyQrTmsfpvugow8jjkckF2sAKF764fZgn1Bmm6Z7VDhCg2TDuYPNfWONOffSM4Qfbb8E4tmY092j77xFqoTpuYXcOysgNYCORzI...›3142 is expected not to allow :links_to_spam to be ‹["https://gitlab.com/vTNlYms4RH317cpICKvaB0Bgv4Vn7qevnPT4mSuOgfEcq4CicbxFKiqAmKWXS2lX4CaEmHgwgZzOwStlNlAo4XTR9YH5j4ovTrXOoZMMhMxibewMjZsuEjRVPb3XXxfkTLObyyzORmSJ9BTR5uSbfOjlkblST8vmh7grXEQtorEoxGXp8aZGlm9elX5YLSVYZ1U6agwb9mYQ1ykVKwPdjsvBXtbCexwAjrGdXEh2grErMJzodirenkZ4Wm5uRv6qz8XvbAuIWnLqsw096drJMDfbQmjhTSaFynm5v3JwedGdMyZrNYvvg2VoqiJobUjQBV9m3CyVv8S3R4IrSIGoSCWCw1EiSAP2cLT3qpZMVFJwsL2xExWqYYVSoRgQflOt6lr5Nqjuu7lypscyGJM6z2Lzh2vd7CLTmAMl6Kf8I47MZQK3ZMuRHwvN9AlvXXiFii3ANB7uSs6XqM7r0vYWmvPx0SHrekG...›3143 for screenshot3144 is expected not to allow :screenshot to be ‹#<Rack::Test::UploadedFile:0x00007fcb158c8808 @original_filename="doc_sample.txt", @tempfile=#<Tempfile:/tmp/doc_sample20230602-324-czqgsf.txt>, @content_type="text/plain">›3145 is expected to allow :screenshot to be ‹#<Rack::Test::UploadedFile:0x00007fcb2b1dd5f0 @original_filename="rails_sample.jpg", @tempfile=#<Tempfile:/tmp/rails_sample20230602-324-6lp7t.jpg>, @content_type="image/jpg">›3146 is expected to allow :screenshot to be ‹nil›3147 is expected to allow :screenshot to be ‹""›3148 evidence3149 is expected not to allow :evidence to be ‹"string"›3150 is expected not to allow :evidence to be ‹1.0›3151 is expected to allow :evidence to be ‹nil›3152 is expected to allow :evidence to be ‹{issues: [{:id=>1, :title=>"test issue title", :description=>"test issue content"}], snippets: [{:id=>2, :content=>"snippet content"}], notes: [{:id=>44, :content=>"notes content"}], user: {:login_count=>1, :account_age=>3, :spam_score=>0.3, :telesign_score=>0.4, :arkos_score=>0.2, :pvs_score=>0.8, :product_coverage=>0.8, :virus_total_score=>0.2}}›3153 scopes3154 .by_reporter_id3155 returns reports with reporter_id equal to the given user id3156 .open3157 returns reports without resolved_at value3158 .closed3159 returns reports with resolved_at value3160 .by_category3161 returns abuse reports with the specified category3162 before_validation3163 when links to spam contains empty strings3164 removes empty strings3165 #remove_user3166 blocks the user3167 lets a worker delete the user3168 #notify3169 delivers3170 returns early when not persisted3171 #screenshot_path3172 with asset host configured3173 returns a full URL with the asset host and system path3174 when no asset path configured3175 returns a full URL with the base url and system path3176 #report_type3177 when reported from an issue3178 is expected to eq :issue3179 when reported from a merge request3180 is expected to eq :merge_request3181 when reported from a profile3182 is expected to eq :profile3183 comment type3184 when reported from an issue comment3185 is expected to eq :comment3186 when reported from a merge request comment3187 is expected to eq :comment3188 when anchor exists not from an issue or merge request URL3189 is expected to eq :profile3190 when note id is invalid3191 is expected to eq :merge_request3192 when URL cannot be matched3193 is expected to be nil3194 #reported_content3195 when reported from an issue3196 is expected to eq "<p data-sourcepos=\"1:1-1:17\" dir=\"auto\">issue description</p>"3197 when reported from a merge request3198 is expected to eq "<p data-sourcepos=\"1:1-1:14\" dir=\"auto\">mr description</p>"3199 when reported from a merge request with an invalid note ID3200 is expected to eq "<p data-sourcepos=\"1:1-1:14\" dir=\"auto\">mr description</p>"3201 when reported from a profile3202 is expected to be nil3203 when reported from an unknown URL3204 is expected to be nil3205 when reported from an invalid URL3206 is expected to be nil3207 when reported from an issue comment3208 is expected to eq "<p data-sourcepos=\"1:1-1:16\" dir=\"auto\">comment in issue</p>"3209 when reported from a merge request comment3210 is expected to eq "<p data-sourcepos=\"1:1-1:13\" dir=\"auto\">comment in mr</p>"3211 when report type cannot be determined, because the comment does not exist3212 is expected to be nil3213 #other_reports_for_user3214 returns other reports for the same user3215 enums3216 is expected to define :category as an enum backed by an integer with values ‹{spam: 1, offensive: 2, phishing: 3, crypto: 4, credentials: 5, copyright: 6, malware: 7, other: 8}›3217MergeRequests::CloseService3218 #execute3219 updates metrics3220 calls the merge request activity counter3221 refreshes the number of open merge requests for a valid MR3222 clean up environments for the merge request3223 schedules CleanupRefsService3224 triggers GraphQL subscription mergeRequestMergeStatusUpdated3225 behaves like cache counters invalidator3226 invalidates counter cache for assignees3227 behaves like merge request reviewers cache counters invalidator3228 invalidates counter cache for reviewers3229 valid params3230 is expected to be valid3231 is expected to be closed3232 executes hooks with close action3233 sends email to user2 about assign of new merge_request3234 creates a resource event3235 marks todos as done3236 when auto merge is enabled3237 cancels the auto merge3238 current user is not authorized to close merge request3239 does not close the merge request3240 does not trigger GraphQL subscription mergeRequestMergeStatusUpdated3241Tooling::Danger::ProjectHelper3242 #categories_for_file3243 path: "glfm_specification/example_snapshots/prosemirror_json.yml", expected_categories: [:frontend]3244 is expected to eq [:frontend]3245 path: "glfm_specification/input/glfm_anything.yml", expected_categories: [:frontend, :backend]3246 is expected to eq [:frontend, :backend]3247 path: "doc/api/graphql/reference/index.md", expected_categories: [:docs, :backend]3248 is expected to eq [:docs, :backend]3249 path: "doc/api/graphql/reference/some_other_file.txt", expected_categories: [:docs, :backend]3250 is expected to eq [:docs, :backend]3251 path: "doc/api/openapi/openapi.yaml", expected_categories: [:docs, :backend]3252 is expected to eq [:docs, :backend]3253 path: "doc/api/openapi/any_other_file.yaml", expected_categories: [:docs, :backend]3254 is expected to eq [:docs, :backend]3255 path: "usage_data.rb", expected_categories: [:database, :backend, :analytics_instrumentation]3256 is expected to eq [:database, :backend, :analytics_instrumentation]3257 path: "doc/foo.md", expected_categories: [:docs]3258 is expected to eq [:docs]3259 path: "CONTRIBUTING.md", expected_categories: [:docs]3260 is expected to eq [:docs]3261 path: "LICENSE", expected_categories: [:docs]3262 is expected to eq [:docs]3263 path: "MAINTENANCE.md", expected_categories: [:docs]3264 is expected to eq [:docs]3265 path: "PHILOSOPHY.md", expected_categories: [:docs]3266 is expected to eq [:docs]3267 path: "PROCESS.md", expected_categories: [:docs]3268 is expected to eq [:docs]3269 path: "README.md", expected_categories: [:docs]3270 is expected to eq [:docs]3271 path: "ee/doc/foo", expected_categories: [:none]3272 is expected to eq [:none]3273 path: "ee/README", expected_categories: [:none]3274 is expected to eq [:none]3275 path: "app/assets/foo", expected_categories: [:frontend]3276 is expected to eq [:frontend]3277 path: "app/views/foo", expected_categories: [:frontend, :backend]3278 is expected to eq [:frontend, :backend]3279 path: "public/foo", expected_categories: [:frontend]3280 is expected to eq [:frontend]3281 path: "scripts/frontend/foo", expected_categories: [:frontend]3282 is expected to eq [:frontend]3283 path: "spec/frontend/bar", expected_categories: [:frontend]3284 is expected to eq [:frontend]3285 path: "spec/frontend_integration/bar", expected_categories: [:frontend]3286 is expected to eq [:frontend]3287 path: "vendor/assets/foo", expected_categories: [:frontend]3288 is expected to eq [:frontend]3289 path: "babel.config.js", expected_categories: [:frontend]3290 is expected to eq [:frontend]3291 path: "jest.config.js", expected_categories: [:frontend]3292 is expected to eq [:frontend]3293 path: "package.json", expected_categories: [:frontend]3294 is expected to eq [:frontend]3295 path: "yarn.lock", expected_categories: [:frontend]3296 is expected to eq [:frontend]3297 path: "config/foo.js", expected_categories: [:frontend]3298 is expected to eq [:frontend]3299 path: "config/deep/foo.js", expected_categories: [:frontend]3300 is expected to eq [:frontend]3301 path: "ee/app/assets/foo", expected_categories: [:frontend]3302 is expected to eq [:frontend]3303 path: "ee/app/views/foo", expected_categories: [:frontend, :backend]3304 is expected to eq [:frontend, :backend]3305 path: "ee/spec/frontend/bar", expected_categories: [:frontend]3306 is expected to eq [:frontend]3307 path: "ee/spec/frontend_integration/bar", expected_categories: [:frontend]3308 is expected to eq [:frontend]3309 path: ".gitlab/ci/frontend.gitlab-ci.yml", expected_categories: [:frontend, :tooling]3310 is expected to eq [:frontend, :tooling]3311 path: "app/models/foo", expected_categories: [:backend]3312 is expected to eq [:backend]3313 path: "bin/foo", expected_categories: [:backend]3314 is expected to eq [:backend]3315 path: "config/foo", expected_categories: [:backend]3316 is expected to eq [:backend]3317 path: "lib/foo", expected_categories: [:backend]3318 is expected to eq [:backend]3319 path: "rubocop/foo", expected_categories: [:backend]3320 is expected to eq [:backend]3321 path: ".rubocop.yml", expected_categories: [:backend]3322 is expected to eq [:backend]3323 path: ".rubocop_todo.yml", expected_categories: [:backend]3324 is expected to eq [:backend]3325 path: ".rubocop_todo/cop/name.yml", expected_categories: [:backend]3326 is expected to eq [:backend]3327 path: "spec/foo", expected_categories: [:backend]3328 is expected to eq [:backend]3329 path: "spec/foo/bar", expected_categories: [:backend]3330 is expected to eq [:backend]3331 path: "ee/app/foo", expected_categories: [:backend]3332 is expected to eq [:backend]3333 path: "ee/bin/foo", expected_categories: [:backend]3334 is expected to eq [:backend]3335 path: "ee/spec/foo", expected_categories: [:backend]3336 is expected to eq [:backend]3337 path: "ee/spec/foo/bar", expected_categories: [:backend]3338 is expected to eq [:backend]3339 path: "spec/migrations/foo", expected_categories: [:database]3340 is expected to eq [:database]3341 path: "ee/spec/migrations/foo", expected_categories: [:database]3342 is expected to eq [:database]3343 path: "spec/features/foo", expected_categories: [:test]3344 is expected to eq [:test]3345 path: "ee/spec/features/foo", expected_categories: [:test]3346 is expected to eq [:test]3347 path: "spec/support/shared_examples/features/foo", expected_categories: [:test]3348 is expected to eq [:test]3349 path: "ee/spec/support/shared_examples/features/foo", expected_categories: [:test]3350 is expected to eq [:test]3351 path: "spec/support/shared_contexts/features/foo", expected_categories: [:test]3352 is expected to eq [:test]3353 path: "ee/spec/support/shared_contexts/features/foo", expected_categories: [:test]3354 is expected to eq [:test]3355 path: "spec/support/helpers/features/foo", expected_categories: [:test]3356 is expected to eq [:test]3357 path: "ee/spec/support/helpers/features/foo", expected_categories: [:test]3358 is expected to eq [:test]3359 path: "generator_templates/foo", expected_categories: [:backend]3360 is expected to eq [:backend]3361 path: "vendor/languages.yml", expected_categories: [:backend]3362 is expected to eq [:backend]3363 path: "file_hooks/examples/", expected_categories: [:backend]3364 is expected to eq [:backend]3365 path: "Gemfile", expected_categories: [:backend]3366 is expected to eq [:backend]3367 path: "Gemfile.lock", expected_categories: [:backend]3368 is expected to eq [:backend]3369 path: "Gemfile.checksum", expected_categories: [:backend]3370 is expected to eq [:backend]3371 path: "Rakefile", expected_categories: [:backend]3372 is expected to eq [:backend]3373 path: "FOO_VERSION", expected_categories: [:backend]3374 is expected to eq [:backend]3375 path: "scripts/glfm/bar.rb", expected_categories: [:backend]3376 is expected to eq [:backend]3377 path: "scripts/glfm/bar.js", expected_categories: [:frontend]3378 is expected to eq [:frontend]3379 path: "scripts/remote_development/run-smoke-test-suite.sh", expected_categories: [:remote_development]3380 is expected to eq [:remote_development]3381 path: "scripts/lib/glfm/bar.rb", expected_categories: [:backend]3382 is expected to eq [:backend]3383 path: "scripts/lib/glfm/bar.js", expected_categories: [:frontend]3384 is expected to eq [:frontend]3385 path: "scripts/bar.rb", expected_categories: [:backend, :tooling]3386 is expected to eq [:backend, :tooling]3387 path: "scripts/bar.js", expected_categories: [:frontend, :tooling]3388 is expected to eq [:frontend, :tooling]3389 path: "scripts/subdir/bar.rb", expected_categories: [:backend, :tooling]3390 is expected to eq [:backend, :tooling]3391 path: "scripts/subdir/bar.js", expected_categories: [:frontend, :tooling]3392 is expected to eq [:frontend, :tooling]3393 path: "scripts/foo", expected_categories: [:tooling]3394 is expected to eq [:tooling]3395 path: "Dangerfile", expected_categories: [:tooling]3396 is expected to eq [:tooling]3397 path: "danger/bundle_size/Dangerfile", expected_categories: [:tooling]3398 is expected to eq [:tooling]3399 path: "ee/danger/bundle_size/Dangerfile", expected_categories: [:tooling]3400 is expected to eq [:tooling]3401 path: "danger/bundle_size/", expected_categories: [:tooling]3402 is expected to eq [:tooling]3403 path: "ee/danger/bundle_size/", expected_categories: [:tooling]3404 is expected to eq [:tooling]3405 path: ".gitlab-ci.yml", expected_categories: [:tooling]3406 is expected to eq [:tooling]3407 path: ".gitlab/ci/cng.gitlab-ci.yml", expected_categories: [:tooling]3408 is expected to eq [:tooling]3409 path: ".gitlab/ci/ee-specific-checks.gitlab-ci.yml", expected_categories: [:tooling]3410 is expected to eq [:tooling]3411 path: "tooling/danger/foo", expected_categories: [:tooling]3412 is expected to eq [:tooling]3413 path: "ee/tooling/danger/foo", expected_categories: [:tooling]3414 is expected to eq [:tooling]3415 path: "lefthook.yml", expected_categories: [:tooling]3416 is expected to eq [:tooling]3417 path: ".editorconfig", expected_categories: [:tooling]3418 is expected to eq [:tooling]3419 path: "tooling/bin/find_foss_tests", expected_categories: [:tooling]3420 is expected to eq [:tooling]3421 path: ".codeclimate.yml", expected_categories: [:tooling]3422 is expected to eq [:tooling]3423 path: ".gitlab/CODEOWNERS", expected_categories: [:tooling]3424 is expected to eq [:tooling]3425 path: "lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml", expected_categories: [:ci_template]3426 is expected to eq [:ci_template]3427 path: "lib/gitlab/ci/templates/dotNET-Core.yml", expected_categories: [:ci_template]3428 is expected to eq [:ci_template]3429 path: "ee/FOO_VERSION", expected_categories: [:none]3430 is expected to eq [:none]3431 path: "db/schema.rb", expected_categories: [:database]3432 is expected to eq [:database]3433 path: "db/structure.sql", expected_categories: [:database]3434 is expected to eq [:database]3435 path: "db/migrate/foo", expected_categories: [:database, :migration]3436 is expected to eq [:database, :migration]3437 path: "db/post_migrate/foo", expected_categories: [:database, :migration]3438 is expected to eq [:database, :migration]3439 path: "ee/db/geo/migrate/foo", expected_categories: [:database, :migration]3440 is expected to eq [:database, :migration]3441 path: "ee/db/geo/post_migrate/foo", expected_categories: [:database, :migration]3442 is expected to eq [:database, :migration]3443 path: "app/models/project_authorization.rb", expected_categories: [:database, :backend]3444 is expected to eq [:database, :backend]3445 path: "app/services/users/refresh_authorized_projects_service.rb", expected_categories: [:database, :backend]3446 is expected to eq [:database, :backend]3447 path: "app/services/authorized_project_update/find_records_due_for_refresh_service.rb", expected_categories: [:database, :backend]3448 is expected to eq [:database, :backend]3449 path: "lib/gitlab/background_migration.rb", expected_categories: [:database, :backend]3450 is expected to eq [:database, :backend]3451 path: "lib/gitlab/background_migration/foo", expected_categories: [:database, :backend]3452 is expected to eq [:database, :backend]3453 path: "ee/lib/gitlab/background_migration/foo", expected_categories: [:database, :backend]3454 is expected to eq [:database, :backend]3455 path: "lib/gitlab/database.rb", expected_categories: [:database, :backend]3456 is expected to eq [:database, :backend]3457 path: "lib/gitlab/database/foo", expected_categories: [:database, :backend]3458 is expected to eq [:database, :backend]3459 path: "ee/lib/gitlab/database/foo", expected_categories: [:database, :backend]3460 is expected to eq [:database, :backend]3461 path: "lib/gitlab/sql/foo", expected_categories: [:database, :backend]3462 is expected to eq [:database, :backend]3463 path: "rubocop/cop/migration/foo", expected_categories: [:database]3464 is expected to eq [:database]3465 path: "db/fixtures/foo.rb", expected_categories: [:backend]3466 is expected to eq [:backend]3467 path: "ee/db/fixtures/foo.rb", expected_categories: [:backend]3468 is expected to eq [:backend]3469 path: "qa/foo", expected_categories: [:qa]3470 is expected to eq [:qa]3471 path: "ee/qa/foo", expected_categories: [:qa]3472 is expected to eq [:qa]3473 path: "workhorse/main.go", expected_categories: [:workhorse]3474 is expected to eq [:workhorse]3475 path: "workhorse/internal/upload/upload.go", expected_categories: [:workhorse]3476 is expected to eq [:workhorse]3477 path: "locale/gitlab.pot", expected_categories: [:none]3478 is expected to eq [:none]3479 path: "FOO", expected_categories: [:none]3480 is expected to eq [:none]3481 path: "foo", expected_categories: [:none]3482 is expected to eq [:none]3483 path: "foo/bar.rb", expected_categories: [:backend]3484 is expected to eq [:backend]3485 path: "foo/bar.js", expected_categories: [:frontend]3486 is expected to eq [:frontend]3487 path: "foo/bar.txt", expected_categories: [:none]3488 is expected to eq [:none]3489 path: "foo/bar.md", expected_categories: [:none]3490 is expected to eq [:none]3491 path: "ee/config/metrics/counts_7d/20210216174919_g_analytics_issues_weekly.yml", expected_categories: [:analytics_instrumentation]3492 is expected to eq [:analytics_instrumentation]3493 path: "lib/gitlab/usage_data_counters/aggregated_metrics/common.yml", expected_categories: [:analytics_instrumentation]3494 is expected to eq [:analytics_instrumentation]3495 path: "lib/gitlab/usage_data_counters/hll_redis_counter.rb", expected_categories: [:backend, :analytics_instrumentation]3496 is expected to eq [:backend, :analytics_instrumentation]3497 path: "lib/gitlab/tracking.rb", expected_categories: [:backend, :analytics_instrumentation]3498 is expected to eq [:backend, :analytics_instrumentation]3499 path: "lib/gitlab/usage/service_ping_report.rb", expected_categories: [:backend, :analytics_instrumentation]3500 is expected to eq [:backend, :analytics_instrumentation]3501 path: "lib/gitlab/usage/metrics/key_path_processor.rb", expected_categories: [:backend, :analytics_instrumentation]3502 is expected to eq [:backend, :analytics_instrumentation]3503 path: "spec/lib/gitlab/tracking_spec.rb", expected_categories: [:backend, :analytics_instrumentation]3504 is expected to eq [:backend, :analytics_instrumentation]3505 path: "app/helpers/tracking_helper.rb", expected_categories: [:backend, :analytics_instrumentation]3506 is expected to eq [:backend, :analytics_instrumentation]3507 path: "spec/helpers/tracking_helper_spec.rb", expected_categories: [:backend, :analytics_instrumentation]3508 is expected to eq [:backend, :analytics_instrumentation]3509 path: "lib/generators/rails/usage_metric_definition_generator.rb", expected_categories: [:backend, :analytics_instrumentation]3510 is expected to eq [:backend, :analytics_instrumentation]3511 path: "spec/lib/generators/usage_metric_definition_generator_spec.rb", expected_categories: [:backend, :analytics_instrumentation]3512 is expected to eq [:backend, :analytics_instrumentation]3513 path: "config/metrics/schema.json", expected_categories: [:analytics_instrumentation]3514 is expected to eq [:analytics_instrumentation]3515 path: "app/assets/javascripts/tracking/foo.js", expected_categories: [:frontend, :analytics_instrumentation]3516 is expected to eq [:frontend, :analytics_instrumentation]3517 path: "spec/frontend/tracking/foo.js", expected_categories: [:frontend, :analytics_instrumentation]3518 is expected to eq [:frontend, :analytics_instrumentation]3519 path: "spec/frontend/tracking_spec.js", expected_categories: [:frontend, :analytics_instrumentation]3520 is expected to eq [:frontend, :analytics_instrumentation]3521 path: "lib/gitlab/usage_database/foo.rb", expected_categories: [:backend]3522 is expected to eq [:backend]3523 path: "config/metrics/counts_7d/test_metric.yml", expected_categories: [:analytics_instrumentation]3524 is expected to eq [:analytics_instrumentation]3525 path: "config/events/snowplow_event.yml", expected_categories: [:analytics_instrumentation]3526 is expected to eq [:analytics_instrumentation]3527 path: "config/metrics/schema.json", expected_categories: [:analytics_instrumentation]3528 is expected to eq [:analytics_instrumentation]3529 path: "doc/api/usage_data.md", expected_categories: [:analytics_instrumentation]3530 is expected to eq [:analytics_instrumentation]3531 path: "spec/lib/gitlab/usage_data_spec.rb", expected_categories: [:analytics_instrumentation]3532 is expected to eq [:analytics_instrumentation]3533 path: "spec/lib/gitlab/usage/service_ping_report.rb", expected_categories: [:backend, :analytics_instrumentation]3534 is expected to eq [:backend, :analytics_instrumentation]3535 path: "spec/lib/gitlab/usage/metrics/key_path_processor.rb", expected_categories: [:backend, :analytics_instrumentation]3536 is expected to eq [:backend, :analytics_instrumentation]3537 path: "app/models/integration.rb", expected_categories: [:import_integrate_be, :backend]3538 is expected to eq [:import_integrate_be, :backend]3539 path: "ee/app/models/integrations/github.rb", expected_categories: [:import_integrate_be, :backend]3540 is expected to eq [:import_integrate_be, :backend]3541 path: "ee/app/models/ee/integrations/jira.rb", expected_categories: [:import_integrate_be, :backend]3542 is expected to eq [:import_integrate_be, :backend]3543 path: "app/models/integrations/chat_message/pipeline_message.rb", expected_categories: [:import_integrate_be, :backend]3544 is expected to eq [:import_integrate_be, :backend]3545 path: "app/models/jira_connect_subscription.rb", expected_categories: [:import_integrate_be, :backend]3546 is expected to eq [:import_integrate_be, :backend]3547 path: "app/models/hooks/service_hook.rb", expected_categories: [:import_integrate_be, :backend]3548 is expected to eq [:import_integrate_be, :backend]3549 path: "ee/app/models/ee/hooks/system_hook.rb", expected_categories: [:import_integrate_be, :backend]3550 is expected to eq [:import_integrate_be, :backend]3551 path: "app/services/concerns/integrations/project_test_data.rb", expected_categories: [:import_integrate_be, :backend]3552 is expected to eq [:import_integrate_be, :backend]3553 path: "ee/app/services/ee/integrations/test/project_service.rb", expected_categories: [:import_integrate_be, :backend]3554 is expected to eq [:import_integrate_be, :backend]3555 path: "app/controllers/concerns/integrations/actions.rb", expected_categories: [:import_integrate_be, :backend]3556 is expected to eq [:import_integrate_be, :backend]3557 path: "ee/app/controllers/concerns/ee/integrations/params.rb", expected_categories: [:import_integrate_be, :backend]3558 is expected to eq [:import_integrate_be, :backend]3559 path: "ee/app/controllers/projects/integrations/jira/issues_controller.rb", expected_categories: [:import_integrate_be, :backend]3560 is expected to eq [:import_integrate_be, :backend]3561 path: "app/controllers/projects/hooks_controller.rb", expected_categories: [:import_integrate_be, :backend]3562 is expected to eq [:import_integrate_be, :backend]3563 path: "app/controllers/admin/hook_logs_controller.rb", expected_categories: [:import_integrate_be, :backend]3564 is expected to eq [:import_integrate_be, :backend]3565 path: "app/controllers/groups/settings/integrations_controller.rb", expected_categories: [:import_integrate_be, :backend]3566 is expected to eq [:import_integrate_be, :backend]3567 path: "app/controllers/jira_connect/branches_controller.rb", expected_categories: [:import_integrate_be, :backend]3568 is expected to eq [:import_integrate_be, :backend]3569 path: "app/controllers/oauth/jira/authorizations_controller.rb", expected_categories: [:import_integrate_be, :backend]3570 is expected to eq [:import_integrate_be, :backend]3571 path: "ee/app/finders/projects/integrations/jira/by_ids_finder.rb", expected_categories: [:import_integrate_be, :database, :backend]3572 is expected to eq [:import_integrate_be, :database, :backend]3573 path: "app/workers/jira_connect/sync_merge_request_worker.rb", expected_categories: [:import_integrate_be, :backend]3574 is expected to eq [:import_integrate_be, :backend]3575 path: "app/workers/propagate_integration_inherit_worker.rb", expected_categories: [:import_integrate_be, :backend]3576 is expected to eq [:import_integrate_be, :backend]3577 path: "app/workers/web_hooks/log_execution_worker.rb", expected_categories: [:import_integrate_be, :backend]3578 is expected to eq [:import_integrate_be, :backend]3579 path: "app/workers/web_hook_worker.rb", expected_categories: [:import_integrate_be, :backend]3580 is expected to eq [:import_integrate_be, :backend]3581 path: "app/workers/project_service_worker.rb", expected_categories: [:import_integrate_be, :backend]3582 is expected to eq [:import_integrate_be, :backend]3583 path: "lib/atlassian/jira_connect/serializers/commit_entity.rb", expected_categories: [:import_integrate_be, :backend]3584 is expected to eq [:import_integrate_be, :backend]3585 path: "lib/api/entities/project_integration.rb", expected_categories: [:import_integrate_be, :backend]3586 is expected to eq [:import_integrate_be, :backend]3587 path: "lib/gitlab/hook_data/note_builder.rb", expected_categories: [:import_integrate_be, :backend]3588 is expected to eq [:import_integrate_be, :backend]3589 path: "lib/gitlab/data_builder/note.rb", expected_categories: [:import_integrate_be, :backend]3590 is expected to eq [:import_integrate_be, :backend]3591 path: "lib/gitlab/web_hooks/recursion_detection.rb", expected_categories: [:import_integrate_be, :backend]3592 is expected to eq [:import_integrate_be, :backend]3593 path: "ee/lib/ee/gitlab/integrations/sti_type.rb", expected_categories: [:import_integrate_be, :backend]3594 is expected to eq [:import_integrate_be, :backend]3595 path: "ee/lib/ee/api/helpers/integrations_helpers.rb", expected_categories: [:import_integrate_be, :backend]3596 is expected to eq [:import_integrate_be, :backend]3597 path: "ee/app/serializers/integrations/jira_serializers/issue_entity.rb", expected_categories: [:import_integrate_be, :backend]3598 is expected to eq [:import_integrate_be, :backend]3599 path: "app/serializers/jira_connect/app_data_serializer.rb", expected_categories: [:import_integrate_be, :backend]3600 is expected to eq [:import_integrate_be, :backend]3601 path: "lib/api/github/entities.rb", expected_categories: [:import_integrate_be, :backend]3602 is expected to eq [:import_integrate_be, :backend]3603 path: "lib/api/v3/github.rb", expected_categories: [:import_integrate_be, :backend]3604 is expected to eq [:import_integrate_be, :backend]3605 path: "app/controllers/clusters/integrations_controller.rb", expected_categories: [:backend]3606 is expected to eq [:backend]3607 path: "app/services/clusters/integrations/prometheus_health_check_service.rb", expected_categories: [:backend]3608 is expected to eq [:backend]3609 path: "app/graphql/types/alert_management/integration_type.rb", expected_categories: [:backend]3610 is expected to eq [:backend]3611 path: "app/views/jira_connect/branches/new.html.haml", expected_categories: [:import_integrate_fe, :frontend]3612 is expected to eq [:import_integrate_fe, :frontend]3613 path: "app/views/layouts/jira_connect.html.haml", expected_categories: [:import_integrate_fe, :frontend]3614 is expected to eq [:import_integrate_fe, :frontend]3615 path: "app/assets/javascripts/jira_connect/branches/pages/index.vue", expected_categories: [:import_integrate_fe, :frontend]3616 is expected to eq [:import_integrate_fe, :frontend]3617 path: "ee/app/views/projects/integrations/jira/issues/show.html.haml", expected_categories: [:import_integrate_fe, :frontend]3618 is expected to eq [:import_integrate_fe, :frontend]3619 path: "ee/app/assets/javascripts/integrations/zentao/issues_list/graphql/queries/get_zentao_issues.query.graphql", expected_categories: [:import_integrate_fe, :frontend]3620 is expected to eq [:import_integrate_fe, :frontend]3621 path: "app/assets/javascripts/pages/projects/settings/integrations/show/index.js", expected_categories: [:import_integrate_fe, :frontend]3622 is expected to eq [:import_integrate_fe, :frontend]3623 path: "ee/app/assets/javascripts/pages/groups/hooks/index.js", expected_categories: [:import_integrate_fe, :frontend]3624 is expected to eq [:import_integrate_fe, :frontend]3625 path: "app/views/clusters/clusters/_integrations_tab.html.haml", expected_categories: [:frontend, :backend]3626 is expected to eq [:frontend, :backend]3627 path: "app/assets/javascripts/alerts_settings/graphql/fragments/integration_item.fragment.graphql", expected_categories: [:frontend]3628 is expected to eq [:frontend]3629 path: "app/assets/javascripts/filtered_search/droplab/hook_input.js", expected_categories: [:frontend]3630 is expected to eq [:frontend]3631 path: "app/views/layouts/header/_default.html.haml", expected_categories: [:frontend, :backend]3632 is expected to eq [:frontend, :backend]3633 path: "app/views/layouts/header/_default.html.erb", expected_categories: [:frontend, :backend]3634 is expected to eq [:frontend, :backend]3635 having specific changes3636 expected_categories: [:analytics_instrumentation], patch: "+data-track-action", changed_files: ["components/welcome.vue"]3637 has the correct categories3638 expected_categories: [:analytics_instrumentation], patch: "+ data: { track_label:", changed_files: ["admin/groups/_form.html.haml"]3639 has the correct categories3640 expected_categories: [:analytics_instrumentation], patch: "+ Gitlab::Tracking.event", changed_files: ["dashboard/todos_controller.rb", "admin/groups/_form.html.haml"]3641 has the correct categories3642 expected_categories: [:database, :backend, :analytics_instrumentation], patch: "+ count(User.active)", changed_files: ["usage_data.rb", "lib/gitlab/usage_data.rb", "ee/lib/ee/gitlab/usage_data.rb"]3643 has the correct categories3644 expected_categories: [:database, :backend, :analytics_instrumentation], patch: "+ estimate_batch_distinct_count(User.active)", changed_files: ["usage_data.rb"]3645 has the correct categories3646 expected_categories: [:backend, :analytics_instrumentation], patch: "+ alt_usage_data(User.active)", changed_files: ["lib/gitlab/usage_data.rb"]3647 has the correct categories3648 expected_categories: [:backend, :analytics_instrumentation], patch: "+ count(User.active)", changed_files: ["lib/gitlab/usage_data/topology.rb"]3649 has the correct categories3650 expected_categories: [:backend, :analytics_instrumentation], patch: "+ foo_count(User.active)", changed_files: ["lib/gitlab/usage_data.rb"]3651 has the correct categories3652 expected_categories: [:backend], patch: "+ count(User.active)", changed_files: ["user.rb"]3653 has the correct categories3654 expected_categories: [:import_integrate_be, :database, :migration], patch: "+ add_column :integrations, :foo, :text", changed_files: ["db/migrate/foo.rb"]3655 has the correct categories3656 expected_categories: [:import_integrate_be, :database, :migration], patch: "+ create_table :zentao_tracker_data do |t|", changed_files: ["ee/db/post_migrate/foo.rb"]3657 has the correct categories3658 expected_categories: [:import_integrate_be, :backend], patch: "+ Integrations::Foo", changed_files: ["app/foo/bar.rb"]3659 has the correct categories3660 expected_categories: [:import_integrate_be, :backend], patch: "+ project.execute_hooks(foo, :bar)", changed_files: ["ee/lib/ee/foo.rb"]3661 has the correct categories3662 expected_categories: [:import_integrate_be, :backend], patch: "+ project.execute_integrations(foo, :bar)", changed_files: ["app/foo.rb"]3663 has the correct categories3664 expected_categories: [:frontend, :analytics_instrumentation], patch: "+ api.trackRedisCounterEvent(\"foo\")", changed_files: ["app/assets/javascripts/telemetry.js", "ee/app/assets/javascripts/mr_widget.vue"]3665 has the correct categories3666 expected_categories: [:frontend, :analytics_instrumentation], patch: "+ api.trackRedisHllUserEvent(\"bar\")", changed_files: ["app/assets/javascripts/telemetry.js", "ee/app/assets/javascripts/mr_widget.vue"]3667 has the correct categories3668 #file_lines3669 returns the chomped file lines3670SearchService3671 #project3672 when the project is accessible3673 returns the project3674 returns the project for guests3675 when the project is not accessible3676 returns nil3677 when there is no project_id3678 returns nil3679 #group3680 when the group is accessible3681 returns the group3682 when the group is not accessible3683 returns nil3684 when there is no group_id3685 returns nil3686 #show_snippets?3687 when :snippets is 'true'3688 returns true3689 when :snippets is not 'true'3690 returns false3691 when :snippets is missing3692 returns false3693 #scope3694 with accessible project_id3695 and allowed scope3696 returns the specified scope3697 and disallowed scope3698 returns the default scope3699 and no scope3700 returns the default scope3701 with 'true' snippets3702 and allowed scope3703 returns the specified scope3704 and disallowed scope3705 returns the default scope3706 and no scope3707 returns the default scope3708 with no project_id, no snippets3709 and allowed scope3710 returns the specified scope3711 and disallowed scope3712 returns the default scope3713 and no scope3714 returns the default scope3715 #search_results3716 with accessible project_id3717 returns an instance of Gitlab::ProjectSearchResults3718 with accessible project_id and 'true' snippets3719 returns an instance of Gitlab::ProjectSearchResults3720 with 'true' snippets3721 returns an instance of Gitlab::SnippetSearchResults3722 with no project_id and no snippets3723 returns an instance of Gitlab::SearchResults3724 #search_objects3725 per_page: parameter3726 when nil3727 defaults to 203728 when empty string3729 defaults to 203730 when negative3731 defaults to 203732 when present3733 converts to integer and passes to search results3734 when greater than 2003735 passes 2003736 page: parameter3737 when < 13738 defaults to 13739 when nil3740 defaults to 13741 with accessible project_id3742 returns objects in the project3743 with accessible project_id and 'true' snippets3744 returns objects in the project3745 with 'true' snippets3746 returns objects in snippets3747 with accessible group_id3748 returns objects in the group3749 with no project_id, group_id or snippets3750 returns objects in global3751 behaves like a redacted search results3752 for issues3753 redacts the inaccessible issue3754 for notes3755 redacts the inaccessible notes3756 for merge_requests3757 redacts the inaccessible merge request3758 with :with_api_entity_associations3759 behaves like redaction limits N+1 queries3760 does not exceed the query limit3761 for blobs3762 redacts the inaccessible blob3763 for wiki blobs3764 redacts the inaccessible blob3765 for project snippets3766 redacts the inaccessible snippet3767 with :with_api_entity_associations3768 behaves like redaction limits N+1 queries3769 does not exceed the query limit3770 for personal snippets3771 redacts the inaccessible snippet3772 with :with_api_entity_associations3773 behaves like redaction limits N+1 queries3774 does not exceed the query limit3775 for commits3776 redacts the inaccessible commit3777 for users3778 passes the users through3779 #valid_request?3780 is the return value of params.valid?3781 #abuse_messages3782 returns an empty array when not abusive3783 calls on abuse_detection.errors.full_messages when abusive3784 abusive search handling3785 a search is abusive3786 does NOT execute search service3787 a search is NOT abusive3788 executes search service3789 .global_search_enabled_for_scope?3790 scope: "blobs", feature_flag: :global_search_code_tab, enabled: false, expected: false3791 returns false when feature_flag is not enabled and returns true when feature_flag is enabled3792 scope: "blobs", feature_flag: :global_search_code_tab, enabled: true, expected: true3793 returns false when feature_flag is not enabled and returns true when feature_flag is enabled3794 scope: "commits", feature_flag: :global_search_commits_tab, enabled: false, expected: false3795 returns false when feature_flag is not enabled and returns true when feature_flag is enabled3796 scope: "commits", feature_flag: :global_search_commits_tab, enabled: true, expected: true3797 returns false when feature_flag is not enabled and returns true when feature_flag is enabled3798 scope: "issues", feature_flag: :global_search_issues_tab, enabled: false, expected: false3799 returns false when feature_flag is not enabled and returns true when feature_flag is enabled3800 scope: "issues", feature_flag: :global_search_issues_tab, enabled: true, expected: true3801 returns false when feature_flag is not enabled and returns true when feature_flag is enabled3802 scope: "merge_requests", feature_flag: :global_search_merge_requests_tab, enabled: false, expected: false3803 returns false when feature_flag is not enabled and returns true when feature_flag is enabled3804 scope: "merge_requests", feature_flag: :global_search_merge_requests_tab, enabled: true, expected: true3805 returns false when feature_flag is not enabled and returns true when feature_flag is enabled3806 scope: "wiki_blobs", feature_flag: :global_search_wiki_tab, enabled: false, expected: false3807 returns false when feature_flag is not enabled and returns true when feature_flag is enabled3808 scope: "wiki_blobs", feature_flag: :global_search_wiki_tab, enabled: true, expected: true3809 returns false when feature_flag is not enabled and returns true when feature_flag is enabled3810 scope: "users", feature_flag: :global_search_users_tab, enabled: false, expected: false3811 returns false when feature_flag is not enabled and returns true when feature_flag is enabled3812 scope: "users", feature_flag: :global_search_users_tab, enabled: true, expected: true3813 returns false when feature_flag is not enabled and returns true when feature_flag is enabled3814 scope: "random", feature_flag: :random, enabled: nil, expected: true3815DEPRECATION WARNING: Invalid Feature Flag random stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)3816 returns false when feature_flag is not enabled and returns true when feature_flag is enabled3817project routing3818 ProjectsController routing3819 to #index3820 to #create3821 to #new3822 to #edit3823 to #update3824 to #destroy3825 to #preview_markdown3826 to #show3827 regular name3828 is expected to route {:get=>"/gitlab/gitlabhq"} to {:namespace_id=>"gitlab", :id=>"gitlabhq", :controller=>"projects", :action=>"show"}3829 name with dot3830 is expected to route {:get=>"/gitlab/gitlabhq.keys"} to {:namespace_id=>"gitlab", :id=>"gitlabhq.keys", :controller=>"projects", :action=>"show"}3831 with nested group3832 is expected to route {:get=>"/gitlab/subgroup/gitlabhq"} to {:namespace_id=>"gitlab/subgroup", :id=>"gitlabhq", :controller=>"projects", :action=>"show"}3833 Projects::RedirectController routing3834 to #redirect_from_id3835 Projects::AutocompleteSourcesController routing3836 to #members3837 to #issues3838 to #merge_requests3839 to #labels3840 to #milestones3841 to #commands3842 to #snippets3843 Projects::WikisController routing3844 behaves like wiki routing3845 redirects the base path to the home page3846 behaves like resource routing3847 routes resource actions3848 behaves like redirecting a legacy path3849 redirects /gitlab/gitlabhq/wikis to /gitlab/gitlabhq/-/wikis3850 behaves like redirecting a legacy path3851 redirects /gitlab/gitlabhq/wikis/home/edit to /gitlab/gitlabhq/-/wikis/home/edit3852 Projects::RepositoriesController routing3853 to #archive format:zip3854 to #archive format:tar.bz23855 to #archive with "/" in route3856 to #archive format:html3857 to #archive format:yaml3858 to #archive format:yml3859 Projects::BranchesController routing3860 to #branches3861 Projects::TagsController routing3862 to #tags3863 behaves like redirecting a legacy path3864 redirects /gitlab/gitlabhq/tags to /gitlab/gitlabhq/-/tags3865 Projects::DeployKeysController routing3866 behaves like resource routing3867 routes resource actions3868 Projects::ProtectedBranchesController routing3869 behaves like resource routing3870 routes resource actions3871 Projects::RefsController routing3872 to #switch3873 to #logs_tree3874 behaves like redirecting a legacy path3875 redirects /gitlab/gitlabhq/refs/switch to /gitlab/gitlabhq/-/refs/switch3876 behaves like redirecting a legacy path3877 redirects /gitlab/gitlabhq/refs/feature%2345/logs_tree to /gitlab/gitlabhq/-/refs/feature%2345/logs_tree3878 behaves like redirecting a legacy path3879 redirects /gitlab/gitlabhq/refs/stable/logs_tree/new%0A%0Aline.txt to /gitlab/gitlabhq/-/refs/stable/logs_tree/new%0A%0Aline.txt3880 behaves like redirecting a legacy path3881 redirects /gitlab/gitlabhq/refs/feature%2345/logs_tree/../../../../../@example.com/tree/a to /gitlab/gitlabhq/-/refs/feature#45/logs_tree/../../../../../-/example.com/tree/a3882 Projects::MergeRequestsController routing3883 to #commits3884 to #pipelines3885 to #merge3886 to #show3887 to #show from scoped route3888 behaves like resource routing3889 routes resource actions3890 behaves like redirecting a legacy path3891 redirects /gitlab/gitlabhq/merge_requests to /gitlab/gitlabhq/-/merge_requests3892 behaves like redirecting a legacy path3893 redirects /gitlab/gitlabhq/merge_requests/1/diffs to /gitlab/gitlabhq/-/merge_requests/1/diffs3894 Projects::MergeRequests::CreationsController routing3895 to #new3896 to #create3897 to #branch_from3898 to #branch_to3899 to #pipelines3900 to #diffs3901 behaves like redirecting a legacy path3902 redirects /gitlab/gitlabhq/merge_requests/new to /gitlab/gitlabhq/-/merge_requests/new3903 Projects::MergeRequests::DiffsController routing3904 to #show3905 Projects::MergeRequests::ConflictsController routing3906 to #show3907 SnippetsController routing3908 to #raw3909 to #index3910 to #new3911 to #edit3912 to #show3913 to #raw from unscope routing3914 behaves like redirecting a legacy path3915 redirects /gitlab/gitlabhq/snippets/1 to /gitlab/gitlabhq/-/snippets/13916 Projects::HooksController routing3917 to #test3918 behaves like resource routing3919 routes resource actions3920 behaves like redirecting a legacy path3921 redirects /gitlab/gitlabhq/hooks to /gitlab/gitlabhq/-/hooks3922 Projects::HookLogsController routing3923 to #retry3924 to #show3925 behaves like redirecting a legacy path3926 redirects /gitlab/gitlabhq/hooks/hook_logs/1 to /gitlab/gitlabhq/-/hooks/hook_logs/13927 Projects::CommitController routing3928 to #show3929 behaves like redirecting a legacy path3930 redirects /gitlab/gitlabhq/commit/4246fbd to /gitlab/gitlabhq/-/commit/4246fbd3931 Projects::CommitsController routing3932 to #show3933 behaves like resource routing3934 routes resource actions3935 behaves like redirecting a legacy path3936 redirects /gitlab/gitlabhq/commits/master to /gitlab/gitlabhq/-/commits/master3937 Projects::ProjectMembersController routing3938 behaves like resource routing3939 routes resource actions3940 Projects::MilestonesController routing3941 to #promote3942 behaves like resource routing3943 routes resource actions3944 Projects::LabelsController routing3945 to #index3946 Projects::IssuesController routing3947 to #bulk_update3948 behaves like resource routing3949 routes resource actions3950 behaves like redirecting a legacy path3951 redirects /gitlab/gitlabhq/issues to /gitlab/gitlabhq/-/issues3952 behaves like redirecting a legacy path3953 redirects /gitlab/gitlabhq/issues/1/edit to /gitlab/gitlabhq/-/issues/1/edit3954 Projects::NotesController routing3955 to #index3956 behaves like resource routing3957 routes resource actions3958 Projects::BlameController routing3959 to #show3960 to #streaming3961 to #page3962 Projects::BlobController routing3963 to #show3964 to #show from unscoped routing3965 Projects::TreeController routing3966 to #show3967 to #show from unscoped routing3968 Projects::FindFileController routing3969 to #show3970 to #list3971 behaves like redirecting a legacy path3972 redirects /gitlab/gitlabhq/find_file to /gitlab/gitlabhq/-/find_file3973 behaves like redirecting a legacy path3974 redirects /gitlab/gitlabhq/files/master to /gitlab/gitlabhq/-/files/master3975 Projects::BlobController routing3976 to #edit3977 to #preview3978 behaves like redirecting a legacy path3979 redirects /gitlab/gitlabhq/new/master to /gitlab/gitlabhq/-/new/master3980 behaves like redirecting a legacy path3981 redirects /gitlab/gitlabhq/edit/master/README to /gitlab/gitlabhq/-/edit/master/README3982 Projects::RawController routing3983 to #show3984 to #show from unscoped routing3985 Projects::CompareController routing3986 to #index3987 to #compare3988 to #show3989 behaves like redirecting a legacy path3990 redirects /gitlab/gitlabhq/compare to /gitlab/gitlabhq/-/compare3991 behaves like redirecting a legacy path3992 redirects /gitlab/gitlabhq/compare/master...stable to /gitlab/gitlabhq/-/compare/master...stable3993 Projects::NetworkController routing3994 to #show3995 Projects::GraphsController routing3996 to #show3997 Projects::ForksController routing3998 to #new3999 to #create4000 Projects::AvatarsController routing4001 to #destroy4002 Projects::PagesDomainsController routing4003 to #destroy with a valid domain name4004 to #show with a valid domain4005 behaves like resource routing4006 routes resource actions4007 Projects::ReleasesController routing4008 to #latest_permalink with a valid permalink path4009 to #show for the release with tag named permalink4010 Projects::Registry::TagsController routing4011 #destroy4012 correctly routes to a destroy action4013 takes registry tag name constrains into account4014 Projects::PipelinesController routing4015 to #index4016 to #show4017 behaves like redirecting a legacy path4018 redirects /gitlab/gitlabhq/pipelines to /gitlab/gitlabhq/-/pipelines4019 Projects::PipelineSchedulesController routing4020 to #index4021 behaves like redirecting a legacy path4022 redirects /gitlab/gitlabhq/pipeline_schedules to /gitlab/gitlabhq/-/pipeline_schedules4023 Projects::Settings::OperationsController routing4024 to #reset_alerting_token4025 Projects::Settings::RepositoryController routing4026 to #show4027 to repository#create_deploy_token4028 Projects::Settings::CiCdController routing4029 to #runner_setup_scripts4030 Projects::Settings::PackagesAndRegistriesController routing4031 to #show4032 to #cleanup_tags4033 Projects::Settings::IntegrationsController routing4034 to #index4035 to #edit4036 to #update4037 to #test4038 Projects::Settings::IntegrationHookLogsController4039 to #show4040 to #retry4041 Projects::TemplatesController routing4042 #show4043 routes when :template_type is `merge_request`4044 routes when :template_type is `issue`4045 routes to application#route_not_found when :template_type is unknown4046 Projects::DeployTokensController routing4047 routes to deploy_tokens#revoke4048 Projects::ServicePingController routing4049 routes to service_ping#web_ide_pipelines_count4050 Projects::EnvironmentsController routing4051 legacy routing4052 behaves like redirecting a legacy path4053 redirects /gitlab/gitlabhq/environments to /gitlab/gitlabhq/-/environments4054 Projects::ClustersController routing4055 legacy routing4056 behaves like redirecting a legacy path4057 redirects /gitlab/gitlabhq/clusters to /gitlab/gitlabhq/-/clusters4058 Projects::ErrorTrackingController routing4059 legacy routing4060 behaves like redirecting a legacy path4061 redirects /gitlab/gitlabhq/error_tracking to /gitlab/gitlabhq/-/error_tracking4062 Projects::Serverless routing4063 legacy routing4064 behaves like redirecting a legacy path4065 redirects /gitlab/gitlabhq/serverless to /gitlab/gitlabhq/-/serverless4066 Projects::DesignManagement::Designs::RawImagesController routing4067 to #show4068 Projects::DesignManagement::Designs::ResizedImageController routing4069 to #show4070 Projects::Snippets::BlobsController routing4071 to #raw4072 Projects::MetricsDashboardController routing4073 routes to #show with no dashboard_path4074 routes to #show with only dashboard_path4075 routes to #show4076 routes to #show with dashboard_path4077 routes to 404 with invalid page4078 routes to 404 without format for invalid page4079 routes to 404 with invalid dashboard_path4080 routes to 404 with invalid dashboard_path and valid page4081 routes to 404 with valid dashboard_path and invalid page4082 with a non-existent project4083 routes to 404 with get request4084 routes to 404 with delete request4085 routes to 404 with post request4086 routes to 404 with put request4087 with route to some action4088 routes to 404 with get request to4089 routes to 404 with delete request4090 routes to 404 with post request4091 routes to 404 with put request4092Gitlab::Ci::Parsers::Security::Validators::SchemaValidator4093 SUPPORTED_VERSIONS4094 matches DEPRECATED_VERSIONS keys4095 when all files under schema path are explicitly listed4096 cluster_image_scanning 15.0.04097 container_scanning 15.0.04098 coverage_fuzzing 15.0.04099 dast 15.0.04100 dependency_scanning 15.0.04101 sast 15.0.04102 secret_detection 15.0.04103 cluster_image_scanning 15.0.14104 container_scanning 15.0.14105 coverage_fuzzing 15.0.14106 dast 15.0.14107 dependency_scanning 15.0.14108 sast 15.0.14109 secret_detection 15.0.14110 cluster_image_scanning 15.0.24111 container_scanning 15.0.24112 coverage_fuzzing 15.0.24113 dast 15.0.24114 dependency_scanning 15.0.24115 sast 15.0.24116 secret_detection 15.0.24117 cluster_image_scanning 15.0.44118 container_scanning 15.0.44119 coverage_fuzzing 15.0.44120 dast 15.0.44121 dependency_scanning 15.0.44122 sast 15.0.44123 secret_detection 15.0.44124 cluster_image_scanning 15.0.64125 container_scanning 15.0.64126 coverage_fuzzing 15.0.64127 dast 15.0.64128 dependency_scanning 15.0.64129 sast 15.0.64130 secret_detection 15.0.64131 when every SUPPORTED_VERSION has a corresponding JSON file4132 cluster_image_scanning 15.0.0 schema file is present4133 cluster_image_scanning 15.0.1 schema file is present4134 cluster_image_scanning 15.0.2 schema file is present4135 cluster_image_scanning 15.0.4 schema file is present4136 cluster_image_scanning 15.0.6 schema file is present4137 container_scanning 15.0.0 schema file is present4138 container_scanning 15.0.1 schema file is present4139 container_scanning 15.0.2 schema file is present4140 container_scanning 15.0.4 schema file is present4141 container_scanning 15.0.6 schema file is present4142 coverage_fuzzing 15.0.0 schema file is present4143 coverage_fuzzing 15.0.1 schema file is present4144 coverage_fuzzing 15.0.2 schema file is present4145 coverage_fuzzing 15.0.4 schema file is present4146 coverage_fuzzing 15.0.6 schema file is present4147 dast 15.0.0 schema file is present4148 dast 15.0.1 schema file is present4149 dast 15.0.2 schema file is present4150 dast 15.0.4 schema file is present4151 dast 15.0.6 schema file is present4152 dependency_scanning 15.0.0 schema file is present4153 dependency_scanning 15.0.1 schema file is present4154 dependency_scanning 15.0.2 schema file is present4155 dependency_scanning 15.0.4 schema file is present4156 dependency_scanning 15.0.6 schema file is present4157 sast 15.0.0 schema file is present4158 sast 15.0.1 schema file is present4159 sast 15.0.2 schema file is present4160 sast 15.0.4 schema file is present4161 sast 15.0.6 schema file is present4162 secret_detection 15.0.0 schema file is present4163 secret_detection 15.0.1 schema file is present4164 secret_detection 15.0.2 schema file is present4165 secret_detection 15.0.4 schema file is present4166 secret_detection 15.0.6 schema file is present4167 #valid?4168 when given a supported MAJOR.MINOR schema version4169 behaves like report is valid4170 and the report is valid4171 is expected to be truthy4172 behaves like report is invalid4173 and the report is invalid4174 is expected to be falsey4175 behaves like logs related information4176 logs related information4177 when given a supported schema version4178 behaves like report is valid4179 and the report is valid4180 is expected to be truthy4181 behaves like report is invalid4182 and the report is invalid4183 is expected to be falsey4184 behaves like logs related information4185 logs related information4186 when given a deprecated schema version4187 and the report passes schema validation4188 is expected to be truthy4189 behaves like logs related information4190 logs related information4191 and the report does not pass schema validation4192 is expected to be falsey4193 when given an unsupported schema version4194 and the report is valid4195 is expected to be falsey4196 behaves like logs related information4197 logs related information4198 and the report is invalid4199 is expected to be falsey4200 and scanner information is empty4201 logs related information4202 when not given a schema version4203nil versions are discouraged and will be deprecated in Rubygems 44204 is expected to be falsey4205 #errors4206 when given a supported schema version4207 behaves like report is valid with no error4208 and the report is valid4209 is expected to be empty4210 and the report is invalid4211 behaves like report with expected errors4212 is expected to contain exactly "root is missing required keys: vulnerabilities"4213 when given a deprecated schema version4214 behaves like report is valid with no error4215 and the report is valid4216 is expected to be empty4217 and the report does not pass schema validation4218 behaves like report with expected errors4219 is expected to contain exactly "property '/version' does not match pattern: ^[0-9]+\\.[0-9]+\\.[0-9]+$" and "root is missing required keys: vulnerabilities"4220 when given an unsupported schema version4221 and the report is valid4222 behaves like report with expected errors4223 is expected to contain exactly "Version 12.37.0 for report type dast is unsupported, supported versions for this report type are: 15...liest supported versions of this report type, to show all the errors but will not ingest the report"4224 and the report is invalid4225 behaves like report with expected errors4226 is expected to contain exactly "Version 12.37.0 for report type dast is unsupported, supported versions for this report type are: 15...liest supported versions of this report type, to show all the errors but will not ingest the report" and "root is missing required keys: vulnerabilities"4227 when not given a schema version4228 behaves like report with expected errors4229 is expected to contain exactly "root is missing required keys: version" and "Report version not provided, dast report type supports versions: 15.0.0, 15.0.1, 15.0.2, 15.0.4, 15....liest supported versions of this report type, to show all the errors but will not ingest the report"4230 #deprecation_warnings4231 when given a supported schema version4232 and the report is valid4233 is expected to be empty4234 and the report is invalid4235 is expected to be empty4236 when given a deprecated schema version4237 and the report passes schema validation4238 behaves like report with expected warnings4239 is expected to contain exactly "version V2.7.0 for report type dast is deprecated. However, GitLab will still attempt to parse and i...grade the security report to one of the following versions: 15.0.0, 15.0.1, 15.0.2, 15.0.4, 15.0.6."4240 and the report does not pass schema validation4241 behaves like report with expected warnings4242 is expected to contain exactly "version V2.7.0 for report type dast is deprecated. However, GitLab will still attempt to parse and i...grade the security report to one of the following versions: 15.0.0, 15.0.1, 15.0.2, 15.0.4, 15.0.6."4243 when given an unsupported schema version4244 behaves like report with expected warnings4245 is expected to contain exactly4246 #warnings4247 when given a supported MAJOR.MINOR schema version4248 and the report is valid4249 is expected to contain exactly "This report uses a supported MAJOR.MINOR schema version but the PATCH version doesn't match any vendored schema version. Validation will be attempted against version 15.0.6"4250 with license4251 tries to validate against the latest patch version available4252 and the report is invalid4253 is expected to contain exactly "This report uses a supported MAJOR.MINOR schema version but the PATCH version doesn't match any vendored schema version. Validation will be attempted against version 15.0.6"4254 behaves like logs related information4255 logs related information4256 when given a supported schema version4257 behaves like report is valid with no warning4258 and the report is valid4259 is expected to be empty4260 and the report is invalid4261 is expected to be empty4262 when given a deprecated schema version4263 and the report passes schema validation4264 is expected to be empty4265 and the report does not pass schema validation4266 is expected to be empty4267 when given an unsupported schema version4268 behaves like report is valid with no warning4269 and the report is valid4270 is expected to be empty4271 and the report is invalid4272 is expected to be empty4273 when not given a schema version4274 is expected to be empty4275Gitlab::Email::Handler::CreateMergeRequestHandler4276 behaves like reply processing shared examples4277 when the user could not be found4278 raises a UserNotFoundError4279 when the user is not authorized to the project4280 raises a ProjectNotFound4281 when email key4282 matches the new format4283 matches the legacy format4284 doesn't match either format4285 as a non-developer4286 raises UserNotAuthorizedError if the user is not a member4287 as a developer4288 when everything is fine4289 behaves like a new merge request4290 creates a new merge request4291 creates a new merge request with legacy email address4292 behaves like a new merge request4293 creates a new merge request4294 something is wrong4295 when the merge request could not be saved4296 raises an InvalidMergeRequestError4297 when we can't find the incoming_email_token4298 raises an UserNotFoundError4299 when the subject is blank4300 raises an InvalidMergeRequestError4301 when the message body is blank4302 creates a new merge request with description set from the last commit4303 when the email contains patch attachments4304 creates the source branch and applies the patches4305 creates the merge request4306 does not mention the patches in the created merge request4307 when the patch could not be applied4308 raises an error4309 when specifying the target branch using quick actions4310 creates the merge request with the correct target branch4311 based the merge request of the target_branch4312 #patch_attachments4313 orders attachments ending in `.patch` by name4314ContainerRegistry::GitlabApiClient4315 #supports_gitlab_api?4316 registry_gitlab_api_enabled: false, is_on_dot_com: true, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: false, expected_result: true4317 returns the expected result4318 registry_gitlab_api_enabled: true, is_on_dot_com: false, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: true, expected_result: true4319 returns the expected result4320 registry_gitlab_api_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true4321 returns the expected result4322 registry_gitlab_api_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true4323 returns the expected result4324 registry_gitlab_api_enabled: false, is_on_dot_com: true, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: false, expected_result: true4325 returns the expected result4326 registry_gitlab_api_enabled: false, is_on_dot_com: false, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: true, expected_result: false4327 returns the expected result4328 registry_gitlab_api_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false4329 returns the expected result4330 registry_gitlab_api_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false4331 returns the expected result4332 with 401 response4333 is expected to be truthy4334 #pre_import_repository4335 status_code: 200, expected_result: :already_imported4336 is expected to eq :already_imported4337 status_code: 202, expected_result: :ok4338 is expected to eq :ok4339 status_code: 400, expected_result: :bad_request4340 is expected to eq :bad_request4341 status_code: 401, expected_result: :unauthorized4342 is expected to eq :unauthorized4343 status_code: 404, expected_result: :not_found4344 is expected to eq :not_found4345 status_code: 409, expected_result: :already_being_imported4346 is expected to eq :already_being_imported4347 status_code: 418, expected_result: :error4348 is expected to eq :error4349 status_code: 424, expected_result: :pre_import_failed4350 is expected to eq :pre_import_failed4351 status_code: 425, expected_result: :already_being_imported4352 is expected to eq :already_being_imported4353 status_code: 429, expected_result: :too_many_imports4354 is expected to eq :too_many_imports4355 #import_repository4356 status_code: 200, expected_result: :already_imported4357 is expected to eq :already_imported4358 status_code: 202, expected_result: :ok4359 is expected to eq :ok4360 status_code: 400, expected_result: :bad_request4361 is expected to eq :bad_request4362 status_code: 401, expected_result: :unauthorized4363 is expected to eq :unauthorized4364 status_code: 404, expected_result: :not_found4365 is expected to eq :not_found4366 status_code: 409, expected_result: :already_being_imported4367 is expected to eq :already_being_imported4368 status_code: 418, expected_result: :error4369 is expected to eq :error4370 status_code: 424, expected_result: :pre_import_failed4371 is expected to eq :pre_import_failed4372 status_code: 425, expected_result: :already_being_imported4373 is expected to eq :already_being_imported4374 status_code: 429, expected_result: :too_many_imports4375 is expected to eq :too_many_imports4376 #cancel_repository_import4377 status_code: 200, expected_result: :already_imported4378 is expected to eq {:migration_state=>nil, :status=>:already_imported}4379 status_code: 202, expected_result: :ok4380 is expected to eq {:migration_state=>nil, :status=>:ok}4381 status_code: 400, expected_result: :bad_request4382 is expected to eq {:migration_state=>nil, :status=>:bad_request}4383 status_code: 401, expected_result: :unauthorized4384 is expected to eq {:migration_state=>nil, :status=>:unauthorized}4385 status_code: 404, expected_result: :not_found4386 is expected to eq {:migration_state=>nil, :status=>:not_found}4387 status_code: 409, expected_result: :already_being_imported4388 is expected to eq {:migration_state=>nil, :status=>:already_being_imported}4389 status_code: 418, expected_result: :error4390 is expected to eq {:migration_state=>nil, :status=>:error}4391 status_code: 424, expected_result: :pre_import_failed4392 is expected to eq {:migration_state=>nil, :status=>:pre_import_failed}4393 status_code: 425, expected_result: :already_being_imported4394 is expected to eq {:migration_state=>nil, :status=>:already_being_imported}4395 status_code: 429, expected_result: :too_many_imports4396 is expected to eq {:migration_state=>nil, :status=>:too_many_imports}4397 bad request4398 is expected to eq {:migration_state=>"this_is_a_test", :status=>:bad_request}4399 force cancel4400 is expected to eq {:migration_state=>nil, :status=>:ok}4401 #import_status4402 with successful response4403 with a status4404 is expected to eq "this_is_a_test"4405 with no status4406 is expected to eq "error"4407 with non successful response4408 is expected to eq "pre_import_failed"4409 #repository_details4410 with sizing self4411 is expected to eq {"foo"=>"bar", "this"=>"is_a_test"}4412 with sizing self_with_descendants4413 is expected to eq {"foo"=>"bar", "this"=>"is_a_test"}4414 with sizing4415 is expected to eq {"foo"=>"bar", "this"=>"is_a_test"}4416 with non successful response4417 is expected to eq {}4418 #tags4419 with valid parameters4420 is expected to eq {:pagination=>{}, :response_body=>[{"created_at"=>"2023-06-02T06:32:18.626Z", "digest"=>"sha256:12345...a_type"=>"application/vnd.oci.image.manifest.v1+json", "name"=>"latest", "size_bytes"=>1234567892}]}4421 with a response with a link header4422 is expected to eq {:pagination=>{:next=>{:uri=>#<URI::HTTP http://sandbox.org/test?last=b>}}, :response_body=>[{"create...a_type"=>"application/vnd.oci.image.manifest.v1+json", "name"=>"latest", "size_bytes"=>1234567892}]}4423 with a large page size set4424 is expected to eq {:pagination=>{}, :response_body=>[{"created_at"=>"2023-06-02T06:32:18.705Z", "digest"=>"sha256:12345...a_type"=>"application/vnd.oci.image.manifest.v1+json", "name"=>"latest", "size_bytes"=>1234567892}]}4425 with a last parameter set4426 is expected to eq {:pagination=>{}, :response_body=>[{"created_at"=>"2023-06-02T06:32:18.747Z", "digest"=>"sha256:12345...a_type"=>"application/vnd.oci.image.manifest.v1+json", "name"=>"latest", "size_bytes"=>1234567892}]}4427 with non successful response4428 logs an error and returns an empty hash4429 #sub_repositories_with_tag4430 with valid parameters4431 is expected to eq {:pagination=>{}, :response_body=>[{"created_at"=>"2022-06-07T12:11:13.633+00:00", "name"=>"docker-al...git-base", "path"=>"gitlab-org/build/cng/git-base", "updated_at"=>"2022-06-07T14:37:49.251+00:00"}]}4432 with a response with a link header4433 is expected to eq {:pagination=>{:next=>{:uri=>#<URI::HTTP http://sandbox.org/test?last=c>}}, :response_body=>[{"create...git-base", "path"=>"gitlab-org/build/cng/git-base", "updated_at"=>"2022-06-07T14:37:49.251+00:00"}]}4434 with a large page size set4435 is expected to eq {:pagination=>{}, :response_body=>[{"created_at"=>"2022-06-07T12:11:13.633+00:00", "name"=>"docker-al...git-base", "path"=>"gitlab-org/build/cng/git-base", "updated_at"=>"2022-06-07T14:37:49.251+00:00"}]}4436 with a last parameter set4437 is expected to eq {:pagination=>{}, :response_body=>[{"created_at"=>"2022-06-07T12:11:13.633+00:00", "name"=>"docker-al...git-base", "path"=>"gitlab-org/build/cng/git-base", "updated_at"=>"2022-06-07T14:37:49.251+00:00"}]}4438 with non successful response4439 logs an error and returns an empty hash4440 .supports_gitlab_api?4441 registry_gitlab_api_enabled: true, is_on_dot_com: true, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: false, expected_result: true4442 returns the expected result4443 registry_gitlab_api_enabled: true, is_on_dot_com: false, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: true, expected_result: true4444 returns the expected result4445 registry_gitlab_api_enabled: false, is_on_dot_com: true, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: false, expected_result: true4446 returns the expected result4447 registry_gitlab_api_enabled: false, is_on_dot_com: false, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: true, expected_result: false4448 returns the expected result4449 registry_gitlab_api_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true4450 returns the expected result4451 registry_gitlab_api_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true4452 returns the expected result4453 registry_gitlab_api_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false4454 returns the expected result4455 registry_gitlab_api_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false4456 returns the expected result4457 with the registry disabled4458 returns false4459 with a blank registry url4460 returns false4461 .deduplicated_size4462 with successful response4463 is expected to eq 5554464 with unsuccessful response4465 is expected to eq nil4466 with the registry disabled4467 is expected to eq nil4468 with a nil path4469 is expected to eq nil4470 with uppercase path4471 is expected to eq 5554472 .one_project_with_container_registry_tag4473 with successful response4474 behaves like fetching the project from container repository and path4475 fetches the project from the given path details4476 returns nil when path is invalid4477 returns nil when there is no container_repository matching the path4478 with unsuccessful response4479 is expected to eq nil4480 with uppercase path4481 behaves like fetching the project from container repository and path4482 fetches the project from the given path details4483 returns nil when path is invalid4484 returns nil when there is no container_repository matching the path4485 #each_sub_repositories_with_tag_page4486 when no block is given4487 raises an Argument error4488 when a block is given4489 with an empty page4490 behaves like iterating through a page4491 iterates through one page4492 with one page4493 behaves like iterating through a page4494 iterates through one page4495 with two pages4496 iterates through two pages4497 when max pages is reached4498 raises an error4499 without a page size set4500 uses a default size4501 with an empty client response4502 breaks the loop4503 with a nil page4504 behaves like iterating through a page4505 iterates through one page4506Git::TagHooksService4507 System hooks4508 executes system hooks4509 Webhooks4510 executes hooks on the project4511 Pipelines4512 creates a new pipeline4513 Push data4514 annotated tag4515 has expected push data attributes4516 with repository data4517 has expected repository attributes4518 with commits4519 is expected to be a kind of Array4520 has 1 element4521 the commit4522 is expected to include {:timestamp => "2014-02-27T11:01:38+02:00"}4523 has expected commit attributes4524 with an author4525 has expected author attributes4526 lightweight tag4527 has expected push data attributes4528 with repository data4529 has expected repository attributes4530 with commits4531 is expected to be a kind of Array4532 has 1 element4533 the commit4534 is expected to include {:timestamp => "2014-02-27T11:01:38+02:00"}4535 has expected commit attributes4536 with an author4537 has expected author attributes4538Avatarable4539 #update4540 when avatar changed4541 validates the file size4542 when avatar was not changed4543 skips validation of file size4544 #avatar_path4545 with caching enabled4546 only calls local_url once4547 calls local_url twice for path and URLs4548 calls local_url twice for different sizes4549 handles unpersisted objects4550 has_asset_host: true, visibility_level: 0, only_path: true, avatar_path_prefix: ["https://gitlab.example.com", "/gitlab"]4551 returns the expected avatar path4552 returns the expected avatar path with width parameter4553 when avatar is stored remotely4554 returns the expected avatar path4555 has_asset_host: true, visibility_level: 0, only_path: false, avatar_path_prefix: ["https://gitlab.example.com", "/gitlab"]4556 returns the expected avatar path4557 returns the expected avatar path with width parameter4558 when avatar is stored remotely4559 returns the expected avatar path4560 has_asset_host: true, visibility_level: 10, only_path: true, avatar_path_prefix: ["https://gitlab.example.com", "/gitlab"]4561 returns the expected avatar path4562 returns the expected avatar path with width parameter4563 when avatar is stored remotely4564 returns the expected avatar path4565 has_asset_host: true, visibility_level: 10, only_path: false, avatar_path_prefix: ["https://gitlab.example.com", "/gitlab"]4566 returns the expected avatar path4567 returns the expected avatar path with width parameter4568 when avatar is stored remotely4569 returns the expected avatar path4570 has_asset_host: true, visibility_level: 20, only_path: true, avatar_path_prefix: []4571 returns the expected avatar path4572 returns the expected avatar path with width parameter4573 when avatar is stored remotely4574 returns the expected avatar path4575 has_asset_host: true, visibility_level: 20, only_path: false, avatar_path_prefix: ["https://gitlab-assets.example.com"]4576 returns the expected avatar path4577 returns the expected avatar path with width parameter4578 when avatar is stored remotely4579 returns the expected avatar path4580 has_asset_host: false, visibility_level: 0, only_path: true, avatar_path_prefix: ["/gitlab"]4581 returns the expected avatar path4582 returns the expected avatar path with width parameter4583 when avatar is stored remotely4584 returns the expected avatar path4585 has_asset_host: false, visibility_level: 0, only_path: false, avatar_path_prefix: ["https://gitlab.example.com", "/gitlab"]4586 returns the expected avatar path4587 returns the expected avatar path with width parameter4588 when avatar is stored remotely4589 returns the expected avatar path4590 has_asset_host: false, visibility_level: 10, only_path: true, avatar_path_prefix: ["/gitlab"]4591 returns the expected avatar path4592 returns the expected avatar path with width parameter4593 when avatar is stored remotely4594 returns the expected avatar path4595 has_asset_host: false, visibility_level: 10, only_path: false, avatar_path_prefix: ["https://gitlab.example.com", "/gitlab"]4596 returns the expected avatar path4597 returns the expected avatar path with width parameter4598 when avatar is stored remotely4599 returns the expected avatar path4600 has_asset_host: false, visibility_level: 20, only_path: true, avatar_path_prefix: ["/gitlab"]4601 returns the expected avatar path4602 returns the expected avatar path with width parameter4603 when avatar is stored remotely4604 returns the expected avatar path4605 has_asset_host: false, visibility_level: 20, only_path: false, avatar_path_prefix: ["https://gitlab.example.com", "/gitlab"]4606 returns the expected avatar path4607 returns the expected avatar path with width parameter4608 when avatar is stored remotely4609 returns the expected avatar path4610Milestones::TransferService4611 #execute4612 when old_group is present4613 without existing milestone at the new group level4614 recreates the missing group milestones at project level4615 applies new project milestone to issues with group milestone4616 deletes milestone counters cache for both milestones4617 does not apply new project milestone to issues with project milestone4618 applies new project milestone to merge_requests with group milestone4619 does not apply new project milestone to issuables with project milestone4620 does not recreate missing group milestones that are not applied to issues or merge requests4621 when milestone is from an ancestor group4622 recreates the missing group milestones at project level4623 when find_or_create_milestone returns nil4624 removes issues group milestone4625 removes merge requests group milestone4626 with existing milestone at the new group level4627 does not create a new milestone4628 applies existing milestone to issues with group milestone4629 applies existing milestone to merge_requests with group milestone4630 when old_group is not present4631 returns nil4632Ci::PipelineArtifact4633 associations4634 is expected to belong to pipeline required: false4635 is expected to belong to project required: false4636 behaves like having unique enum values4637 has unique values in "file_format"4638 has unique values in "locked"4639 has unique values in "file_type"4640 behaves like UpdateProjectStatistics4641 is expected to be a new record4642 validations4643 is expected to validate that :pipeline cannot be empty/falsy4644 is expected to validate that :project cannot be empty/falsy4645 is expected to validate that :file_type cannot be empty/falsy4646 is expected to validate that :file_format cannot be empty/falsy4647 is expected to validate that :size cannot be empty/falsy4648 is expected to validate that :file cannot be empty/falsy4649 when attributes are valid4650 returns no errors4651 when file_store is invalid4652 returns errors4653 when size is over 10 megabytes4654 returns errors4655 scopes4656 .unlocked4657 when pipeline is locked4658 returns an empty collection4659 when pipeline is unlocked4660 returns unlocked artifacts4661 file is being stored4662 when existing object has local store4663 behaves like mounted file in local store4664 is stored locally4665 when direct upload is enabled4666 when file is stored4667 behaves like mounted file in object store4668 is stored remotely4669 when file contains multi-byte characters4670 sets the size in bytesize4671 .report_exists?4672 when file_type is code_coverage4673 when pipeline artifact has a coverage report4674 returns true4675 when pipeline artifact does not have a coverage report4676 returns false4677 when file_type is code_quality_mr_diff4678 when pipeline artifact has a codequality mr diff report4679 returns true4680 when pipeline artifact does not have a codequality mr diff report4681 returns false4682 when file_type is nil4683 returns false4684 .find_by_file_type4685 when file_type is code_coverage4686 when pipeline artifact has a coverage report4687 returns a pipeline artifact with a coverage report4688 when pipeline artifact does not have a coverage report4689 returns nil4690 when file_type is code_quality_mr_diff4691 when pipeline artifact has a quality report4692 returns a pipeline artifact with a quality report4693 when pipeline artifact does not have a quality report4694 returns nil4695 when file_type is nil4696 returns nil4697 .create_or_replace_for_pipeline!4698 when there is no existing record4699 creates a new pipeline artifact for the given parameters4700 creates a new pipeline artifact with pipeline's locked state4701 when there are existing records with different types4702 replaces the existing pipeline artifact record with the given file type4703 when ActiveRecordError is raised4704 tracks and raise the exception4705 #present4706 when file_type is code_coverage4707 uses code coverage presenter4708 when file_type is code_quality_mr_diff4709 uses code codequality mr diff presenter4710 loose foreign key on ci_pipeline_artifacts.project_id4711 behaves like cleanup by a loose foreign key4712 cleans up (delete or nullify) the model4713Gitlab::Database::WithLockRetriesOutsideTransaction4714 #run4715 requires block4716 when DISABLE_LOCK_RETRIES is set4717 executes the passed block without retrying4718 when lock retry is enabled4719 lock_fiber4720 acquires lock successfully4721 after 3 iterations4722 behaves like retriable exclusive lock on `projects`4723 succeeds executing the given block4724 setting the idle transaction timeout4725 when there is no outer transaction: disable_ddl_transaction! is set in the migration4726 does not disable the idle transaction timeout4727 when there is outer transaction: disable_ddl_transaction! is not set in the migration4728 disables the idle transaction timeout so the code can sleep and retry4729 after the retries are exhausted4730 disables the lock_timeout4731 after the retries, without setting lock_timeout4732 behaves like retriable exclusive lock on `projects`4733 succeeds executing the given block4734 after the retries, when requested to raise an error4735 raises an error instead of waiting indefinitely for the lock4736 when statement timeout is reached4737 raises StatementInvalid error4738 restore local database variables4739 is expected not to change `connection.execute("SHOW lock_timeout").to_a`4740 is expected not to change `connection.execute("SHOW idle_in_transaction_session_timeout").to_a`4741 casting durations correctly4742 executes `SET lock_timeout` using the configured timeout value in milliseconds4743 calls `sleep` after the first iteration fails, using the configured sleep time4744Sbom::PackageUrl4745 # order random4746 #parse4747 delegates parsing to the decoder4748 #initialize4749 with well-formed arguments4750 valid maven purl4751 is expected to have attributes {:name => "io", :namespace => "org.apache.commons", :qualifiers => nil, :subpath => nil, :type => "maven", :version => "1.3.4"}4752 basic valid maven purl without version4753 is expected to have attributes {:name => "io", :namespace => "org.apache.commons", :qualifiers => nil, :subpath => nil, :type => "maven", :version => nil}4754 valid go purl without version and with subpath4755 is expected to have attributes {:name => "genproto", :namespace => "google.golang.org", :qualifiers => nil, :subpath => "googleapis/api/annotations", :type => "golang", :version => nil}4756 valid go purl with version and subpath4757 is expected to have attributes {:name => "genproto", :namespace => "google.golang.org", :qualifiers => nil, :subpath => "googleapis/api/annotations", :type => "golang", :version => "abcdedf"}4758 bitbucket namespace and name should be lowercased4759 is expected to have attributes {:name => "pygments-main", :namespace => "birkenfeld", :qualifiers => nil, :subpath => nil, :type => "bitbucket", :version => "244fd47e07d1014f0aed9c"}4760 github namespace and name should be lowercased4761 is expected to have attributes {:name => "purl-spec", :namespace => "package-url", :qualifiers => nil, :subpath => nil, :type => "github", :version => "244fd47e07d1004f0aed9c"}4762 debian can use qualifiers4763 is expected to have attributes {:name => "curl", :namespace => "debian", :qualifiers => {"arch" => "i386", "distro" => "jessie"}, :subpath => nil, :type => "deb", :version => "7.50.3-1"}4764 docker uses qualifiers and hash image id as versions4765 is expected to have attributes {:name => "dockerimage", :namespace => "customer", :qualifiers => {"repository_url" => "gcr.io"}, :subpath => nil, :type => "docker", :version => "sha256:244fd47e07d1004f0aed9c"}4766 Java gem can use a qualifier4767 is expected to have attributes {:name => "jruby-launcher", :namespace => nil, :qualifiers => {"platform" => "java"}, :subpath => nil, :type => "gem", :version => "1.1.2"}4768 maven often uses qualifiers4769 is expected to have attributes {:name => "batik-anim", :namespace => "org.apache.xmlgraphics", :qualifiers => {"classifier" => "sources", "repository_url" => "repo.spring.io/release"}, :subpath => nil, :type => "maven", :version => "1.9.1"}4770 maven pom reference4771 is expected to have attributes {:name => "batik-anim", :namespace => "org.apache.xmlgraphics", :qualifiers => {"extension" => "pom", "repository_url" => "repo.spring.io/release"}, :subpath => nil, :type => "maven", :version => "1.9.1"}4772 maven can come with a type qualifier4773 is expected to have attributes {:name => "jacob", :namespace => "net.sf.jacob-project", :qualifiers => {"classifier" => "x86", "type" => "dll"}, :subpath => nil, :type => "maven", :version => "1.14.3"}4774 npm can be scoped4775 is expected to have attributes {:name => "animation", :namespace => "@angular", :qualifiers => nil, :subpath => nil, :type => "npm", :version => "12.3.1"}4776 nuget names are case sensitive4777 is expected to have attributes {:name => "EnterpriseLibrary.Common", :namespace => nil, :qualifiers => nil, :subpath => nil, :type => "nuget", :version => "6.0.1304"}4778 pypi names have special rules and not case sensitive4779 is expected to have attributes {:name => "django-package", :namespace => nil, :qualifiers => nil, :subpath => nil, :type => "pypi", :version => "1.11.1.dev1"}4780 rpm often use qualifiers4781 is expected to have attributes {:name => "curl", :namespace => "fedora", :qualifiers => {"arch" => "i386", "distro" => "fedora-25"}, :subpath => nil, :type => "rpm", :version => "7.50.3-1.fc25"}4782 slash / after scheme is not significant4783 is expected to have attributes {:name => "io", :namespace => "org.apache.commons", :qualifiers => nil, :subpath => nil, :type => "maven", :version => nil}4784 double slash // after scheme is not significant4785 is expected to have attributes {:name => "io", :namespace => "org.apache.commons", :qualifiers => nil, :subpath => nil, :type => "maven", :version => nil}4786 slash /// after type is not significant4787 is expected to have attributes {:name => "io", :namespace => "org.apache.commons", :qualifiers => nil, :subpath => nil, :type => "maven", :version => nil}4788 valid maven purl with case sensitive namespace and name4789 is expected to have attributes {:name => "HTTPClient", :namespace => "HTTPClient", :qualifiers => nil, :subpath => nil, :type => "maven", :version => "0.3-3"}4790 valid maven purl containing a space in the version and qualifier4791 is expected to have attributes {:name => "myartifact", :namespace => "mygroup", :qualifiers => {"mykey" => "my value"}, :subpath => nil, :type => "maven", :version => "1.0.0 Final"}4792 valid conan purl4793 is expected to have attributes {:name => "cctz", :namespace => nil, :qualifiers => nil, :subpath => nil, :type => "conan", :version => "2.3"}4794 valid conan purl with namespace and qualifier channel4795 is expected to have attributes {:name => "cctz", :namespace => "bincrafters", :qualifiers => {"channel" => "stable"}, :subpath => nil, :type => "conan", :version => "2.3"}4796 valid conda purl with qualifiers4797 is expected to have attributes {:name => "absl-py", :namespace => nil, :qualifiers => {"build" => "py36h06a4308_0", "channel" => "main", "subdir" => "linux-64", "type" => "tar.bz2"}, :subpath => nil, :type => "conda", :version => "0.4.1"}4798 valid cran purl4799 is expected to have attributes {:name => "A3", :namespace => nil, :qualifiers => nil, :subpath => nil, :type => "cran", :version => "0.9.1"}4800 valid swift purl4801 is expected to have attributes {:name => "Alamofire", :namespace => "github.com/Alamofire", :qualifiers => nil, :subpath => nil, :type => "swift", :version => "5.4.3"}4802 valid hackage purl4803 is expected to have attributes {:name => "AC-HalfInteger", :namespace => nil, :qualifiers => nil, :subpath => nil, :type => "hackage", :version => "1.2.1"}4804 when no arguments are given4805 is expected to raise ArgumentError4806 when parameters are invalid4807 a scheme is always required4808 raises an ArgumentError4809 a type is always required4810 raises an ArgumentError4811 a name is required4812 raises an ArgumentError4813 checks for invalid qualifier keys4814 raises an ArgumentError4815 invalid conan purl only namespace4816 raises an ArgumentError4817 invalid conan purl only channel qualifier4818 raises an ArgumentError4819 invalid cran purl without name4820 raises an ArgumentError4821 invalid cran purl without version4822 raises an ArgumentError4823 invalid swift purl without namespace4824 raises an ArgumentError4825 invalid swift purl without name4826 raises an ArgumentError4827 invalid swift purl without version4828 raises an ArgumentError4829 name and version are always required4830 raises an ArgumentError4831 normalization4832 downcases provided type component4833 does not down provided name component4834 #to_s4835 delegates to_s to the encoder4836 #to_h4837 valid maven purl4838 is expected to eq {:name=>"io", :namespace=>"org.apache.commons", :qualifiers=>nil, :scheme=>"pkg", :subpath=>nil, :type=>"maven", :version=>"1.3.4"}4839 basic valid maven purl without version4840 is expected to eq {:name=>"io", :namespace=>"org.apache.commons", :qualifiers=>nil, :scheme=>"pkg", :subpath=>nil, :type=>"maven", :version=>nil}4841 valid go purl without version and with subpath4842 is expected to eq {:name=>"genproto", :namespace=>"google.golang.org", :qualifiers=>nil, :scheme=>"pkg", :subpath=>"googleapis/api/annotations", :type=>"golang", :version=>nil}4843 valid go purl with version and subpath4844 is expected to eq {:name=>"genproto", :namespace=>"google.golang.org", :qualifiers=>nil, :scheme=>"pkg", :subpath=>"googleapis/api/annotations", :type=>"golang", :version=>"abcdedf"}4845 bitbucket namespace and name should be lowercased4846 is expected to eq {:name=>"pygments-main", :namespace=>"birkenfeld", :qualifiers=>nil, :scheme=>"pkg", :subpath=>nil, :type=>"bitbucket", :version=>"244fd47e07d1014f0aed9c"}4847 github namespace and name should be lowercased4848 is expected to eq {:name=>"purl-spec", :namespace=>"package-url", :qualifiers=>nil, :scheme=>"pkg", :subpath=>nil, :type=>"github", :version=>"244fd47e07d1004f0aed9c"}4849 debian can use qualifiers4850 is expected to eq {:name=>"curl", :namespace=>"debian", :qualifiers=>{"arch"=>"i386", "distro"=>"jessie"}, :scheme=>"pkg", :subpath=>nil, :type=>"deb", :version=>"7.50.3-1"}4851 docker uses qualifiers and hash image id as versions4852 is expected to eq {:name=>"dockerimage", :namespace=>"customer", :qualifiers=>{"repository_url"=>"gcr.io"}, :scheme=>"pkg", :subpath=>nil, :type=>"docker", :version=>"sha256:244fd47e07d1004f0aed9c"}4853 Java gem can use a qualifier4854 is expected to eq {:name=>"jruby-launcher", :namespace=>nil, :qualifiers=>{"platform"=>"java"}, :scheme=>"pkg", :subpath=>nil, :type=>"gem", :version=>"1.1.2"}4855 maven often uses qualifiers4856 is expected to eq {:name=>"batik-anim", :namespace=>"org.apache.xmlgraphics", :qualifiers=>{"classifier"=>"sources", "r...y_url"=>"repo.spring.io/release"}, :scheme=>"pkg", :subpath=>nil, :type=>"maven", :version=>"1.9.1"}4857 maven pom reference4858 is expected to eq {:name=>"batik-anim", :namespace=>"org.apache.xmlgraphics", :qualifiers=>{"extension"=>"pom", "reposi...y_url"=>"repo.spring.io/release"}, :scheme=>"pkg", :subpath=>nil, :type=>"maven", :version=>"1.9.1"}4859 maven can come with a type qualifier4860 is expected to eq {:name=>"jacob", :namespace=>"net.sf.jacob-project", :qualifiers=>{"classifier"=>"x86", "type"=>"dll"}, :scheme=>"pkg", :subpath=>nil, :type=>"maven", :version=>"1.14.3"}4861 npm can be scoped4862 is expected to eq {:name=>"animation", :namespace=>"@angular", :qualifiers=>nil, :scheme=>"pkg", :subpath=>nil, :type=>"npm", :version=>"12.3.1"}4863 nuget names are case sensitive4864 is expected to eq {:name=>"EnterpriseLibrary.Common", :namespace=>nil, :qualifiers=>nil, :scheme=>"pkg", :subpath=>nil, :type=>"nuget", :version=>"6.0.1304"}4865 pypi names have special rules and not case sensitive4866 is expected to eq {:name=>"django-package", :namespace=>nil, :qualifiers=>nil, :scheme=>"pkg", :subpath=>nil, :type=>"pypi", :version=>"1.11.1.dev1"}4867 rpm often use qualifiers4868 is expected to eq {:name=>"curl", :namespace=>"fedora", :qualifiers=>{"arch"=>"i386", "distro"=>"fedora-25"}, :scheme=>"pkg", :subpath=>nil, :type=>"rpm", :version=>"7.50.3-1.fc25"}4869 slash / after scheme is not significant4870 is expected to eq {:name=>"io", :namespace=>"org.apache.commons", :qualifiers=>nil, :scheme=>"pkg", :subpath=>nil, :type=>"maven", :version=>nil}4871 double slash // after scheme is not significant4872 is expected to eq {:name=>"io", :namespace=>"org.apache.commons", :qualifiers=>nil, :scheme=>"pkg", :subpath=>nil, :type=>"maven", :version=>nil}4873 slash /// after type is not significant4874 is expected to eq {:name=>"io", :namespace=>"org.apache.commons", :qualifiers=>nil, :scheme=>"pkg", :subpath=>nil, :type=>"maven", :version=>nil}4875 valid maven purl with case sensitive namespace and name4876 is expected to eq {:name=>"HTTPClient", :namespace=>"HTTPClient", :qualifiers=>nil, :scheme=>"pkg", :subpath=>nil, :type=>"maven", :version=>"0.3-3"}4877 valid maven purl containing a space in the version and qualifier4878 is expected to eq {:name=>"myartifact", :namespace=>"mygroup", :qualifiers=>{"mykey"=>"my value"}, :scheme=>"pkg", :subpath=>nil, :type=>"maven", :version=>"1.0.0 Final"}4879 valid conan purl4880 is expected to eq {:name=>"cctz", :namespace=>nil, :qualifiers=>nil, :scheme=>"pkg", :subpath=>nil, :type=>"conan", :version=>"2.3"}4881 valid conan purl with namespace and qualifier channel4882 is expected to eq {:name=>"cctz", :namespace=>"bincrafters", :qualifiers=>{"channel"=>"stable"}, :scheme=>"pkg", :subpath=>nil, :type=>"conan", :version=>"2.3"}4883 valid conda purl with qualifiers4884 is expected to eq {:name=>"absl-py", :namespace=>nil, :qualifiers=>{"build"=>"py36h06a4308_0", "channel"=>"main", "subd..."=>"linux-64", "type"=>"tar.bz2"}, :scheme=>"pkg", :subpath=>nil, :type=>"conda", :version=>"0.4.1"}4885 valid cran purl4886 is expected to eq {:name=>"A3", :namespace=>nil, :qualifiers=>nil, :scheme=>"pkg", :subpath=>nil, :type=>"cran", :version=>"0.9.1"}4887 valid swift purl4888 is expected to eq {:name=>"Alamofire", :namespace=>"github.com/Alamofire", :qualifiers=>nil, :scheme=>"pkg", :subpath=>nil, :type=>"swift", :version=>"5.4.3"}4889 valid hackage purl4890 is expected to eq {:name=>"AC-HalfInteger", :namespace=>nil, :qualifiers=>nil, :scheme=>"pkg", :subpath=>nil, :type=>"hackage", :version=>"1.2.1"}4891DiffHelper4892 diff_view4893 uses the view param over the cookie4894 returns the default value when the view param is invalid4895 returns a valid value when cookie is set4896 returns the default value when cookie is invalid4897 returns the default value when cookie is nil4898 diff_options4899 returns no collapse false4900 returns no collapse true if expanded4901 when action name is diff_for_path4902 returns expanded true4903 returns paths if param old path4904 returns paths if param new path4905 does not set max_patch_bytes_for_file_extension4906 when file_identifier include .ipynb4907 when large_ipynb_diffs is disabled4908 does not set max_patch_bytes_for_file_extension4909 when large_ipynb_diffs is enabled4910 sets max_patch_bytes_for_file_extension4911 #diff_line_content4912 when the line is empty4913 returns a non breaking space4914 returns an HTML-safe string4915 when the line is not empty4916 when the line starts with +, -, or a space4917 strips the first character4918 when the line is HTML-safe4919 returns an HTML-safe string4920 when the line is not HTML-safe4921 returns a non-HTML-safe string4922 when the line does not start with a +, -, or a space4923 returns the string4924 when the line is HTML-safe4925 returns an HTML-safe string4926 when the line is not HTML-safe4927 returns a non-HTML-safe string4928 #diff_link_number4929 line_type: "new", match: "new", line_number: 1, expected_return_value: " "4930 returns the expected value4931 line_type: "new", match: "old", line_number: 2, expected_return_value: 24932 returns the expected value4933 line_type: "old", match: "new", line_number: 3, expected_return_value: 34934 returns the expected value4935 line_type: "old", match: "old", line_number: 4, expected_return_value: " "4936 returns the expected value4937 line_type: "new-nonewline", match: "new", line_number: 5, expected_return_value: 54938 returns the expected value4939 line_type: "new-nonewline", match: "old", line_number: 6, expected_return_value: 64940 returns the expected value4941 line_type: "old-nonewline", match: "new", line_number: 7, expected_return_value: 74942 returns the expected value4943 line_type: "old-nonewline", match: "old", line_number: 8, expected_return_value: 84944 returns the expected value4945 line_type: "match", match: "new", line_number: 9, expected_return_value: 94946 returns the expected value4947 line_type: "match", match: "old", line_number: 10, expected_return_value: 104948 returns the expected value4949 #mark_inline_diffs4950 returns strings with marked inline diffs4951 when given HTML4952 sanitizes it4953 sanitizes the entire line, not just the changes4954 #parallel_diff_discussions4955 does not put comments on nonewline lines4956 puts comments on added lines4957 puts comments on unchanged lines4958 #diff_match_line4959 generates foldable top match line for inline view with empty text by default4960 allows to define text and bottom option4961 generates match line for parallel view4962 allows to generate only left match line for parallel view4963 allows to generate only right match line for parallel view4964 #diff_nomappinginraw_line4965 generates only single line num4966 generates only both line nums4967 line_type: "old-nomappinginraw", added_class: ".old"4968 appends the correct class4969 line_type: "new-nomappinginraw", added_class: ".new"4970 appends the correct class4971 line_type: "unchanged-nomappinginraw", added_class: ""4972 appends the correct class4973 #render_overflow_warning?4974 when no limits are hit4975 returns false and does not log any overflow events4976 overflow_method: :overflow_max_bytes?, event_name: :diffs_overflow_max_bytes_limits4977 returns false and only logs the correct collection overflow event4978 overflow_method: :overflow_max_files?, event_name: :diffs_overflow_max_files_limits4979 returns false and only logs the correct collection overflow event4980 overflow_method: :overflow_max_lines?, event_name: :diffs_overflow_max_lines_limits4981 returns false and only logs the correct collection overflow event4982 overflow_method: :collapsed_safe_bytes?, event_name: :diffs_overflow_collapsed_bytes_limits4983 returns false and only logs the correct collection overflow event4984 overflow_method: :collapsed_safe_files?, event_name: :diffs_overflow_collapsed_files_limits4985 returns false and only logs the correct collection overflow event4986 overflow_method: :collapsed_safe_lines?, event_name: :diffs_overflow_collapsed_lines_limits4987 returns false and only logs the correct collection overflow event4988 when the file collection has an overflow4989 returns true and only logs all the correct collection overflow event4990 when two individual files are too big4991 returns false and only logs single file overflow events4992 #diff_file_html_data4993 returns data for project files4994 #collapsed_diff_url4995 returns a valid URL4996 #params_with_whitespace4997 filters with safe_params4998 #render_fork_suggestion4999 user signed in5000 renders the partial5001 guest5002 is expected to be nil5003 #conflicts5004 returns list of conflicts indexed by path5005 when merge request can be merged5006 returns nil5007 when source branch does not exist5008 returns nil5009 when target branch does not exist5010 returns nil5011 when conflicts cannot be resolved in UI5012 returns nil5013 when allow_tree_conflicts is true5014 returns list of conflicts5015 when Gitlab::Git::Conflict::Resolver::ConflictSideMissing exception is raised5016 returns an empty hash5017 #show_only_context_commits?5018 when only_context_commits param is set to true5019 is expected to be truthy5020 when merge request has commits5021 is expected to be truthy5022 when only_context_commits param is set to false5023 is expected to be truthy5024 when merge request has commits5025 is expected to be falsey5026Integrations::ChatMessage::PipelineMessage5027 returns an empty pretext5028 returns the pipeline summary in the activity's title5029 returns pipeline name5030 returns a link to the project in the activity's subtitle5031 returns the build duration in the activity's text property5032 returns the user's avatar image URL in the activity's image property5033 returns the pipeline summary as the attachment's fallback property5034 returns 'good' as the attachment's color property5035 returns the committer's name and username as the attachment's author_name property5036 returns the committer's avatar URL as the attachment's author_icon property5037 returns the committer's GitLab profile URL as the attachment's author_link property5038 returns the pipeline ID, status, and duration as the attachment's title property5039 returns the pipeline URL as the attachment's title_link property5040 returns three attachment fields5041 returns the commit message as the attachment's second field property5042 returns the ref name and link as the attachment's second field property5043 returns the project's name as the attachment's footer property5044 returns the project's avatar URL as the attachment's footer_icon property5045 returns the pipeline's timestamp as the attachment's ts property5046 behaves like Integrations::ChatMessage5047 when input contains link markup5048 strips all link markup characters5049 when the pipeline failed5050 returns the summary with a 'failed' status5051 when the pipeline passed with warnings5052 returns the summary with a 'passed with warnings' status5053 when no user is provided because the pipeline was triggered by the API5054 returns the summary with 'API' as the username5055 when the user does not have an avatar5056 returns an empty string in the activity's image property5057 when the pipeline failed5058 returns 'danger' as the attachment's color property5059 when the pipeline passed with warnings5060 returns 'warning' as the attachment's color property5061 when no user is provided because the pipeline was triggered by the API5062 returns the committer's name and username as the attachment's author_name property5063 returns nil as the attachment's author_icon property5064 returns nil as the attachment's author_link property5065 when a job in the pipeline fails5066 returns five attachment fields5067 returns the stage name and link to the 'Failed jobs' tab on the pipeline's page as the attachment's third field property5068 returns the job name and link as the attachment's fourth field property5069 when lots of jobs across multiple stages fail5070 returns the stage names and links to the 'Failed jobs' tab on the pipeline's page as the attachment's third field property5071 returns the job names and links as the attachment's fourth field property5072 when jobs succeed on retries5073 do not return a job which succeeded on retry5074 when jobs failed even on retries5075 returns only first instance of the failed job5076 when the CI config file contains a YAML error5077 returns four attachment fields5078 returns the YAML error deatils as the attachment's third field property5079 when rendering markdown5080 returns the pipeline summary as the attachments in markdown format5081Gitlab::Auth::RequestAuthenticator5082 #user5083 returns sessionless user first5084 returns session user if no sessionless user found5085 returns nil if no user found5086 bubbles up exceptions5087 #can_sign_in_bot?5088 the user is nil5089 is expected not to be can sign in bot nil5090 the user is a bot, but for a web request5091 is expected not to be can sign in bot #<User id: @user516>5092 the user is a regular user, for an API request5093 is expected not to be can sign in bot #<User id: @user517>5094 the user is a project bot, for an API request5095 is expected to be can sign in bot #<User id: @user518>5096 #find_authenticated_requester5097 returns the deploy token if it exists5098 returns the user id if it exists5099 rerturns nil if no match is found5100 #find_sessionless_user5101 returns dependency_proxy user first5102 returns access_token user if no dependency_proxy user found5103 returns feed_token user if no access_token user found5104 returns static_object_token user if no feed_token user found5105 returns job_token user if no static_object_token user found5106 returns nil even if basic_auth_access_token is available5107 returns nil even if find_user_from_lfs_token is available5108 returns nil if no user found5109 rescue Gitlab::Auth::AuthenticationError exceptions5110 in an API request5111 returns basic_auth_access_token user if no job_token_user found5112 in a Git request5113 returns lfs_token user if no job_token user found5114 returns basic_auth_access_token user if no lfs_token user found5115 returns basic_auth_access_password user if no basic_auth_access_token user found5116 returns nil if no user found5117 dependency proxy5118 with a user5119 behaves like identifying dependency proxy urls properly with5120 with pulling a manifest5121 is expected to eq #<User id:1395 @user529>5122 with pulling a blob5123 is expected to eq #<User id:1395 @user529>5124 with any other path5125 is expected to eq nil5126 with an invalid id5127 behaves like identifying dependency proxy urls properly with5128 with pulling a manifest5129 is expected to eq nil5130 with pulling a blob5131 is expected to eq nil5132 with any other path5133 is expected to eq nil5134 with a deploy token5135 behaves like identifying dependency proxy urls properly with5136 with pulling a manifest5137 is expected to eq nil5138 with pulling a blob5139 is expected to eq nil5140 with any other path5141 is expected to eq nil5142 with no jwt token5143 behaves like identifying dependency proxy urls properly with5144 with pulling a manifest5145 is expected to eq nil5146 with pulling a blob5147 is expected to eq nil5148 with any other path5149 is expected to eq nil5150 with an expired jwt token5151 returns nil5152 #find_personal_access_token_from_http_basic_auth5153 with API requests5154 tries to find the user5155 returns nil if the token is revoked5156 returns nil if the token does not have API scope5157 without API requests5158 does not search for job users5159 #find_user_from_job_token5160 with API requests5161 tries to find the user5162 returns nil if the job is not running5163 without API requests5164 does not search for job users5165 #runner5166 returns the runner using #find_runner_from_token5167 returns nil if no runner is found5168 rescue Gitlab::Auth::AuthenticationError exceptions5169 #route_authentication_setting5170 script_name: "/api/endpoint", expected_job_token_allowed: true, expected_basic_auth_personal_access_token: true, expected_deploy_token_allowed: true5171 returns correct settings5172 script_name: "/namespace/project.git", expected_job_token_allowed: false, expected_basic_auth_personal_access_token: true, expected_deploy_token_allowed: true5173 returns correct settings5174 script_name: "/web/endpoint", expected_job_token_allowed: false, expected_basic_auth_personal_access_token: false, expected_deploy_token_allowed: false5175 returns correct settings5176PgFullTextSearchable5177 .pg_full_text_searchable5178 sets pg_full_text_searchable_columns5179 raises an error when called twice5180 after commit hook5181 when specified columns are changed5182 calls update_search_data!5183 when specified columns are not changed5184 does not call update_search_data!5185 when model is updated twice within a transaction5186 calls update_search_data!5187 .pg_full_text_search5188 searches across all fields5189 searches specified columns only5190 uses prefix matching5191 searches for exact term with quotes5192 ignores accents5193 does not support searching by non-Latin characters5194 when search term has a URL5195 allows searching by full URL, ignoring the scheme5196 when search term is a path with underscores5197 allows searching by the path5198 when text has numbers preceded by a dash5199 allows searching by numbers only5200 #update_search_data!5201 sets the correct weights5202 with accented and non-Latin characters5203 transliterates accented characters and removes non-Latin ones5204 with long words5205 strips words that are 50 characters or longer5206 when upsert times out5207 re-raises the exception5208 with strings that go over tsvector limit5209 does not raise an exception5210 when model class does not implement persist_pg_full_text_search_vector5211 raises an error5212Clusters::Integrations::Prometheus5213 associations5214 is expected to belong to cluster class_name => Clusters::Cluster required: false5215 validations5216 is expected to validate that :cluster cannot be empty/falsy5217 is expected not to allow :enabled to be ‹nil›5218 default values5219 is expected to eq "randomtoken"5220 after_destroy5221 deactivates prometheus_integration5222 after_save5223 when no change to enabled status5224 does not touch project integrations5225 when enabling5226 activates prometheus_integration5227 when disabling5228 activates prometheus_integration5229 #prometheus_client5230 cluster is nil5231 returns nil5232 cluster doesn't have kubeclient5233 returns nil5234 cluster has kubeclient5235 creates proxy prometheus_client5236 merges proxy_url, options and headers from kube client with prometheus_client options5237 when cluster is not reachable5238 behaves like exception caught for prometheus client5239 returns nil5240 when there is a socket error while contacting cluster5241 behaves like exception caught for prometheus client5242 returns nil5243 behaves like exception caught for prometheus client5244 returns nil5245 when the network is unreachable5246 behaves like exception caught for prometheus client5247 returns nil5248 #configured?5249 when a kubenetes client is present5250 is expected to be truthy5251 when it is disabled5252 is expected to be falsey5253 when the kubernetes URL is blocked5254 is expected to be falsey5255 when a kubenetes client is not present5256 is expected to be falsy5257ReleaseHighlight5258 .paginated_query5259 with page param5260 when there is another page of results5261 responds with paginated query results5262 when there is NOT another page of results5263 responds with paginated query results and no next_page5264 when that specific page does not exist5265 returns nil5266 .paginated5267 with no page param5268 uses multiple levels of cache5269 returns platform specific items5270 parses the description as markdown and returns html, and links are target="_blank"5271 logs an error if theres an error parsing markdown for an item, and skips it5272 when Gitlab.com5273 responds with a different set of data5274 YAML parsing throws an exception5275 fails gracefully and logs an error5276 .most_recent_item_count5277 uses process memory cache5278 when recent release items exist5279 returns the count from the most recent file5280 when recent release items do NOT exist5281 returns nil5282 .most_recent_version_digest5283 uses process memory cache5284 when recent release items exist5285 returns a digest from the release of the first item of the most recent file5286 when recent release items do NOT exist5287 returns nil5288 .load_items5289 whats new for all tiers5290 returns all items5291 whats new for current tier only5292 returns items with package=Free5293 YAML parsing throws an exception5294 fails gracefully and logs an error5295 QueryResult5296 responds to map5297 .current_package5298 returns Free5299 .file_paths5300 joins relative file paths with the root path to avoid caching the root url5301Gitlab::Ci::Config::Entry::Reports5302 validates ALLOWED_KEYS5303 expects ALLOWED_KEYS to be an artifact file_type or coverage_report5304 validation5305 when entry config value is correct5306 keyword: :junit, file: "junit.xml"5307 when value is an array5308 behaves like a valid entry5309 #value5310 returns artifacts configuration5311 #valid?5312 is valid5313 when value is not array5314 behaves like a valid entry5315 #value5316 returns artifacts configuration5317 #valid?5318 is valid5319 keyword: :codequality, file: "gl-code-quality-report.json"5320 when value is an array5321 behaves like a valid entry5322 #value5323 returns artifacts configuration5324 #valid?5325 is valid5326 when value is not array5327 behaves like a valid entry5328 #value5329 returns artifacts configuration5330 #valid?5331 is valid5332 keyword: :sast, file: "gl-sast-report.json"5333 when value is an array5334 behaves like a valid entry5335 #value5336 returns artifacts configuration5337 #valid?5338 is valid5339 when value is not array5340 behaves like a valid entry5341 #value5342 returns artifacts configuration5343 #valid?5344 is valid5345 keyword: :secret_detection, file: "gl-secret-detection-report.json"5346 when value is an array5347 behaves like a valid entry5348 #value5349 returns artifacts configuration5350 #valid?5351 is valid5352 when value is not array5353 behaves like a valid entry5354 #value5355 returns artifacts configuration5356 #valid?5357 is valid5358 keyword: :dependency_scanning, file: "gl-dependency-scanning-report.json"5359 when value is an array5360 behaves like a valid entry5361 #value5362 returns artifacts configuration5363 #valid?5364 is valid5365 when value is not array5366 behaves like a valid entry5367 #value5368 returns artifacts configuration5369 #valid?5370 is valid5371 keyword: :container_scanning, file: "gl-container-scanning-report.json"5372 when value is an array5373 behaves like a valid entry5374 #value5375 returns artifacts configuration5376 #valid?5377 is valid5378 when value is not array5379 behaves like a valid entry5380 #value5381 returns artifacts configuration5382 #valid?5383 is valid5384 keyword: :cluster_image_scanning, file: "gl-cluster-image-scanning-report.json"5385 when value is an array5386 behaves like a valid entry5387 #value5388 returns artifacts configuration5389 #valid?5390 is valid5391 when value is not array5392 behaves like a valid entry5393 #value5394 returns artifacts configuration5395 #valid?5396 is valid5397 keyword: :dast, file: "gl-dast-report.json"5398 when value is an array5399 behaves like a valid entry5400 #value5401 returns artifacts configuration5402 #valid?5403 is valid5404 when value is not array5405 behaves like a valid entry5406 #value5407 returns artifacts configuration5408 #valid?5409 is valid5410 keyword: :license_scanning, file: "gl-license-scanning-report.json"5411 when value is an array5412 behaves like a valid entry5413 #value5414 returns artifacts configuration5415 #valid?5416 is valid5417 when value is not array5418 behaves like a valid entry5419 #value5420 returns artifacts configuration5421 #valid?5422 is valid5423 keyword: :performance, file: "performance.json"5424 when value is an array5425 behaves like a valid entry5426 #value5427 returns artifacts configuration5428 #valid?5429 is valid5430 when value is not array5431 behaves like a valid entry5432 #value5433 returns artifacts configuration5434 #valid?5435 is valid5436 keyword: :browser_performance, file: "browser-performance.json"5437 when value is an array5438 behaves like a valid entry5439 #value5440 returns artifacts configuration5441 #valid?5442 is valid5443 when value is not array5444 behaves like a valid entry5445 #value5446 returns artifacts configuration5447 #valid?5448 is valid5449 keyword: :browser_performance, file: "performance.json"5450 when value is an array5451 behaves like a valid entry5452 #value5453 returns artifacts configuration5454 #valid?5455 is valid5456 when value is not array5457 behaves like a valid entry5458 #value5459 returns artifacts configuration5460 #valid?5461 is valid5462 keyword: :load_performance, file: "load-performance.json"5463 when value is an array5464 behaves like a valid entry5465 #value5466 returns artifacts configuration5467 #valid?5468 is valid5469 when value is not array5470 behaves like a valid entry5471 #value5472 returns artifacts configuration5473 #valid?5474 is valid5475 keyword: :lsif, file: "lsif.json"5476 when value is an array5477 behaves like a valid entry5478 #value5479 returns artifacts configuration5480 #valid?5481 is valid5482 when value is not array5483 behaves like a valid entry5484 #value5485 returns artifacts configuration5486 #valid?5487 is valid5488 keyword: :dotenv, file: "build.dotenv"5489 when value is an array5490 behaves like a valid entry5491 #value5492 returns artifacts configuration5493 #valid?5494 is valid5495 when value is not array5496 behaves like a valid entry5497 #value5498 returns artifacts configuration5499 #valid?5500 is valid5501 keyword: :terraform, file: "tfplan.json"5502 when value is an array5503 behaves like a valid entry5504 #value5505 returns artifacts configuration5506 #valid?5507 is valid5508 when value is not array5509 behaves like a valid entry5510 #value5511 returns artifacts configuration5512 #valid?5513 is valid5514 keyword: :accessibility, file: "gl-accessibility.json"5515 when value is an array5516 behaves like a valid entry5517 #value5518 returns artifacts configuration5519 #valid?5520 is valid5521 when value is not array5522 behaves like a valid entry5523 #value5524 returns artifacts configuration5525 #valid?5526 is valid5527 keyword: :cyclonedx, file: "gl-sbom.cdx.zip"5528 when value is an array5529 behaves like a valid entry5530 #value5531 returns artifacts configuration5532 #valid?5533 is valid5534 when value is not array5535 behaves like a valid entry5536 #value5537 returns artifacts configuration5538 #valid?5539 is valid5540 when coverage_report is specified5541 is valid5542 returns artifacts configuration5543 and another report is specified5544 is valid5545 returns artifacts configuration5546 when coverage_report is nil5547 is valid5548 returns artifacts configuration as an empty hash5549 when entry value is not correct5550 #errors5551 when there is an unknown key present5552 reports error5553API::Entities::Snippet5554 with PersonalSnippet5555 returns snippet web_url attribute5556 returns snippet raw_url attribute5557 behaves like common attributes5558 is expected to eq 115559 is expected to eq "My title 187"5560 is expected to eq "My title 189"5561 is expected to eq 2023-06-02 06:39:27.726218910 +00005562 is expected to eq 2023-06-02 06:39:27.726218910 +00005563 is expected to eq nil5564 is expected to eq "private"5565 is expected to include :author5566 file_name5567 returns attribute from repository5568 when repository is empty5569 returns attribute from db5570 ssh_url_to_repo5571 returns attribute5572 when repository does not exist5573 does not include attribute5574 http_url_to_repo5575 returns attribute5576 when repository does not exist5577 does not include attribute5578 files5579 with PersonalSnippet5580 behaves like snippet files5581 returns all snippet files5582 has the file path5583 has the raw url5584 when repository does not exist5585 returns empty array5586 with ProjectSnippet5587 behaves like snippet files5588 returns all snippet files5589 has the file path5590 has the raw url5591 when repository does not exist5592 returns empty array5593 with ProjectSnippet5594 returns snippet web_url attribute5595 returns snippet raw_url attribute5596 behaves like common attributes5597 is expected to eq 125598 is expected to eq "My title 190"5599 is expected to eq "My title 192"5600 is expected to eq 2023-06-02 06:39:28.463866968 +00005601 is expected to eq 2023-06-02 06:39:28.463866968 +00005602 is expected to eq 7245603 is expected to eq "private"5604 is expected to include :author5605 file_name5606 returns attribute from repository5607 when repository is empty5608 returns attribute from db5609 ssh_url_to_repo5610 returns attribute5611 when repository does not exist5612 does not include attribute5613 http_url_to_repo5614 returns attribute5615 when repository does not exist5616 does not include attribute5617 files5618 with PersonalSnippet5619 behaves like snippet files5620 returns all snippet files5621 has the file path5622 has the raw url5623 when repository does not exist5624 returns empty array5625 with ProjectSnippet5626 behaves like snippet files5627 returns all snippet files5628 has the file path5629 has the raw url5630 when repository does not exist5631 returns empty array5632Groups::GroupLinks::CreateService#execute5633 when user has proper membership to share a group5634 behaves like shareable5635 adds group to another group5636 when sharing outside the hierarchy is disabled5637 behaves like not shareable5638 does not share and returns an error5639 when group is inside hierarchy5640 behaves like shareable5641 adds group to another group (FAILED - 1)56431st Try error in ./spec/services/groups/group_links/create_service_spec.rb:35:5644expected: :success5645 got: :error5646(compared using ==)5647Diff:5648@@ -1 +1 @@5649-:success5650+:error5652RSpec::Retry: 2nd try ./spec/services/groups/group_links/create_service_spec.rb:355653 project authorizations based on group hierarchies5654 project authorizations refresh5655 is executed only for the direct members of the group5656 project authorizations5657 group user5658 create proper authorizations5659 parent group user5660 create proper authorizations5661 child group user5662 create proper authorizations5663 user does not have access to group5664 behaves like not shareable5665 does not share and returns an error5666 user does not have admin access to shared group5667 behaves like not shareable5668 does not share and returns an error5669 when group is blank5670 does not share and returns an error5671 when shared_with_group is blank5672 behaves like not shareable5673 does not share and returns an error5674Clusters::KubernetesNamespaceFinder5675 #execute5676 cluster supports separate namespaces per environment5677 no persisted namespace is present5678 is expected to be nil5679 a namespace with an environment is present5680 environment matches5681 is expected to eq #<Clusters::KubernetesNamespace id: 7, cluster_id: 38, project_id: 735, cluster_project_id: nil, crea...t_name: "project-701-735-production-service-account", environment_id: 1, service_account_token: nil>5682 project cluster5683 is expected to eq #<Clusters::KubernetesNamespace id: 8, cluster_id: 40, project_id: 736, cluster_project_id: 10, creat...t_name: "project-702-736-production-service-account", environment_id: 2, service_account_token: nil>5684 service account token is blank5685 is expected to be nil5686 allow_blank_token is true5687 is expected to eq #<Clusters::KubernetesNamespace id: 10, cluster_id: 44, project_id: 738, cluster_project_id: nil, cre...t_name: "project-704-738-production-service-account", environment_id: 4, service_account_token: nil>5688 environment does not match5689 is expected to be nil5690 cluster does not support separate namespaces per environment5691 no persisted namespace is present5692 is expected to be nil5693 a legacy namespace with no environment is present5694 is expected to eq #<Clusters::KubernetesNamespace id: 12, cluster_id: 50, project_id: 741, cluster_project_id: nil, cre...ce_account_name: "project-707-741-service-account", environment_id: nil, service_account_token: nil>5695 project cluster5696 is expected to eq #<Clusters::KubernetesNamespace id: 13, cluster_id: 52, project_id: 742, cluster_project_id: 11, crea...ce_account_name: "project-708-742-service-account", environment_id: nil, service_account_token: nil>5697 service account token is blank5698 is expected to be nil5699 allow_blank_token is true5700 is expected to eq #<Clusters::KubernetesNamespace id: 15, cluster_id: 56, project_id: 744, cluster_project_id: nil, cre...ce_account_name: "project-710-744-service-account", environment_id: nil, service_account_token: nil>5701SystemNotes::TimeTrackingService5702 #change_start_date_or_due_date5703 when noteable is an issue5704 does not track the work item event in usage ping5705 tracks the issue event5706 behaves like issuable getting date change notes5707 behaves like a note with overridable created_at5708 the note has the correct time5709 behaves like a system note5710 has the correct attributes5711 when both dates are added5712 sets the correct note message5713 when both dates are removed5714 sets the correct note message5715 when due date is added5716 sets the correct note message5717 and start date removed5718 sets the correct note message5719 when start_date is added5720 does not track the issue event5721 does not emit snowplow event5722 sets the correct note message5723 and due date removed5724 sets the correct note message5725 when no dates are changed5726 does not create a note and returns nil5727 behaves like issue_edit snowplow tracking5728 behaves like Snowplow event tracking with RedisHLL context5729 behaves like Snowplow event tracking5730 is emitted5731 when only start_date is added5732 does not track the issue event in usage ping5733 when noteable is a work item5734 does not track the issue event5735 does not emit snowplow event5736 behaves like issuable getting date change notes5737 behaves like a note with overridable created_at5738 the note has the correct time5739 behaves like a system note5740 has the correct attributes5741 when both dates are added5742 sets the correct note message5743 when both dates are removed5744 sets the correct note message5745 when due date is added5746 sets the correct note message5747 and start date removed5748 sets the correct note message5749 when start_date is added5750 does not track the issue event5751 does not emit snowplow event5752 sets the correct note message5753 and due date removed5754 sets the correct note message5755 when no dates are changed5756 does not create a note and returns nil5757 when only start_date is added5758 tracks the issue event in usage ping5759 when noteable is a merge request5760 does not track the issue event5761 does not track the work item event in usage ping5762 does not emit snowplow event5763 #change_time_estimate5764 when noteable is an issue5765 tracks the issue event in usage ping5766 behaves like a system note5767 has the correct attributes5768 with a time estimate5769 sets the note text5770 when time_tracking_limit_to_hours setting is true5771 sets the note text5772 without a time estimate5773 sets the note text5774 behaves like issue_edit snowplow tracking5775 behaves like Snowplow event tracking with RedisHLL context5776 behaves like Snowplow event tracking5777 is emitted5778 when noteable is a merge request5779 does not track the issue event5780 does not emit snowplow event5781 #create_timelog5782 when the timelog has a positive time spent value5783 sets the note text5784 when the timelog has a negative time spent value5785 sets the note text5786 #remove_timelog5787 when the timelog has a positive time spent value5788 sets the note text5789 when the timelog has a negative time spent value5790 sets the note text5791 #change_time_spent5792 when noteable is an issue5793 behaves like a system note5794 has the correct attributes5795 when time was added5796 sets the note text5797 tracks the issue event5798 when time was subtracted5799 sets the note text5800 when time was removed5801 sets the note text5802 when time_tracking_limit_to_hours setting is true5803 sets the note text5804 behaves like issue_edit snowplow tracking5805 behaves like Snowplow event tracking with RedisHLL context5806 behaves like Snowplow event tracking5807 is emitted5808 when noteable is a merge request5809 does not track the issue event5810 does not emit snowplow event5811Pages::InvalidateDomainCacheWorker5812 when a project have multiple domains5813 clears the cache with Gitlab::Pages::CacheControl5814 behaves like clears caches with5815 clears the cache with Gitlab::Pages::CacheControl5816 behaves like subscribes to event5817 consumes the published event5818 behaves like an idempotent worker5819 is labeled as idempotent5820 performs multiple times sequentially without raising an exception5821 behaves like clears caches with5822 clears the cache with Gitlab::Pages::CacheControl5823 behaves like subscribes to event5824 consumes the published event5825 behaves like an idempotent worker5826 is labeled as idempotent5827 performs multiple times sequentially without raising an exception5828 behaves like clears caches with5829 clears the cache with Gitlab::Pages::CacheControl5830 behaves like subscribes to event5831 consumes the published event5832 behaves like an idempotent worker5833 is labeled as idempotent5834 performs multiple times sequentially without raising an exception5835 behaves like clears caches with5836 clears the cache with Gitlab::Pages::CacheControl5837 behaves like subscribes to event5838 consumes the published event5839 behaves like an idempotent worker5840 is labeled as idempotent5841 performs multiple times sequentially without raising an exception5842 behaves like clears caches with5843 clears the cache with Gitlab::Pages::CacheControl5844 behaves like subscribes to event5845 consumes the published event5846 behaves like an idempotent worker5847 is labeled as idempotent5848 performs multiple times sequentially without raising an exception5849 behaves like clears caches with5850 clears the cache with Gitlab::Pages::CacheControl5851 behaves like subscribes to event5852 consumes the published event5853 behaves like an idempotent worker5854 is labeled as idempotent5855 performs multiple times sequentially without raising an exception5856 behaves like clears caches with5857 clears the cache with Gitlab::Pages::CacheControl5858 behaves like subscribes to event5859 consumes the published event5860 behaves like an idempotent worker5861 is labeled as idempotent5862 performs multiple times sequentially without raising an exception5863 behaves like clears caches with5864 clears the cache with Gitlab::Pages::CacheControl5865 behaves like subscribes to event5866 consumes the published event5867 behaves like an idempotent worker5868 is labeled as idempotent5869 performs multiple times sequentially without raising an exception5870 behaves like clears caches with5871 clears the cache with Gitlab::Pages::CacheControl5872 behaves like subscribes to event5873 consumes the published event5874 behaves like an idempotent worker5875 is labeled as idempotent5876 performs multiple times sequentially without raising an exception5877 behaves like clears caches with5878 clears the cache with Gitlab::Pages::CacheControl5879 behaves like subscribes to event5880 consumes the published event5881 behaves like an idempotent worker5882 is labeled as idempotent5883 performs multiple times sequentially without raising an exception5884 behaves like clears caches with5885 clears the cache with Gitlab::Pages::CacheControl5886 behaves like subscribes to event5887 consumes the published event5888 behaves like an idempotent worker5889 is labeled as idempotent5890 performs multiple times sequentially without raising an exception5891 behaves like clears caches with5892 clears the cache with Gitlab::Pages::CacheControl5893 behaves like subscribes to event5894 consumes the published event5895 behaves like an idempotent worker5896 is labeled as idempotent5897 performs multiple times sequentially without raising an exception5898 behaves like clears caches with5899 clears the cache with Gitlab::Pages::CacheControl5900 behaves like subscribes to event5901 consumes the published event5902 behaves like an idempotent worker5903 is labeled as idempotent5904 performs multiple times sequentially without raising an exception5905 when project attributes change5906 behaves like clears caches with5907 clears the cache with Gitlab::Pages::CacheControl5908 behaves like subscribes to event5909 consumes the published event5910 behaves like an idempotent worker5911 is labeled as idempotent5912 performs multiple times sequentially without raising an exception5913 behaves like clears caches with5914 clears the cache with Gitlab::Pages::CacheControl5915 behaves like subscribes to event5916 consumes the published event5917 behaves like an idempotent worker5918 is labeled as idempotent5919 performs multiple times sequentially without raising an exception5920 behaves like ignores the published event5921 does not consume the published event5922 when project features change5923 behaves like clears caches with5924 clears the cache with Gitlab::Pages::CacheControl5925 behaves like subscribes to event5926 consumes the published event5927 behaves like an idempotent worker5928 is labeled as idempotent5929 performs multiple times sequentially without raising an exception5930 behaves like ignores the published event5931 does not consume the published event5932 when namespace based cache keys are duplicated5933 behaves like clears caches with5934 clears the cache with Gitlab::Pages::CacheControl5935 behaves like subscribes to event5936 consumes the published event5937 behaves like an idempotent worker5938 is labeled as idempotent5939 performs multiple times sequentially without raising an exception5940Gitlab::ImportExport::AfterExportStrategies::BaseAfterExportStrategy5941 #execute5942 returns if project exported file is not found5943 creates a lock file in the export dir5944 when the method succeeds5945 removes the lock file5946 removes the archive path5947 when the method fails5948 when validation fails5949 does not create the lock file5950 does not execute main logic5951 logs validation errors in shared context5952 removes the archive path5953 when an exception is raised5954 removes the lock5955 #log_validation_errors5956 add the message to the shared context5957 #to_json5958 adds the current strategy class to the serialized attributes5959BulkImports::Projects::Pipelines::DesignBundlePipeline5960 #run5961 imports design repository into destination project and removes tmpdir5962 #extract5963 downloads & extracts design bundle filepath5964 #load5965 creates design repository from bundle5966 when lfs is disabled5967 returns5968 when file does not exist5969 returns5970 when path is directory5971 returns5972 when path is symlink5973 returns5974 when path is not under tmpdir5975 returns5976 when path is being traversed5977 raises an error5978 #after_run5979 removes tmpdir5980 when tmpdir does not exist5981 does not attempt to remove tmpdir5982Banzai::Pipeline::GfmPipeline5983 integration between parsing regular and external issue references5984 when internal issue tracker is enabled5985 executes :each_node only once for first reference filter5986 allows to use long external reference syntax for Redmine5987 parses cross-project references to regular issues5988 when shorthand pattern #ISSUE_ID is used5989 links an internal issues and keep updated nodes in result[:reference_filter_nodes]5990 when shorthand pattern #ISSUE_ID is used5991 links an internal issue if it exists5992 does not link any issue if it does not exist on GitLab5993 when internal issue tracker is disabled5994 allows to use shorthand external reference syntax for Redmine5995 allows to use long external reference syntax for Redmine5996 parses cross-project references to regular issues5997 markdown link or image urls having spaces5998 rewrites links with spaces in url5999 rewrites images with spaces in url6000 sanitizes the fixed link6001 emoji in references6002 renders a label reference with emoji inside6003 renders a milestone reference with emoji inside6004 asset proxy6005 replaces a lazy loaded img src6006 autolinks images to the proxy6007 properly adds tooltips to link for IDN images6008bin/sidekiq-cluster6009 when selecting some queues and excluding others6010 args: ["--negate", "cronjob"], included: "-qdefault,1", excluded: "-qcronjob,1"6011 runs successfully6012 args: ["--queue-selector", "resource_boundary=cpu"], included: ["-qupdate_merge_requests,1", "-qdefault,1", "-qmailers,1"], excluded: "-qauthorized_keys_worker,1"6013 runs successfully6014 when selecting all queues6015 runs successfully with `["*"]`6016 runs successfully with `["--queue-selector", "*"]`6017 when arguments contain newlines6018 raises an error6019Gitlab::UserAccessSnippet6020 #can_do_action?6021 when can access_git6022 calls Ability#allowed? and returns its result6023 when can not access_git6024 disallows access6025 when user is nil6026 disallows access6027 when user is migration bot6028 allows access6029 #can_push_to_branch?6030 anonymous6031 when can access_git6032 respects accessibility6033 when can not access_git6034 disallows access6035 non_member6036 when can access_git6037 respects accessibility6038 when can not access_git6039 disallows access6040 guest6041 when can access_git6042 respects accessibility6043 when can not access_git6044 disallows access6045 reporter6046 when can access_git6047 respects accessibility6048 when can not access_git6049 disallows access6050 maintainer6051 when can access_git6052 respects accessibility6053 when can not access_git6054 disallows access6055 admin6056 when can access_git6057 respects accessibility6058 when can not access_git6059 disallows access6060 author6061 when can access_git6062 respects accessibility6063 when can not access_git6064 disallows access6065 when user is migration bot6066 allows access6067 when snippet is nil6068 disallows access6069 when user is migration bot6070 disallows access6071 #can_create_tag?6072 returns false6073 when user is migration bot6074 returns false6075 #can_delete_branch?6076 returns false6077 when user is migration bot6078 returns false6079 #can_merge_to_branch?6080 returns false6081 when user is migration bot6082 returns false6083GoogleApi::CloudPlatform::Client6084 .session_key_for_redirect_uri6085 creates a new session key6086 .new_session_key_for_redirect_uri6087 generates a new session key6088 #validate_token6089 when token is nil6090 is expected to be falsy6091 when expires_at is nil6092 is expected to be falsy6093 when expires in 1 hour6094 is expected to be truthy6095 when expires in 10 minutes6096 is expected to be falsy6097 #user_agent_header6098 returns a RequestOptions object6099 has the correct GitLab version in User-Agent header6100 #list_projects6101 calls Google Api CloudResourceManagerService#list_projects6102 #create_service_account6103 calls Google Api IamService#create_service_account6104 #create_service_account_key6105 calls Google Api IamService#create_service_account_key6106 grant_service_account_roles6107 calls Google Api CloudResourceManager#set_iam_policy6108 #enable_cloud_run6109 calls Google Api IamService#create_service_account_key6110 #enable_artifacts_registry6111 calls Google Api IamService#create_service_account_key6112 #enable_cloud_build6113 calls Google Api IamService#create_service_account_key6114 #enable_cloud_sql_admin6115 calls Google Api ServiceUsageService6116 #enable_compute6117 calls Google Api ServiceUsageService6118 #enable_service_networking6119 calls Google Api ServiceUsageService6120 #revoke_authorizations6121 calls the revoke endpoint6122 #create_cloudsql_database6123 calls Google Api SQLAdminService#insert_database6124 #create_cloudsql_user6125 calls Google Api SQLAdminService#insert_user6126 #get_cloudsql_instance6127 calls Google Api SQLAdminService#get_instance6128 #list_cloudsql_databases6129 calls Google Api SQLAdminService#list_databases6130 #list_cloudsql_users6131 calls Google Api SQLAdminService#list_users6132 #create_cloudsql_instance6133 calls Google Api SQLAdminService#insert_instance6134EnvironmentEntity6135 exposes latest deployment6136 exposes core elements of environment6137 exposes folder path6138 doesn't expose metrics path6139 when there is a successful deployment6140 exposes it as the latest deployment6141 does not expose it as an upcoming deployment6142 when the deployment pipeline has the other manual job6143 exposes the manual job in the latest deployment6144 when there is a running deployment6145 does not expose it as the latest deployment6146 exposes it as an upcoming deployment6147 when the deployment pipeline has the other manual job6148 does not expose the manual job in the latest deployment6149 when metrics dashboard feature is available6150 metrics disabled6151 doesn't expose metrics path6152 metrics enabled6153 exposes metrics path6154 with deployment platform6155 when deployment platform is a cluster6156 includes cluster_type6157 with auto_stop_in6158 exposes auto stop related information6159 with deployment service ready6160 exposes rollout_status6161 with deployment service not ready6162 does not expose rollout_status6163PrometheusAdapter6164 #query6165 validate_query6166 with valid data6167 returns query data6168 environment6169 with valid data6170 returns reactive data6171 matched_metrics6172 with valid data6173 returns reactive data6174 deployment6175 with valid data6176 returns reactive data6177 additional_metrics6178 with valid data6179 returns reactive data6180 #calculate_reactive_cache6181 when integration is inactive6182 is expected to be nil6183 when Prometheus responds with valid data6184 is expected to eq "{\"success\":true,\"data\":{\"memory_values\":[{\"metric\":{},\"values\":[[1488758662.506,\"0.000029...lue\":[1488772511.004,\"0.000041021495238095323\"]}]},\"last_update\":\"2023-06-02T06:40:47.000Z\"}"6185 when Prometheus responds with 4046186 is expected to eq {:result=>"404 - \"QUERY FAILED!\"", :success=>false}6187 when Prometheus responds with 5006188 is expected to eq {:result=>"500 - \"QUERY FAILED!\"", :success=>false}6189 when client raises Gitlab::PrometheusClient::ConnectionError6190 is expected to include {:success => false, :result => #<RSpec::Mocks::ArgumentMatchers::KindOf:0x00007fcb07fa1200 @klass=String>}6191 #build_query_args6192 when active record models are included6193 serializes by id6194 when args are safe for serialization6195 does nothing6196Pages::DeploymentUploader6197 behaves like builds correct paths6198 #store_dir6199 behaves like matches the method pattern6200 is expected to match /\/\h{2}\/\h{2}\/\h{64}\/pages_deployments\/\d+/6201 #cache_dir6202 behaves like matches the method pattern6203 is expected to match /pages\/@hashed\/tmp\/cache/6204 #work_dir6205 behaves like matches the method pattern6206 is expected to match /pages\/@hashed\/tmp\/work/6207 #upload_path6208 behaves like matches the method pattern6209 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6210 #relative_path6211 is relative (PENDING: Path not set, skipping.)6212 .absolute_path6213 behaves like matches the method pattern6214 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6215 .base_dir6216 behaves like matches the method pattern6217 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6218 path traversal exploits6219 throws an exception6220 when object store is REMOTE6221 preserves original file when stores it6222 behaves like builds correct paths6223 #store_dir6224 behaves like matches the method pattern6225 is expected to match /\A\h{2}\/\h{2}\/\h{64}\/pages_deployments\/\d+\z/6226 #cache_dir6227 behaves like matches the method pattern6228 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6229 #work_dir6230 behaves like matches the method pattern6231 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6232 #upload_path6233 behaves like matches the method pattern6234 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6235 #relative_path6236 is relative (PENDING: Path not set, skipping.)6237 .absolute_path6238 behaves like matches the method pattern6239 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6240 .base_dir6241 behaves like matches the method pattern6242 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6243 path traversal exploits6244 throws an exception6245 when file is stored in valid local_path6246 is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/pages\/@hashed\/\h{2}\/\h{2}\/\h{64}\/pages_deployments\/18\/pages.zip/6247 preserves original file when stores it6248 .default_store6249 returns local store when object storage is not enabled6250 returns remote store when object storage is enabled6251Gitlab::Database::LoadBalancing::Session6252 .current6253 returns the current session6254 .clear_session6255 clears the current session6256 .without_sticky_writes6257 ignores sticky write events sent by a connection proxy6258 still is aware of write that happened6259 #use_primary?6260 returns true when the primary should be used6261 returns false when a secondary should be used6262 returns true when a write was performed6263 #use_primary6264 uses primary during block6265 continues using primary when write was performed6266 when primary was used before6267 restores state after use6268 when primary was not used6269 restores state after use6270 #performed_write?6271 returns true if a write was performed6272 #ignore_writes6273 ignores write events6274 does not prevent using primary if an exception is raised6275 #use_replicas_for_read_queries6276 sets the flag inside the block6277 restores state after use6278 when primary was used before6279 sets the flag inside the block6280 when a write query is performed before6281 sets the flag inside the block6282 #fallback_to_replicas_for_ambiguous_queries6283 sets the flag inside the block6284 restores state after use6285 when primary was used before6286 uses primary during block6287 when a write was performed before6288 uses primary during block6289 when primary was used inside the block6290 uses primary aterward6291 restores state after use6292 when a write was performed inside the block6293 uses primary aterward6294 restores state after use6295gitlab:seed:runner_fleet rake task6296 # order random6297 with admin username6298 performs runner fleet seed successfully6299MergeRequests::DeleteNonLatestDiffsService6300 #execute6301 schedules non-latest merge request diffs removal6302 schedules no removal if it is already cleaned6303 schedules no removal if it is empty6304 schedules no removal if there is no non-latest diffs6305Packages::Conan::CreatePackageFileService6306 #execute6307 with temp file6308 behaves like a valid package_file6309 creates a new package file6310 behaves like assigns build to package file6311 with build info6312 assigns the pipeline to the package6313 creates a new PackageFileBuildInfo record6314 behaves like a valid recipe_file6315 creates a new recipe file6316 behaves like assigns build to package file6317 with build info6318 assigns the pipeline to the package6319 creates a new PackageFileBuildInfo record6320 with remote file6321 behaves like a valid package_file6322 creates a new package file6323 behaves like assigns build to package file6324 with build info6325 assigns the pipeline to the package6326 creates a new PackageFileBuildInfo record6327 behaves like a valid recipe_file6328 creates a new recipe file6329 behaves like assigns build to package file6330 with build info6331 assigns the pipeline to the package6332 creates a new PackageFileBuildInfo record6333 file is missing6334 raises an error6335Timelogs::CreateService6336 #execute6337 when issuable is an Issue6338 behaves like issuable supports timelog creation service6339 when the user does not have permission6340 returns an error6341 when the user has permissions6342 when spent_at is in the future6343 returns an error6344 when time_spent is zero6345 returns an error6346 when time_spent is nil6347 returns an error6348 when the timelog save fails6349 returns an error6350 when the creation completes sucessfully6351 behaves like success_response6352 sucessfully saves the timelog6353 when issuable is a MergeRequest6354 behaves like issuable supports timelog creation service6355 when the user does not have permission6356 returns an error6357 when the user has permissions6358 when spent_at is in the future6359 returns an error6360 when time_spent is zero6361 returns an error6362 when time_spent is nil6363 returns an error6364 when the timelog save fails6365 returns an error6366 when the creation completes sucessfully6367 behaves like success_response6368 sucessfully saves the timelog6369 when issuable is a WorkItem6370 behaves like issuable supports timelog creation service6371 when the user does not have permission6372 returns an error6373 when the user has permissions6374 when spent_at is in the future6375 returns an error6376 when time_spent is zero6377 returns an error6378 when time_spent is nil6379 returns an error6380 when the timelog save fails6381 returns an error6382 when the creation completes sucessfully6383 behaves like success_response6384 sucessfully saves the timelog6385 when issuable is an Incident6386 behaves like issuable supports timelog creation service6387 when the user does not have permission6388 returns an error6389 when the user has permissions6390 when spent_at is in the future6391 returns an error6392 when time_spent is zero6393 returns an error6394 when time_spent is nil6395 returns an error6396 when the timelog save fails6397 returns an error6398 when the creation completes sucessfully6399 behaves like success_response6400 sucessfully saves the timelog6401WikiPages::DestroyService6402 behaves like WikiPages::DestroyService#execute6403 executes webhooks6404 increments the delete count6405 creates a new wiki page deletion event6406 when the deletion fails6407 returns an error response6408 does not increment the delete count if the deletion failed6409Clusters::Agents::CreateService6410 #execute6411 without user permissions6412 returns errors when user does not have permissions6413 with user permissions6414 creates a new clusters_agent6415 returns success status6416 returns agent values6417 generates an error message when name is invalid6418Deployments::UpdateEnvironmentWorker6419 when successful deployment6420 executes Deployments::UpdateEnvironmentService6421 when canceled deployment6422 does not execute Deployments::UpdateEnvironmentService6423 when deploy record does not exist6424 does not execute Deployments::UpdateEnvironmentService6425 idempotent6426 is labeled as idempotent6427 performs multiple times sequentially without raising an exception6428 updates merge requests metrics6429MergeRequests::CreatePipelineWorker6430 #perform6431 when the objects exist6432 calls the merge request create pipeline service and calls update head pipeline6433 when push options are passed as Hash to the worker6434 calls the merge request create pipeline service and calls update head pipeline6435 when the project does not exist6436 behaves like when object does not exist6437 does not call the create pipeline service6438 when the user does not exist6439 behaves like when object does not exist6440 does not call the create pipeline service6441 when the merge request does not exist6442 behaves like when object does not exist6443 does not call the create pipeline service6444WorkItems::CreateAndLinkService6445 #execute6446 when work item params are valid6447 is expected to be success6448 creates a work item successfully with no links6449 behaves like title with extra spaces6450 when title has extra spaces6451 removes extra leading and trailing whitespaces from title6452 when link params are valid6453 when parent is not confidential6454 behaves like successful work item and link creator6455 creates a work item successfully with links6456 copies confidential status from the parent6457 when parent is confidential6458 behaves like successful work item and link creator6459 creates a work item successfully with links6460 copies confidential status from the parent6461 when link creation fails6462 is expected to be error6463 does not create a link and does not rollback transaction6464 returns a link creation error message6465 when work item params are invalid6466 is expected to be error6467 does not create a work item or links6468 returns work item errors6469Gitlab::Diff::Parser6470 #parse6471 is expected to eq 306472 lines6473 first line6474 is expected to eq "match"6475 is expected to eq 66476 is expected to eq 66477 is expected to eq "@@ -6,12 +6,18 @@ module Popen"6478 removal line6479 is expected to eq "old"6480 is expected to eq 146481 is expected to eq 136482 is expected to eq "- options = { chdir: path }"6483 addition line6484 is expected to eq "new"6485 is expected to eq 156486 is expected to eq 186487 is expected to eq "+ options = {"6488 unchanged line6489 is expected to eq nil6490 is expected to eq 246491 is expected to eq 316492 is expected to eq " @cmd_output << stderr.read"6493 \ No newline at end of file6494 parses nonewline in one file correctly6495 parses nonewline in two files correctly6496 when lines is empty6497 is expected to eq []6498 is expected to eq []6499 when it is a binary notice6500 is expected to eq []6501 tolerates special diff markers in a content6502 counts lines correctly6503BoardsHelper6504 #build_issue_link_base6505 project board6506 returns correct path for project board6507 group board6508 returns correct path for base group6509 returns correct path for subgroup6510 #board_base_url6511 when group board6512 generates the correct url6513 when project board6514 generates the correct url6515 #current_board_namespace6516 when group board6517 returns the correct namespace6518 project under group6519 when project board6520 returns the correct namespace6521 project under user namespace6522 when project board6523 returns the correct namespace6524 #board_data6525 project_board6526 returns board type as parent6527 returns can_update for user permissions on the board6528 returns required label endpoints6529 returns the group id of a project6530 can_admin_list6531 returns can_admin_list as false by default6532 returns can_admin_list as true when user can admin the board lists6533 can_admin_board6534 returns can_admin_board as false by default6535 returns can_admin_board as true when user can admin the board6536 group board6537 returns correct path for base group6538 returns required label endpoints6539 returns the group id6540 can_admin_list6541 returns can_admin_list as false by default6542 returns can_admin_list as true when user can admin the board lists6543notify/pipeline_failed_email.text.erb6544 when the pipeline contains a failed job6545 behaves like renders the pipeline failed email correctly6546 renders the email correctly6547 behaves like correct pipeline information for pipelines for merge requests6548 when pipeline for merge request6549 renders a source ref of the pipeline6550 when the latest failed job is a bridge job6551 behaves like renders the pipeline failed email correctly6552 renders the email correctly6553 behaves like correct pipeline information for pipelines for merge requests6554 when pipeline for merge request6555 renders a source ref of the pipeline6556Types::Terraform::StateVersionType6557 is expected to eq "TerraformStateVersion"6558 is expected to require graphql authorizations :read_terraform_state6559 fields6560 is expected to have graphql fields :id, :created_by_user, :job, :download_path, :serial, :created_at, and :updated_at6561 is expected to be non null6562 is expected not to be non null6563 is expected not to be non null6564 is expected not to be non null6565 is expected not to be non null6566 is expected to be non null6567 is expected to be non null6568 query6569 returns job of the latest version6570 behaves like returning latest version6571 returns latest version of terraform state6572 when user cannot read jobs6573 does not return job of the latest version6574 behaves like returning latest version6575 returns latest version of terraform state6576gitlab:web_hook namespace rake tasks6577 gitlab:web_hook:add6578 adds a web hook to all projects6579 adds a web hook to projects in the specified namespace6580 raises an error if an unknown namespace is specified6581 gitlab:web_hook:rm6582 complains if URL is not provided6583 removes a web hook from all projects by URL6584 removes a web hook from projects in the specified namespace by URL6585 raises an error if an unknown namespace is specified6586 gitlab:web_hook:list6587 lists all web hooks6588 lists web hooks in a particular namespace6589Ci::BuildTraceChunks::Database6590 #data6591 when data exists6592 returns the data6593 when data does not exist6594 returns nil6595 #set_data6596 when data exists6597 overwrites data6598 when data does not exist6599 sets new data6600 #delete_data6601 when data exists6602 deletes data6603 when data does not exist6604 does nothing6605 #size6606 when data exists6607 returns data bytesize correctly6608 when data does not exist6609 returns zero6610 #keys6611 returns empty array6612Gitlab::Middleware::CompressedJson6613 #call6614 with collector route6615 behaves like decompress middleware6616 replaces input with a decompressed content6617 with no Content-Type6618 behaves like decompress middleware6619 replaces input with a decompressed content6620 behaves like decompress middleware6621 replaces input with a decompressed content6622 with packages route6623 with instance level endpoint6624 with npm advisory bulk url6625 behaves like decompress middleware6626 replaces input with a decompressed content6627 behaves like decompress middleware6628 replaces input with a decompressed content6629 with npm quick audit url6630 behaves like decompress middleware6631 replaces input with a decompressed content6632 behaves like decompress middleware6633 replaces input with a decompressed content6634 with project level endpoint6635 with npm advisory bulk url6636 behaves like decompress middleware6637 replaces input with a decompressed content6638 behaves like decompress middleware6639 replaces input with a decompressed content6640 behaves like handles non integer ID6641 with a URL-encoded ID6642 behaves like decompress middleware6643 replaces input with a decompressed content6644 with a non URL-encoded ID6645 behaves like passes input6646 keeps the original input6647 with a blank ID6648 behaves like passes input6649 keeps the original input6650 with npm quick audit url6651 behaves like decompress middleware6652 replaces input with a decompressed content6653 behaves like decompress middleware6654 replaces input with a decompressed content6655 behaves like handles non integer ID6656 with a URL-encoded ID6657 behaves like decompress middleware6658 replaces input with a decompressed content6659 with a non URL-encoded ID6660 behaves like passes input6661 keeps the original input6662 with a blank ID6663 behaves like passes input6664 keeps the original input6665 with group level endpoint6666 with npm advisory bulk url6667 behaves like decompress middleware6668 replaces input with a decompressed content6669 behaves like decompress middleware6670 replaces input with a decompressed content6671 behaves like handles non integer ID6672 with a URL-encoded ID6673 behaves like decompress middleware6674 replaces input with a decompressed content6675 with a non URL-encoded ID6676 behaves like passes input6677 keeps the original input6678 with a blank ID6679 behaves like passes input6680 keeps the original input6681 with npm quick audit url6682 behaves like decompress middleware6683 replaces input with a decompressed content6684 behaves like decompress middleware6685 replaces input with a decompressed content6686 behaves like handles non integer ID6687 with a URL-encoded ID6688 behaves like decompress middleware6689 replaces input with a decompressed content6690 with a non URL-encoded ID6691 behaves like passes input6692 keeps the original input6693 with a blank ID6694 behaves like passes input6695 keeps the original input6696 with some other route6697 behaves like passes input6698 keeps the original input6699 with the wrong project path6700 behaves like passes input6701 keeps the original input6702 payload is too large6703 reads only limited size6704Database::BatchedBackgroundMigration::CiExecutionWorker6705 # order random6706 behaves like batched background migrations execution worker6707 is a limited capacity worker6708 defining the job attributes6709 defines the data_consistency as always6710 defines the feature_category as database6711 defines the idempotency as false6712 does not retry failed jobs6713 does not deduplicate jobs6714 defines the queue namespace6715 .perform_with_capacity6716 enqueues jobs without modifying provided arguments6717 .max_running_jobs6718 returns database_max_running_batched_background_migrations application setting6719 #max_running_jobs6720 returns database_max_running_batched_background_migrations application setting6721 #remaining_work_count6722 returns 06723 #perform_work6724 when the feature flag is disabled6725 does nothing6726 when the feature flag is enabled6727 when the provided database is sharing config6728 does nothing (PENDING: Skipping because none of the extra databases [:ci] are setup)6729 when migration does not exist6730 does nothing6731 when migration exist6732 when the migration is no longer active6733 does not run the migration6734 when the interval has not elapsed6735 does not run the migration6736 when the migration is still active and the interval has elapsed6737 always cleans up the exclusive lease6738 runs the migration6739 assigns proper feature category to the context and the worker6740 when can not obtain lease on the table name6741 does nothing6742LfsObject6743 has a distinct has_many :projects relation through lfs_objects_projects6744 scopes6745 .not_existing_in_project6746 contains only lfs objects not linked to the project6747 .for_oids6748 returns the correct LfsObjects6749 #local_store?6750 returns true when file_store is equal to LfsObjectUploader::Store::LOCAL6751 returns false when file_store is equal to LfsObjectUploader::Store::REMOTE6752 #project_allowed_access?6753 returns true when project is linked6754 returns false when project is not linked6755 when project is a member of a fork network6756 returns true for all members when forked project is linked6757 returns true for all members when root of network is linked6758 returns false when no member of fork network is linked6759 storage types6760 file is being stored6761 when existing object has local store6762 behaves like mounted file in local store6763 is stored locally6764 when direct upload is enabled6765 behaves like mounted file in object store6766 is stored remotely6767 .calculate_oid6768 returns SHA256 sum of the file6769 when an lfs object is associated with a project6770 cannot be deleted6771 .unreferenced_in_batches6772 returns lfs objects in batches6773Projects::Topic6774 is expected to be valid6775 modules6776 is expected to includes the Avatarable module6777 associations6778 is expected to have many project_topics6779 is expected to have many projects6780 validations6781 is expected to validate that :name cannot be empty/falsy6782 is expected to validate that :name is case-insensitively unique6783 is expected to validate that the length of :name is at most 2556784 is expected to validate that the length of :description is at most 10246785 is expected to validate that :title cannot be empty/falsy6786 is expected to validate that the length of :title is at most 2556787 scopes6788 without_assigned_projects6789 returns topics without assigned projects6790 order_by_non_private_projects_count6791 sorts topics by non_private_projects_count6792 reorder_by_similarity6793 sorts topics by similarity6794 #find_by_name_case_insensitive6795 returns topic with case insensitive name6796 #search6797 returns topics with a matching name6798 returns topics with a partially matching name6799 returns topics with a matching name regardless of the casing6800 #avatar_type6801 is true if avatar is image6802 is false if avatar is html page6803 #avatar_url6804 when avatar file is uploaded6805 shows correct avatar url6806 #title_or_name6807 returns title if set6808 returns name if title not set6809Ci::Catalog::ValidateResourceService6810 # order random6811 #execute6812 with a project that has a README and a description6813 is valid6814 with a project that has neither a description nor a README6815 is not valid6816 with a project that has a description but not a README6817 is not valid6818 with a project that has a README and not a description6819 is not valid6820Pajamas::BadgeComponent6821 # order random6822 text param6823 is shown inside the badge6824 HTML options6825 get added as HTML attributes6826 can be combined with component options in no particular order6827 with custom CSS classes6828 combines custom classes and component classes6829 options6830 icon6831 adds the correct icon and margin6832 icon_classes6833 as string6834 combines custom classes and component classes6835 as array6836 combines custom classes and component classes6837 icon_only6838 adds no extra margin to the icon6839 adds the text as ARIA label6840 href6841 makes the a badge a link6842 size6843 size: :sm6844 adds size class6845 size: :md6846 adds size class6847 size: :lg6848 adds size class6849 with unknown size6850 adds the default size class6851 variant6852 variant: :muted6853 adds variant class6854 variant: :neutral6855 adds variant class6856 variant: :info6857 adds variant class6858 variant: :success6859 adds variant class6860 variant: :warning6861 adds variant class6862 variant: :danger6863 adds variant class6864 with unknown variant6865 adds the default variant class6866 content slot6867 can be used instead of the text param6868 takes presendence over the text param6869Gitlab::JiraImport::IssueSerializer6870 #execute6871 attributes setting6872 sets the basic attributes6873 creates a hash for valid issue6874 labels6875 creates all missing labels (on project level)6876 when there are no new labels6877 assigns the labels to the Issue hash6878 does not create new labels6879 author6880 when reporter maps to a valid GitLab user6881 sets the issue author to the mapped user6882 when reporter does not map to a valid Gitlab user6883 defaults the issue author to project creator6884 when reporter field is empty6885 defaults the issue author to project creator6886 when reporter field is missing accountId6887 defaults the issue author to project creator6888 assignee6889 when assignee maps to a valid GitLab user6890 sets the issue assignees to the mapped user6891 when assignee does not map to a valid GitLab user6892 leaves the assignee empty6893 when assginee field is empty6894 leaves the assignee empty6895 when assginee field is missing accountId6896 leaves the assignee empty6897 with jira server response6898 when assignee maps to a valid GitLab user6899 sets the issue assignees to the mapped user6900 with done status6901 maps the status to closed6902 without the iid6903 does not set the iid6904WorkItems::ImportCsvService6905 # order random6906 #execute6907 when user has permission6908 behaves like importer with email notification6909 notifies user of import result6910 when file format is valid6911 when work item types are available6912 creates the expected number of work items6913 sets work item attributes6914 when csv contains work item types that are missing or not available6915 creates no work items6916 returns the correct result6917 when file is missing necessary headers6918 creates no records6919 creates no work items6920 when import_export_work_items_csv feature flag is off6921 raises an error6922 when user does not have permission6923 raises an error6924GroupChildSerializer6925 #represent6926 for groups6927 can render a single group6928 can render a collection of groups6929 with a hierarchy6930 expands the subgroups6931 can render a nested tree6932 without a specified parent6933 can render a tree6934 for projects6935 can render a single project6936 can render a collection of projects6937 with a hierarchy6938 can render a nested tree6939 returns an array when an array of a single instance was given6940RuboCop::Cop::RSpec::FactoryBot::InlineAssociation6941 # order random6942 no offenses6943 for `association(:user)`6944 does not register any offenses6945 for `association(:user, :admin)`6946 does not register any offenses6947 for `association(:user, name: "any")`6948 does not register any offenses6949 for `after(:build) do |object|`6950 does not register any offenses6951 for `initialize_with do`6952 does not register any offenses6953 for `user_id { create(:user).id }`6954 does not register any offenses6955 offenses6956 recognizes `add_attribute`6957 recognizes `transient` attributes6958 code_snippet: "create(:user)", autocorrected: "association(:user)"6959 registers an offense and corrects6960 code_snippet: "FactoryBot.create(:user)", autocorrected: "association(:user)"6961 registers an offense and corrects6962 code_snippet: "::FactoryBot.create(:user)", autocorrected: "association(:user)"6963 registers an offense and corrects6964 code_snippet: "create(:user, :admin)", autocorrected: "association(:user, :admin)"6965 registers an offense and corrects6966 code_snippet: "create(:user, name: \"any\")", autocorrected: "association(:user, name: \"any\")"6967 registers an offense and corrects6968 code_snippet: "build(:user)", autocorrected: "association(:user)"6969 registers an offense and corrects6970 code_snippet: "FactoryBot.build(:user)", autocorrected: "association(:user)"6971 registers an offense and corrects6972 code_snippet: "::FactoryBot.build(:user)", autocorrected: "association(:user)"6973 registers an offense and corrects6974 code_snippet: "build(:user, :admin)", autocorrected: "association(:user, :admin)"6975 registers an offense and corrects6976 code_snippet: "build(:user, name: \"any\")", autocorrected: "association(:user, name: \"any\")"6977 registers an offense and corrects6978Packages::Debian::FileEntry6979 validations6980 is expected to be valid6981 #filename6982 is expected to validate that :filename cannot be empty/falsy6983 is expected not to allow :filename to be ‹"Hé"›6984 #size6985 is expected to validate that :size cannot be empty/falsy6986 #md5sum6987 is expected to validate that :md5sum cannot be empty/falsy6988 is expected not to allow :md5sum to be ‹"12345678901234567890123456789012"›, producing a custom validation error on failure6989 #section6990 is expected to validate that :section cannot be empty/falsy6991 #priority6992 is expected to validate that :priority cannot be empty/falsy6993 #sha1sum6994 is expected to validate that :sha1sum cannot be empty/falsy6995 is expected not to allow :sha1sum to be ‹"1234567890123456789012345678901234567890"›, producing a custom validation error on failure6996 #sha256sum6997 is expected to validate that :sha256sum cannot be empty/falsy6998 is expected not to allow :sha256sum to be ‹"1234567890123456789012345678901234567890123456789012345678901234"›, producing a custom validation error on failure6999 #package_file7000 is expected to validate that :package_file cannot be empty/falsy7001 #component7002 without section7003 is expected to eq "main"7004 with empty section7005 is expected to eq "main"7006 with ruby section7007 is expected to eq "main"7008 with contrib/ruby section7009 is expected to eq "contrib"7010Projects::RepositoryStorageMove7011 behaves like handles repository moves7012 associations7013 is expected to belong to container required: false7014 validations7015 is expected to validate that :container cannot be empty/falsy7016 is expected to validate that :state cannot be empty/falsy7017 is expected to validate that :source_storage_name cannot be empty/falsy7018 is expected to validate that :destination_storage_name cannot be empty/falsy7019 source_storage_name inclusion7020 does not allow repository storages that don't match a label in the configuration7021 destination_storage_name inclusion7022 does not allow repository storages that don't match a label in the configuration7023 container repository read-only7024 does not allow the container to be read-only on create7025 defaults7026 destination_storage_name7027 can pick new storage7028 state transitions7029 when in the default state7030 and transits to scheduled7031 triggers the corresponding repository storage worker7032 when the transition fails7033 does not trigger the corresponding repository storage worker and adds an error7034 and transits to started7035 does not allow the transition7036 when started7037 and transits to replicated7038 marks the container as writable7039 updates the updated_at column of the container7040 and transits to failed7041 marks the container as writable7042 state transitions7043 when started7044 and transits to replicated7045 sets the repository storage and marks the container as writable7046Terraform.latest.gitlab-ci.yml7047 the created pipeline7048 on master branch7049 creates init, validate and build jobs7050 outside the master branch7051 does not creates a deploy and a test job7052 on merge request7053 creates a pipeline with the terraform and sast_iac jobs7054 does not creates a deploy7055 does not create a branch pipeline7056Gitlab::Ci::Config::Entry::Include::Rules::Rule7057 .new7058 when specifying an if: clause7059 is expected to be valid7060 when specifying an exists: clause7061 is expected to be valid7062 using a list of multiple expressions7063 behaves like an invalid config7064 is expected not to be valid7065 has errors7066 when specifying an invalid if: clause expression7067 behaves like an invalid config7068 is expected not to be valid7069 has errors7070 when specifying an if: clause expression with an invalid token7071 behaves like an invalid config7072 is expected not to be valid7073 has errors7074 when using invalid regex in an if: clause7075 behaves like an invalid config7076 is expected not to be valid7077 has errors7078 when using an if: clause with lookahead regex character "?"7079 behaves like an invalid config7080 is expected not to be valid7081 has errors7082 when specifying unknown policy7083 behaves like an invalid config7084 is expected not to be valid7085 has errors7086 when clause is empty7087 behaves like an invalid config7088 is expected not to be valid7089 has errors7090 when policy strategy does not match7091 behaves like an invalid config7092 is expected not to be valid7093 has errors7094 #value7095 when specifying an if: clause7096 returns the config7097 when specifying an exists: clause7098 returns the config7099TagsFinder7100 #execute7101 sort only7102 sorts by name7103 sorts by recently_updated7104 sorts by last_updated7105 when sort is not a string7106 ignores sort parameter7107 filter only7108 filters tags by name7109 does not find any tags with that name7110 filters tags by name that begins with7111 filters tags by name that ends with7112 filters tags by name with wildcard7113 filters tags by nonexistent name that begins with7114 filters tags by nonexistent name that ends with7115 filters tags by nonexistent name with wildcard7116 when search is not a string7117 returns no matches7118 filter and sort7119 when sort by updated_desc7120 filters tags by name7121 when sort by updated_asc7122 filters tags by name7123 with Gitaly pagination7124 by page_token and per_page7125 filters tags7126 by next page_token and per_page7127 filters branches7128 by per_page only7129 filters branches7130 by page_token only7131 raises an error7132 pagination and sort7133 by per_page7134 filters branches7135 by page_token and per_page7136 filters branches7137 pagination and search7138 ignores the pagination for search7139 when Gitaly is unavailable7140 raises an exception7141RuboCop::Cop::Gitlab::NamespacedClass7142 # order random7143 without top-level namespace7144 behaves like enforces namespaced classes7145 flags a class definition without additional namespace7146 flags a compact class definition without additional namespace7147 flags a class definition with inheritance without additional namespace7148 does not flag the class definition with namespace in separate lines7149 does not flag the class definition with nested namespace in separate lines7150 does not flag the class definition nested inside namespaced class7151 does not flag the class definition nested inside compact namespace7152 does not flag a compact namespaced class definition7153 does not flag a truly compact namespaced class definition7154 with Gitlab namespace7155 behaves like enforces namespaced classes7156 flags a class definition without additional namespace7157 flags a compact class definition without additional namespace7158 flags a class definition with inheritance without additional namespace7159 does not flag the class definition with namespace in separate lines7160 does not flag the class definition with nested namespace in separate lines7161 does not flag the class definition nested inside namespaced class7162 does not flag the class definition nested inside compact namespace7163 does not flag a compact namespaced class definition7164 does not flag a truly compact namespaced class definition7165 with ::Gitlab namespace7166 behaves like enforces namespaced classes7167 flags a class definition without additional namespace7168 flags a compact class definition without additional namespace7169 flags a class definition with inheritance without additional namespace7170 does not flag the class definition with namespace in separate lines7171 does not flag the class definition with nested namespace in separate lines7172 does not flag the class definition nested inside namespaced class7173 does not flag the class definition nested inside compact namespace7174 does not flag a compact namespaced class definition7175 does not flag a truly compact namespaced class definition7176gettext7177 # order random7178 :lint7179 when all PO files are valid7180Linting po files: |============================================================|7181 completes without error7182 when there are invalid PO files7183Linting po files: |============================================================|7184 raises an error7185 when the .pot file is invalid7186Linting po files: |============================================================|7187 raises an error7188 :compile7189 creates a pot file and runs po-to-json conversion via node script7190 aborts with non-successful po-to-json conversion via node script7191 :regenerate7192 when the locale folder is not found7193 raises an error7194 when the gitlab.pot file cannot be generated7195 prints an error7196BoardProjectRecentVisit7197 relationships7198 is expected to belong to user required: false7199 is expected to belong to project required: false7200 is expected to belong to board required: false7201 validations7202 is expected to validate that :user cannot be empty/falsy7203 is expected to validate that :project cannot be empty/falsy7204 is expected to validate that :board cannot be empty/falsy7205 behaves like boards recent visit7206 #visited7207 creates a visit if one does not exists7208 behaves like was visited previously7209 updates the timestamp7210 when we try to create a visit that is not unique7211 behaves like was visited previously7212 updates the timestamp7213 #latest7214 returns the most recent visited7215 returns last 3 visited boards7216Gitlab::Database::BulkUpdate7217 is possible to update all objects in a single query7218 is possible to update heterogeneous sets7219 error states7220 does not raise errors on valid inputs7221 expects a non-empty list of column names7222 expects all columns to be symbols7223 expects all columns to be valid columns on the tables7224 refuses to set ID7225 expects a non-empty mapping7226 expects all map values to be Hash instances7227 validates prepared_statements support7228 prepared_statements: false7229 sets multiple values7230 prepared_statements: true7231 sets multiple values7232Mutations::DependencyProxy::GroupSettings::Update7233 is expected to require graphql authorizations :admin_dependency_proxy7234 #resolve7235 user_role: :owner, shared_examples_name: "updating the dependency proxy group settings"7236 behaves like updating the dependency proxy group settings7237 returns the dependency proxy settings no errors7238 behaves like updating the dependency proxy group settings attributes7239 updates the dependency proxy settings7240 user_role: :maintainer, shared_examples_name: "denying access to dependency proxy group settings"7241 behaves like denying access to dependency proxy group settings7242 raises Gitlab::Graphql::Errors::ResourceNotAvailable7243 with disabled admin_package feature flag7244 behaves like updating the dependency proxy group settings7245 returns the dependency proxy settings no errors7246 behaves like updating the dependency proxy group settings attributes7247 updates the dependency proxy settings7248 user_role: :developer, shared_examples_name: "denying access to dependency proxy group settings"7249 behaves like denying access to dependency proxy group settings7250 raises Gitlab::Graphql::Errors::ResourceNotAvailable7251 user_role: :reporter, shared_examples_name: "denying access to dependency proxy group settings"7252 behaves like denying access to dependency proxy group settings7253 raises Gitlab::Graphql::Errors::ResourceNotAvailable7254 user_role: :guest, shared_examples_name: "denying access to dependency proxy group settings"7255 behaves like denying access to dependency proxy group settings7256 raises Gitlab::Graphql::Errors::ResourceNotAvailable7257 user_role: :anonymous, shared_examples_name: "denying access to dependency proxy group settings"7258 behaves like denying access to dependency proxy group settings7259 raises Gitlab::Graphql::Errors::ResourceNotAvailable7260projects/pages/show7261 validation warning7262 doesn't show auto ssl error warning7263 when domain is not verified7264 shows auto ssl error warning7265 warning about failed Let's Encrypt7266 doesn't show auto ssl error warning7267 when we failed to obtain Let's Encrypt's certificate7268 shows auto ssl error warning7269Gitlab::Kas::UserAccess7270 # order random7271 .enabled_for?7272 is expected to equal true7273 when flag kas_user_access is disabled7274 is expected to equal false7275 when flag kas_user_access_project is disabled7276 is expected to equal false7277 .{encrypt,decrypt}_public_session_id7278 is expected not to include "the data"7279 is expected to eq "the data"7280 .enabled?7281 is expected to equal true7282 when flag kas_user_access is disabled7283 is expected to equal false7284 .cookie_data7285 is encrypted, secure, httponly7286 when on non-root path7287 sets :path7288 when on subdomain7289 sets :domain7290TokenAuthenticatableStrategies::Encrypted7291 #token_fields7292 includes the encrypted field7293 #find_token_authenticatable7294 when encryption is required7295 behaves like finds the resource with/without setting require_prefix_for_validation7296 behaves like finds the resource7297 finds the resource by cleartext7298 when a require_prefix_for_validation is provided7299 behaves like does not find any resource7300 does not find any resource by cleartext7301 when token starts with prefix7302 behaves like finds the resource7303 finds the resource by cleartext7304 when encryption is optional7305 uses insecure strategy when encrypted token cannot be found7306 behaves like finds the resource with/without setting require_prefix_for_validation7307 behaves like finds the resource7308 finds the resource by cleartext7309 when a require_prefix_for_validation is provided7310 behaves like does not find any resource7311 does not find any resource by cleartext7312 when token starts with prefix7313 behaves like finds the resource7314 finds the resource by cleartext7315 when encryption is migrating7316 behaves like finds the resource with/without setting require_prefix_for_validation7317 behaves like finds the resource7318 finds the resource by cleartext7319 when a require_prefix_for_validation is provided7320 behaves like does not find any resource7321 does not find any resource by cleartext7322 when token starts with prefix7323 behaves like finds the resource7324 finds the resource by cleartext7325 #get_token7326 when encryption is required7327 returns decrypted token when an encrypted with static iv token is present7328 returns decrypted token when an encrypted token is present7329 when encryption is optional7330 returns decrypted token when an encrypted token is present7331 returns decrypted token when an encrypted with static iv token is present7332 returns the plaintext token when encrypted token is not present7333 when encryption is migrating7334 returns cleartext token when an encrypted token is present7335 returns the cleartext token when encrypted token is not present7336 #set_token7337 when encryption is required7338 writes encrypted token and returns it7339 when encryption is optional7340 writes encrypted token and removes plaintext token and returns it7341 when encryption is migrating7342 writes encrypted token and writes plaintext token7343MergeRequests::PipelineEntity7344 #as_json7345 contains required fields7346 returns presented coverage7347 excludes coverage data when disabled7348Gitlab::Git::MergeBase7349 #sha7350 returns `nil` when the refs do not have a common ancestor7351 returns a merge base when passing 2 branch names7352 returns a merge base when passing a tag name7353 when the refs exist7354 returns the SHA of the merge base7355 memoizes the result7356 when passing a missing ref7357 does not call merge_base on the repository but raises an error7358 #commit7359 does not try to find the commit when there is no sha7360 for existing refs with a merge base7361 finds the commit for the merge base7362 only looks up the commit once7363 #unknown_refs7364 returns the refs passed that are not part of the repository7365 only looks up the commits once7366UserPresenter7367 #web_path7368 is expected to eq "/user718"7369 #web_url7370 is expected to eq "http://localhost/user718"7371 #can?7372 forwards call to the given user7373 Gitpod7374 Gitpod enabled for application7375 #preferences_gitpod_path7376 is expected to eq "/-/profile/preferences#user_gitpod_enabled"7377 #profile_enable_gitpod_path7378 is expected to eq "/-/profile?user%5Bgitpod_enabled%5D=true"7379 Gitpod disabled for application7380 #preferences_gitpod_path7381 is expected to eq nil7382 #profile_enable_gitpod_path7383 is expected to eq nil7384 #saved_replies7385 when feature is disabled7386 is expected to eq #<ActiveRecord::Relation []>7387 when feature is enabled7388 when user has no permission to read saved replies7389 is expected to eq #<ActiveRecord::Relation []>7390 when user has permission to read saved replies7391 is expected to eq [#<Users::SavedReply id: 1, user_id: 1796, created_at: "2023-06-02 06:43:14.087399915 +0000", updated_at: "2023-06-02 06:43:14.087399915 +0000", name: "saved_reply_1", content: [FILTERED]>]7392BulkImports::Projects::Pipelines::SnippetsPipeline7393 #run7394 imports snippet into destination project7395 with award_emoji7396 restores the award_emoji7397 with notes7398 restores the notes7399Tooling::KubernetesClient7400 #cleanup_namespaces_by_created_at7401 when no namespaces are stale7402 does not delete any namespace7403 when some namespaces are stale7404 when some namespaces are not review app namespaces7405 only deletes the review app namespaces7406 when all namespaces are review app namespaces7407 deletes all of the stale namespaces7408 #delete_namespaces7409 when at least one namespace is not a review app namespace7410 does not delete any namespace7411 when all namespaces are review app namespaces7412 deletes the namespaces7413 #namespaces_created_before7414 returns an array of namespaces7415 #run_command7416 when executing a successful command7417 displays the name of the command to stdout7418 does not raise an error7419 when executing an unsuccessful command7420 displays the name of the command to stdout7421 raises an error7422Gitlab::Ci::Status::Build::Scheduled7423 #illustration7424 is expected to include :image, :size, and :title7425 #status_tooltip7426 has a placeholder for the remaining time7427 .matches?7428 when build is scheduled and scheduled_at is present7429 is expected to be truthy7430 when build is scheduled7431 is expected to be falsy7432 when scheduled_at is present7433 is expected to be falsy7434Gitlab::Issuable::Clone::CopyResourceEventsService7435 copies the resource label events7436 with existing milestone events7437 copies existing resource milestone events7438 with existing state events7439 copies existing state events as expected7440Gitlab::Database::Partitioning::DetachedPartitionDropper7441 #perform7442 when the partition should not be dropped yet7443 does not drop the partition7444 with a partition to drop7445 drops the partition7446 removing foreign keys7447 removes foreign keys from the table before dropping it7448 does not remove foreign keys from the parent table7449 when another process drops the foreign key7450 skips dropping that foreign key7451 when another process drops the partition7452 skips dropping the foreign key7453 when another process drops the table while the first waits for a lock7454 skips the table7455 when the partition to drop is still attached to its table7456 does not drop the partition, but does remove the DetachedPartition entry7457 when another process removes the entry before this process7458 does nothing7459 with multiple partitions to drop7460 drops both partitions7461 when the first drop returns an error7462 still drops the second partition7463projects/diffs/_viewer.html.haml7464 when there is a render error7465 renders the error7466 when the viewer is collapsed7467 renders the collapsed view7468 when there is no render error7469 prepares the viewer7470 renders the viewer7471Gitlab::Auth::Otp::Strategies::FortiAuthenticator::ManualOtp7472 successful validation7473 returns success7474 unsuccessful validation7475 returns error7476 unexpected error7477 returns error7478Gitlab::Usage::ServicePing::InstrumentedPayload7479 when building service ping with values7480 builds the service ping payload for the metrics key_paths7481 when building service ping with instrumentations7482 builds the service ping payload for the metrics key_paths7483 when missing instrumentation class7484 returns empty hash7485 with broken metric definition file7486 when instrumentation class name is incorrect7487 tracks error and return fallback7488 when instrumentation class raises TypeError7489 tracks error and return fallback7490 when instrumentation class raises ArgumentError7491 tracks error and return fallback7492 when instrumentation class raises StandardError7493 tracks error and return fallback7494RepositoryUpdateRemoteMirrorWorker7495 is labeled as idempotent7496 performs multiple times sequentially without raising an exception7497 #perform7498 calls out to the service to perform the update7499 does not do anything if the mirror was already updated7500 schedules a retry when the mirror is marked for retrying7501 clears the lease if there was an unexpected exception7502 retries 3 times for the worker to finish before rescheduling7503Sidebars::Projects::Menus::MergeRequestsMenu7504 behaves like serializable as super_sidebar_menu_args7505 returns hash with provided attributes7506 returns hash with an item_id7507 #render?7508 when repository is not present7509 returns false7510 when repository is present7511 when user can read merge requests7512 returns true7513 when user cannot read merge requests7514 returns false7515 #pill_count7516 returns zero when there are no open merge requests7517 memoizes the query7518 when there are open merge requests7519 returns the number of open merge requests7520 formatting7521 when the count value is over 10007522 returns truncated digits7523Types::Terraform::StateType7524 is expected to eq "TerraformState"7525 is expected to require graphql authorizations :read_terraform_state7526 fields7527 is expected to have graphql fields :id, :name, :locked_by_user, :locked_at, :latest_version, :created_at, :updated_at, and :deleted_at7528 is expected to be non null7529 is expected to be non null7530 is expected not to be non null7531 is expected not to be non null7532 is expected to be non null7533 is expected to be non null7534 is expected not to be non null7535 is expected not to be non null7536 is expected to eq 37537check_forced_decomposition initializer7538 # order random7539 for production env7540 for single database7541 is expected not to raise Exception7542 for multiple database7543 when ci and main share the same database7544 is expected not to raise Exception7545 when host is not present7546 is expected not to raise Exception7547 when ci and main share the same database but different host7548 is expected to raise /Separate CI database is not ready/7549 when ci and main are different databases7550 is expected to raise /Separate CI database is not ready/7551 for SaaS7552 is expected not to raise Exception7553 when env var GITLAB_ALLOW_SEPARATE_CI_DATABASE is true7554 is expected not to raise Exception7555 when env var GITLAB_ALLOW_SEPARATE_CI_DATABASE is false7556 is expected to raise /Separate CI database is not ready/7557Packages::Npm::Metadatum7558 relationships7559 is expected to belong to package required: false inverse_of => npm_metadatum7560 validations7561 package7562 is expected to validate that :package cannot be empty/falsy7563 ensure npm package type7564 package_json7565 is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›7566 is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}, extra-field: {:foo=>"bar"}}›7567 is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x", :"extra-field"=>"x"}}›7568 is expected not to allow :package_json to be ‹{"version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›7569 is expected not to allow :package_json to be ‹{"name" => "foo", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›7570 is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0"}›7571 is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"shasum"=>"x"}}›7572 is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x"}}›7573 is expected not to allow :package_json to be ‹{}›7574 is expected not to allow :package_json to be ‹{test: "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest"}›7575 scopes7576 .package_id_in7577 returns metadatums with the given package ids7578Ci::CreatePipelineService7579 creation errors and warnings7580 when created successfully7581 when warnings are raised7582 contains only warnings7583 when no warnings are raised7584 contains no warnings7585 when failed to create the pipeline7586 when errors are raised and masked variables are involved7587 contains errors and masks variables7588 when warnings are raised7589 contains both errors and warnings7590 when no warnings are raised7591 contains only errors7592Gitlab::Ci::Components::InstancePath7593 # order random7594 FQDN path7595 when project exists7596 provides the expected attributes7597 when content exists7598 when user has permissions to read code7599 fetches the content7600 when user does not have permissions to download code7601 raises an error when fetching the content7602 when project path is nested under a subgroup7603 provides the expected attributes7604 when current GitLab instance is installed on a relative URL7605 provides the expected attributes7606 when version does not exist7607 provides the expected attributes7608 returns nil when fetching the content7609 when version is `~latest`7610 when project is a catalog resource7611 when project has releases7612 returns the sha of the latest release7613 when project does not have releases7614 is expected to be nil7615 when project is not a catalog resource7616 is expected to be nil7617 when project does not exist7618 provides the expected attributes7619 returns nil when fetching the content7620Mutations::AlertManagement::UpdateAlertStatus7621 is expected to require graphql authorizations :update_alert_management_alert7622 #resolve7623 raises an error if the resource is not accessible to the user7624 user has access to project7625 changes the status7626 returns the alert with no errors7627 behaves like an incident management tracked event7628 .track_event7629 tracks the event using redis7630 behaves like Snowplow event tracking with RedisHLL context7631 behaves like Snowplow event tracking7632 is emitted7633 error occurs when updating7634 returns the alert with errors7635 invalid status given7636 returns the alert with errors7637Gitlab::Ci::Status::Failed7638 #text7639 is expected to eq "failed"7640 #label7641 is expected to eq "failed"7642 #icon7643 is expected to eq "status_failed"7644 #favicon7645 is expected to eq "favicon_status_failed"7646 #group7647 is expected to eq "failed"7648 #details_path7649 is expected to be nil7650RuboCop::Cop::Gitlab::PredicateMemoization7651 # order random7652 when source is a predicate method using ivar with assignment7653 behaves like not registering offense7654 does not register offenses7655 when source is a predicate method memoizing via ivar7656 when assigning to boolean7657 registers an offense7658 when assigning to another variable that is a boolean7659 registers an offense7660 when source is a regular method memoizing via ivar7661 behaves like not registering offense7662 does not register offenses7663 when source is a predicate method using local with ||=7664 behaves like not registering offense7665 does not register offenses7666API::Helpers::MembersHelpers7667 # order random7668 #source_members7669 for a group7670 behaves like returns all direct members7671 is expected to contain exactly #<GroupMember id: 1261, access_level: 50, source_id: 3236, source_type: "Namespace", user_id: 1837, n...erride: false, state: 0, invite_email_success: true, member_namespace_id: 3236, member_role_id: nil> and #<GroupMember id: 1262, access_level: 50, source_id: 3236, source_type: "Namespace", user_id: 1838, n...erride: false, state: 0, invite_email_success: true, member_namespace_id: 3236, member_role_id: nil>7672 behaves like query with source filters7673 is expected to include "source_id" and "source_type"7674 for a project7675 behaves like returns all direct members7676 is expected to contain exactly #<ProjectMember id: 1264, access_level: 40, source_id: 948, source_type: "Project", user_id: 1841, no...erride: false, state: 0, invite_email_success: true, member_namespace_id: 3244, member_role_id: nil> and #<ProjectMember id: 1266, access_level: 40, source_id: 948, source_type: "Project", user_id: 1843, no...erride: false, state: 0, invite_email_success: true, member_namespace_id: 3244, member_role_id: nil>7677 behaves like query without source filters7678 is expected not to include "source_id" and "source_type"7679Sidebars::UserProfile::Panel7680 # order random7681 implements #super_sidebar_context_header7682 implements #aria_label7683 behaves like a panel with uniquely identifiable menu items7684 all menu_items have unique item_id7685 all menu_items have an item_id7686RemoveUnreferencedLfsObjectsWorker7687 #perform7688 removes unreferenced lfs objects7689 leaves referenced lfs objects7690 removes unreferenced lfs objects after project removal7691 behaves like an idempotent worker7692 is labeled as idempotent7693 performs multiple times sequentially without raising an exception7694JiraImport::ServerUsersMapperService7695 #execute7696 behaves like mapping jira users7697 jira_users is nil7698 returns an empty array7699 when jira_users is present7700 returns users mapped to Gitlab7701 runs only 4 queries7702HashedStorage::ProjectMigrateWorker7703 #perform7704 skips when project no longer exists7705 skips when project is pending delete7706 skips when project is already migrated7707 with exclusive lease available7708 delegates migration to service class7709 delegates migration to service class with correct path in a partially migrated project7710 with exclusive lease taken7711 skips when it cant acquire the exclusive lease7712WebauthnRegistration7713 relations7714 is expected to belong to user required: false7715 validations7716 is expected to validate that :credential_xid cannot be empty/falsy7717 is expected to validate that :public_key cannot be empty/falsy7718 is expected to validate that :counter cannot be empty/falsy7719 is expected to validate that the length of :name is at least 07720 is expected not to allow :name to be ‹nil›7721 is expected to validate that :counter looks like an integer greater than or equal to 0 and less than or equal to 42949672957722DeploymentSerializer7723 #represent7724 behaves like json schema7725 matches deployment entity schema7726 #represent_concise7727 behaves like json schema7728 matches deployment entity schema7729ExceedQueryLimitHelpers7730 can count queries7731 can select specific queries7732 can filter specific models7733 can ignore specific queries7734 can perform inclusion and exclusion7735 does not contain marginalia annotations7736 #diff_query_group_message7737 prints a group helpfully7738 #diff_query_counts7739 merges two query counts, showing only diffs7740 can show common queries if so desired7741 #count_queries7742 handles queries with suffixes over multiple lines7743 can aggregate queries7744Projects::MoveLfsObjectsProjectsService7745 #execute7746 links the lfs objects from existent in source project7747 does not link existent lfs_object in the current project7748 rollbacks changes if transaction fails7749 when remove_remaining_elements is false7750 does not remove remaining lfs objects7751GraphqlTriggers7752 .issuable_assignees_updated7753 triggers the issuable_assignees_updated subscription7754 .issuable_title_updated7755 triggers the issuable_title_updated subscription7756 .issuable_description_updated7757 triggers the issuable_description_updated subscription7758 .issuable_labels_updated7759 triggers the issuable_labels_updated subscription7760 .issuable_dates_updated7761 triggers the issuable_dates_updated subscription7762 .issuable_milestone_updated7763 triggers the issuable_milestone_updated subscription7764 .merge_request_reviewers_updated7765 triggers the merge_request_reviewers_updated subscription7766 .merge_request_merge_status_updated7767 triggers the merge_request_merge_status_updated subscription7768 when realtime_mr_status_change feature flag is disabled7769 does not trigger realtime_mr_status_change subscription7770 .merge_request_approval_state_updated7771 triggers the merge_request_approval_state_updated subscription7772Autocomplete::RoutesFinder7773 #execute7774 for NamespacesOnly7775 finds only user namespace and groups matching the search excluding project namespaces7776 when user is admin7777 when admin mode setting is disabled7778 finds all namespaces matching the search excluding project namespaces7779 when admin mode setting is enabled7780 when in admin mode7781 finds all namespaces matching the search excluding project namespaces7782 when not in admin mode7783 does not find all namespaces7784 for ProjectsOnly7785 finds only matching projects the user has access to7786 when user is admin7787 when admin mode setting is disabled7788 finds all projects matching the search7789 when admin mode setting is enabled7790 when in admin mode7791 finds all projects matching the search7792 when not in admin mode7793 does not find all projects7794Environments::StopStaleService7795 # order random7796 #execute7797 only stops stale environments7798Resolvers::DataTransfer::ProjectDataTransferResolver7799 # order random7800 with authorized user but without enough permissions7801 does not raise an error and returns no data7802 with anonymous access7803 does not raise an error and returns no data7804 when user has permissions to see data transfer7805 returns mock data7806 when data_transfer_monitoring is disabled7807 returns empty result7808 when data_transfer_monitoring_mock_data is disabled7809 calls ProjectDataTransferFinder with expected arguments7810Gitlab::Memory::Watchdog::Monitor::UniqueMemoryGrowth7811 # order random7812 #call7813 gets memory_usage_uss_pss7814 when monitor is called twice7815 reference memory is calculated only once7816 when process exceeds threshold7817 returns if threshold is violated and payload7818 when process does not exceed threshold7819 returns if threshold is violated and payload7820Ci::CreatePipelineService7821 job:parallel7822 numeric7823 creates the pipeline7824 creates 3 jobs7825 matrix7826 creates the pipeline7827 creates 4 builds with the corresponding matrix variables7828 when a bridge is using parallel:matrix7829 creates the pipeline7830 creates 1 build and 4 bridges with the corresponding matrix variables7831RuboCop::Cop::Migration::BackgroundMigrationBaseClass7832 # order random7833 when the migration class inherits from the namespaced BatchedMigrationJob7834 does not register any offenses7835 when the migration class inherits from the top-level namespaced BatchedMigrationJob7836 does not register any offenses7837 when a nested class is used inside the job class7838 does not register any offenses7839 when the migration class inherits from another class7840 registers an offense7841 when the migration class inherits from BatchedMigrationJob7842 does not register any offenses7843 when the migration class does not inherit from anything7844 registers an offense7845GraphHelper7846 #get_refs7847 filters our refs used by GitLab7848 #should_render_dora_charts7849 always returns false7850 #should_render_quality_summary7851 always returns false7852Mutations::Issues::LinkAlerts7853 # order random7854 is expected to require graphql authorizations :update_issue and :admin_issue7855 #resolve7856 when the user is a guest7857 raises an error7858 when a user is also an author7859 raises an error7860 when a user is also an assignee7861 raises an error7862 when the user is a developer7863 when issue type is an incident7864 calls LinkAlerts::CreateService with correct arguments7865 returns no errors7866 when issue type is not an incident7867 does not update alert_management_alerts7868Gitlab::UrlBlockers::UrlAllowlist7869 #domain_allowed?7870 returns true if domains present in allowlist7871 returns false when domain is blank7872 with ports7873 returns true if domain and ports present in allowlist7874 #ip_allowed?7875 returns true if ips present in allowlist7876 returns false when ip is blank7877 with ip ranges in allowlist7878 does not allowlist ipv4 range when not in allowlist7879 allowlists all ipv4s in the range when in allowlist7880 does not allowlist ipv6 range when not in allowlist7881 allowlists all ipv6s in the range when in allowlist7882 does not allowlist IPs outside the range7883 with ports7884 returns true if ip and ports present in allowlist7885CustomerRelations::Organizations::UpdateService7886 #execute7887 when the user has no permission7888 returns an error7889 when user has permission7890 when name is changed7891 updates the crm_organization7892 when activating7893 updates the contact7894 when deactivating7895 updates the crm_organization7896 when the crm_organization is invalid7897 returns an error7898LfsPointersFinder7899 #execute7900 when path has no LFS files7901 is expected to eq []7902 when path points to LFS file7903 returns LFS blob ids7904 when path points to directory with LFS files7905 returns LFS blob ids7906 when repository is empty7907 is expected to eq []7908PersonalAccessTokens::ExpiringWorker7909 #perform7910 when a token needs to be notified7911 uses notification service to send the email7912 marks the notification as delivered7913 when no tokens need to be notified7914 doesn't use notification service to send the email7915 doesn't change the notification delivered of the token7916 when a token is an impersonation token7917 doesn't use notification service to send the email7918 doesn't change the notification delivered of the token7919API::Entities::Ci::JobRequest::Port7920 returns the port number7921 returns if the port protocol7922 returns the port name7923ExternalIssue7924 modules7925 is expected to includes the Referable module7926 #to_reference7927 returns a String reference to the object7928 #title7929 returns a title7930 #reference_link_text7931 if issue id has a prefix7932 returns the issue ID7933 if issue id is a number7934 returns the issue ID prefixed by #7935 #project_id7936 returns the ID of the project7937 #hash7938 returns the hash of its [class, to_s] pair7939Ci::PipelineSchedules::UpdateService7940 # order random7941 execute7942 when user does not have permission7943 returns ServiceResponse.error7944 when user has permission7945 updates database values with passed params7946 returns ServiceResponse.success7947 when schedule update fails7948 returns ServiceResponse.error7949Checksummable7950 .crc327951 returns the CRC32 of data7952 .sha256_hexdigest7953 returns the SHA256 sum of the file7954 .md5_hexdigest7955 returns the MD5 sum of the file7956JobArtifactReportEntity7957 #as_json7958 exposes file_type7959 exposes file_format7960 exposes size7961 exposes download path7962Users::DeactivateService7963 # order random7964 #execute7965 when successful7966 returns success status7967 changes the user's state7968 creates a log entry7969 when the user is already deactivated7970 returns error result7971 does not change the user's state7972 when internal user7973 returns an error message7974 when user is blocked7975 returns an error message7976 when user is not an admin7977 returns permissions error message7978 when skip_authorization is true7979 deactivates the user even if the current user is not an admin7980Sidebars::UserProfile::Menus::SnippetsMenu7981 # order random7982 behaves like User profile menu7983 does not contain any sub menu7984 renders the correct link7985 renders the correct title7986 renders the correct icon7987 defines correct active route7988 renders if user is logged in7989 when viewed user is blocked7990 when user is not logged in7991 is not allowed to view the menu item7992 when current user has permission7993 is allowed to view the menu item7994 when current user does not have permission7995 is not allowed to view the menu item7996 when viewed user is banned7997 when user is not logged in7998 is not allowed to view the menu item7999 when current user has permission8000 is allowed to view the menu item8001 when current user does not have permission8002 is not allowed to view the menu item8003Users::UnbanService8004 unban8005 when successful8006 returns success status8007 unbans the user8008 removes the BannedUser8009 logs unban in application logs8010 when failed8011 when user is already active8012 returns state error message8013 behaves like does not modify the BannedUser record or user state8014 does not modify the BannedUser record or user state8015 when user is not an admin8016 returns permissions error message8017 behaves like does not modify the BannedUser record or user state8018 does not modify the BannedUser record or user state8019Peek::Views::ExternalHttp8020 returns no results8021 returns aggregated results8022 when the host is in IPv4 format8023 displays IPv4 in the label8024 when the host is in IPv6 foramat8025 displays IPv6 in the label8026 when the query is a hash8027 converts query hash into a query string8028 when the host is invalid8029 displays unknown in the label8030 when URI creation raises an URI::Error8031 displays unknown in the label8032 when URI creation raises a StandardError exception8033 displays unknown in the label8034Banzai::ReferenceParser::MentionedUserParser8035 #gather_references8036 when the link has a data-group attribute8037 using an existing group ID8038 returns empty list of users8039 when the link has a data-project attribute8040 using an existing project ID8041 returns empty list of users8042 when the link has a data-user attribute8043 returns an Array of users8044Gitlab::Analytics::CycleAnalytics::StageEvents::StageEvent8045 is expected to respond to #name8046 is expected to respond to #identifier8047 is expected to respond to #object_type8048 is expected to respond to #timestamp_projection8049 is expected to respond to #apply_query_customization8050MoveToProjectEntity8051 #as_json8052 includes the project ID8053 includes the human-readable full path8054 includes the full path8055IssueDueSchedulerWorker8056 #perform8057 schedules one MailScheduler::IssueDueWorker per project with open issues due tomorrow8058Gitlab::Config::Entry::ComposableArray8059 #valid?8060 is valid8061 is invalid8062 is expected not to be valid8063 #compose!8064 composes child entry with configured value8065 composes child entries with configured values8066 #descendants8067 creates descendant nodes8068Types::ReleaseAssetsType8069 is expected to require graphql authorizations :read_release8070 has the expected fields8071 links field8072 is expected to have graphql type #<Class:0x00007fcb4f165ce8>8073 sources field8074 is expected to have graphql type #<Class:0x00007fcb4f147838>8075Search::SnippetService8076 #execute8077 unauthenticated8078 returns public snippets only8079 authenticated8080 returns only public & internal snippets for regular users8081 returns public, internal snippets and project private snippets for project members8082 returns public, internal and private snippets where user is the author8083 when admin mode is enabled8084 returns all snippets when user is admin8085 when admin mode is disabled8086 returns only public & internal snippets when user is admin8087 #scope8088 always scopes to snippet_titles8089Projects::ProjectTopic8090 is expected to be valid8091 associations8092 is expected to belong to project required: false8093 is expected to belong to topic required: false8094ResourceLabelEventPolicy8095 #read_resource_label_event8096 with non-member user8097 does not allow to read event8098 with member user8099 allows to read event for accessible label8100 does not allow to read event for not accessible label8101 #read_label8102 allows to read deleted label8103 allows to read accessible label8104 does not allow to read not accessible label8105Mutations::Branches::Create8106 #resolve8107 raises an error if the resource is not accessible to the user8108 when the user can create a branch8109 when service successfully creates a new branch8110 returns a new branch8111 when service fails to create a new branch8112 is expected to be nil8113 is expected to eq ["Branch already exists"]8114ProtectedBranches::CreateService8115 with entity project8116 behaves like execute with entity8117 #execute8118 creates a new protected branch8119 refreshes the cache8120 when protecting a branch with a name that contains HTML tags8121 creates a new protected branch8122 when a policy restricts rule creation8123 prevents creation of the protected branch rule8124 creates a new protected branch if we skip authorization step8125 with entity group8126 behaves like execute with entity8127 #execute8128 creates a new protected branch8129 refreshes the cache8130 when protecting a branch with a name that contains HTML tags8131 creates a new protected branch8132 when a policy restricts rule creation8133 prevents creation of the protected branch rule8134 creates a new protected branch if we skip authorization step8135CronSchedulable8136 for ci_pipeline_schedule8137 behaves like handles set_next_run_at8138 when schedule runs every minute8139 updates next_run_at to the worker's execution time8140 when there are two different schedules in the same time zones8141 sets the sames next_run_at8142 when cron is updated for existing schedules8143 updates next_run_at automatically8144Gitlab::DataBuilder::FeatureFlag8145 .build8146 is expected to be a kind of Hash8147 is expected to eq "feature_flag"8148 contains the correct object attributes8149Gitlab::ProjectStatsRefreshConflictsLogger8150 .warn_artifact_deletion_during_stats_refresh8151 logs a warning about artifacts being deleted while the project is undergoing stats refresh8152 .warn_request_rejected_during_stats_refresh8153 logs a warning about artifacts being deleted while the project is undergoing stats refresh8154 .warn_skipped_artifact_deletion_during_stats_refresh8155 logs a warning about artifacts being excluded from deletion while the project is undergoing stats refresh8156Clusters::Group8157 is expected to belong to cluster required: false8158 is expected to belong to group required: false8159Gitlab::PerformanceBar::WithTopLevelWarnings8160 #has_warnings?8161 has_warnings: false, results: {:data=>{}}8162 is expected to eq false8163 has_warnings: false, results: {:data=>{:gitaly=>{:warnings=>[]}}}8164 is expected to eq false8165 has_warnings: true, results: {:data=>{:gitaly=>{:warnings=>[1]}}}8166 is expected to eq true8167 has_warnings: true, results: {:data=>{:gitaly=>{:warnings=>[]}, :redis=>{:warnings=>[1]}}}8168 is expected to eq true8169Gitlab::Ci::Config::Entry::Release::Assets8170 validation8171 when entry config value is correct8172 #value8173 returns assets configuration8174 #valid?8175 is valid8176 when entry value is not correct8177 #errors8178 when value of assets is invalid8179 reports error8180 when value of assets:links is empty8181 reports error8182 when there is an unknown key present8183 reports error8184ProtectedBranches::DestroyService8185 with entity project8186 behaves like execute with entity8187 #execute8188 destroys a protected branch8189 refreshes the cache8190 when a policy restricts rule deletion8191 prevents deletion of the protected branch rule8192 with entity group8193 behaves like execute with entity8194 #execute8195 destroys a protected branch8196 refreshes the cache8197 when a policy restricts rule deletion8198 prevents deletion of the protected branch rule8199Gitlab::Database::SchemaValidation::Inconsistency8200 # order random8201 #type8202 returns the type of the validator8203 #database_statement8204 returns database statement8205 #object_name8206 returns the index name8207 #structure_sql_statement8208 returns structure sql statement8209 #object_type8210 returns the structure sql object type8211 when the structure sql object is not available8212 returns the database object type8213 #error_message8214 returns the error message8215 #table_name8216 returns the table name8217 #inspect8218 prints the inconsistency message8219 #diff8220 returns a diff between the structure.sql and the database8221Sidebars::Groups::SuperSidebarMenus::AnalyzeMenu8222 # order random8223 defines list of NilMenuItem placeholders8224 has title and sprite_icon8225Gitlab::Database::MigrationHelpers::CascadingNamespaceSettings8226 #add_cascading_namespace_setting8227-- column_exists?(:namespace_settings, :some_setting)8228 -> 0.0052s8229-- column_exists?(:namespace_settings, :lock_some_setting)8230 -> 0.0041s8231-- column_exists?(:application_settings, :some_setting)8232 -> 0.2741s8233-- column_exists?(:application_settings, :lock_some_setting)8234 -> 0.2754s8235 creates the required columns8236 when columns already exist8237-- add_column(:namespace_settings, :cascading_setting, :integer)8238 -> 0.0025s8239-- add_column(:application_settings, :lock_cascading_setting, :boolean)8240 -> 0.0019s8241-- column_exists?(:namespace_settings, :cascading_setting)8242 -> 0.0046s8243-- column_exists?(:namespace_settings, :lock_cascading_setting)8244 -> 0.0048s8245-- column_exists?(:application_settings, :cascading_setting)8246 -> 0.2748s8247-- column_exists?(:application_settings, :lock_cascading_setting)8248 -> 0.2747s8249 raises an error when some columns already exist8250 #remove_cascading_namespace_setting8251 removes the columns8252BitbucketServer::Representation::Comment8253 #id8254 is expected to eq 98255 #author_username8256 returns username8257 when username is absent8258 returns slug8259 when slug and username are absent8260 returns displayName8261 #author_email8262 is expected to eq "test.user@example.com"8263 #note8264 is expected to eq "is this a new line?"8265 #created_at8266 is expected to be a kind of Time8267 #updated_at8268 is expected to be a kind of Time8269 #comments8270 is expected to eq 48271 is expected to all be a kind of BitbucketServer::Representation::Comment8272 is expected to contain exactly "Hello world", "Ok", "hello", and "hi"8273 comments have the right parent8274PaginationHelper8275 #paginate_collection8276 paginates a collection without using a COUNT8277 paginates a collection using a COUNT8278PersonalAccessTokens::ExpiredNotificationWorker8279 #perform8280 when a token has expired8281 uses notification service to send email to the user8282 updates notified column8283 when token has expired in the past8284 behaves like expiry notification is not required to be sent for the token8285 is expected not to receive access_token_expired(#<User id:1974 @user819>, ["PAT 11"]) 0 times8286 when token is impersonated8287 behaves like expiry notification is not required to be sent for the token8288 is expected not to receive access_token_expired(#<User id:1975 @user820>, ["PAT 12"]) 0 times8289 when token is revoked8290 behaves like expiry notification is not required to be sent for the token8291 is expected not to receive access_token_expired(#<User id:1976 @user821>, ["PAT 13"]) 0 times8292Security::CiConfiguration::SastIacBuildAction8293 with existing .gitlab-ci.yml and when the ci config file configuration was not set8294 behaves like existing .gitlab-ci.yml tests8295 with existing .gitlab-ci.yml8296 sast iac has not been included8297 template includes are an array8298 generates the correct YML8299 template include is not an array8300 generates the correct YML8301 secret_detection has been included8302 secret_detection template include are an array8303 generates the correct YML8304 secret_detection template include is not an array8305 generates the correct YML8306 with existing .gitlab-ci.yml and when the ci config file configuration was deleted8307 behaves like existing .gitlab-ci.yml tests8308 with existing .gitlab-ci.yml8309 sast iac has not been included8310 template includes are an array8311 generates the correct YML8312 template include is not an array8313 generates the correct YML8314 secret_detection has been included8315 secret_detection template include are an array8316 generates the correct YML8317 secret_detection template include is not an array8318 generates the correct YML8319 with no .gitlab-ci.yml8320 autodevops disabled8321 generates the correct YML8322 with autodevops enabled8323 generates the correct YML8324MigrationsHelpers8325 #active_record_base8326 returns the main base model8327 raises ArgumentError for bad database argument8328 ci database configured8329 returns the CI base model (PENDING: Skipping because none of the extra databases [:ci] are setup)8330 ci database not configured8331 returns the main base model8332 #table8333 creates a class based on main base model8334 ci database configured8335 create a class based on the CI base model (PENDING: Skipping because none of the extra databases [:ci] are setup)8336 ci database not configured8337 creates a class based on main base model8338 #reset_column_information8339 with a regular ActiveRecord model class8340 calls reset_column_information8341 with an anonymous class with table name defined8342 calls reset_column_information8343 with an anonymous class with no table name defined8344 does not call reset_column_information8345UsageStatistics8346 .distinct_count_by8347 two records created by the same issue8348 returns a count of 18349 when given no column to count8350 counts by :id and returns a count of 28351 one record created by each issue8352 returns a count of 28353 the count query times out8354 does not raise an error8355 returns -18356Sidebars::Admin::Menus::AdminSettingsMenu8357 # order random8358 behaves like Admin menu with sub menus8359 contains submemus8360 behaves like Admin menu8361 renders the correct link8362 renders the correct title8363 renders the correct icon8364 renders the separator if needed8365 #render?8366 when user is admin8367 renders8368 when user is not admin8369 does not render8370 when user is not logged in8371 does not render8372Integrations::ChatMessage::MergeMessage8373 behaves like Integrations::ChatMessage8374 when input contains link markup8375 strips all link markup characters8376 without markdown8377 open8378 returns a message regarding opening of merge requests8379 close8380 returns a message regarding closing of merge requests8381 with markdown8382 open8383 returns a message regarding opening of merge requests8384 close8385 returns a message regarding closing of merge requests8386 approved8387 returns a message regarding completed approval of merge requests8388 unapproved8389 returns a message regarding revocation of completed approval of merge requests8390 approval8391 returns a message regarding added approval of merge requests8392 unapproval8393 returns a message regarding revoking approval of merge requests8394Gitlab::SidekiqMiddleware::SizeLimiter::ExceedLimitError8395 encapsulates worker info8396ContainerRegistry::DataRepairDetail8397 # order random8398 is expected to belong to project required: true8399 behaves like having unique enum values8400 has unique values in "status"8401 .ongoing_since8402 is expected to contain exactly #<ContainerRegistry::DataRepairDetail missing_count: 0, project_id: 1017, created_at: "2023-06-02 06:44:56.005883341 +0000", updated_at: "2023-06-01 06:44:55.755153116 +0000", status: "ongoing">8403Gitlab::SQL::Except8404 behaves like SQL set operator8405 .operator_keyword8406 is expected to eq "EXCEPT"8407 #to_sql8408 returns a String joining relations together using a EXCEPT8409 skips Model.none segments8410 uses EXCEPT ALL when removing duplicates is disabled8411 returns `NULL` if all relations are empty8412 when uneven select values are used8413 raises error8414 remove_order parameter8415 when remove_order: true8416 removes the ORDER BY from the query8417 when remove_order: false8418 does not remove the ORDER BY from the query8419DependencyProxy::ImageTtlGroupPolicy8420 relationships8421 is expected to belong to group required: false8422 validations8423 is expected to validate that :group cannot be empty/falsy8424 #enabled8425 is expected to allow :enabled to be ‹true›8426 is expected to allow :enabled to be ‹false›8427 is expected not to allow :enabled to be ‹nil›8428 #ttl8429 is expected to validate that :ttl looks like a number greater than 0 as long as it is not nil8430 .enabled8431 returns policies that are enabled8432Gitlab::Ci::Status::Build::Canceled8433 #illustration8434 is expected to include :image, :size, and :title8435 .matches?8436 when build is canceled8437 is a correct match8438 when build is not canceled8439 does not match8440Resolvers::WorkItems::TypesResolver8441 #resolve8442 when parent is a group8443 behaves like a work item type resolver8444 returns all default work item types8445 when requesting taskable types8446 returns only taskable types8447 when parent is a project8448 behaves like a work item type resolver8449 returns all default work item types8450 when requesting taskable types8451 returns only taskable types8452Mutations::Achievements::Update8453 # order random8454 is expected to require graphql authorizations :admin_achievement8455 #resolve8456 when the user does not have permission8457 raises an error8458 when the user has permission8459 updates the achievement8460 when the params are invalid8461 returns the validation error8462projects/merge_requests/_close_reopen_draft_report_toggle.html.haml8463 # order random8464 notifcations toggle8465 when mr merged and logged in8466 is present8467 when mr merged and not logged in8468 is not present8469StubMemberAccessLevel8470 # order random8471 stub_member_access_level8472 with project8473 behaves like access level stubs8474 stubs max member access level per user8475 fails for unstubbed access8476 fails for invalid access level8477 with group8478 behaves like access level stubs8479 stubs max member access level per user8480 fails for unstubbed access8481 fails for invalid access level8482 with unsupported object8483 raises an error8484Gitlab::Pagination::Keyset8485 .available_for_type?8486 returns true for Project8487 return false for other types of relations8488 .available?8489 with order-by id asc8490 behaves like keyset pagination is available8491 returns true for Project8492 return false for other types of relations8493 with order-by id desc8494 behaves like keyset pagination is available8495 returns true for Project8496 return false for other types of relations8497 with other order-by columns8498 returns false for Project8499 return false for other types of relations8500CreatePipelineWorker8501 #perform8502 when a project not found8503 does not call the Service8504 when a user not found8505 does not call the Service8506 when everything is ok8507 calls the Service8508Gitlab::Email::Message::InProductMarketing8509 .for8510 when track exists8511 track: :create, expected_class: Gitlab::Email::Message::InProductMarketing::Create8512 is expected to eq Gitlab::Email::Message::InProductMarketing::Create8513 track: :team_short, expected_class: Gitlab::Email::Message::InProductMarketing::TeamShort8514 is expected to eq Gitlab::Email::Message::InProductMarketing::TeamShort8515 track: :trial_short, expected_class: Gitlab::Email::Message::InProductMarketing::TrialShort8516 is expected to eq Gitlab::Email::Message::InProductMarketing::TrialShort8517 track: :admin_verify, expected_class: Gitlab::Email::Message::InProductMarketing::AdminVerify8518 is expected to eq Gitlab::Email::Message::InProductMarketing::AdminVerify8519 track: :verify, expected_class: Gitlab::Email::Message::InProductMarketing::Verify8520 is expected to eq Gitlab::Email::Message::InProductMarketing::Verify8521 track: :trial, expected_class: Gitlab::Email::Message::InProductMarketing::Trial8522 is expected to eq Gitlab::Email::Message::InProductMarketing::Trial8523 track: :team, expected_class: Gitlab::Email::Message::InProductMarketing::Team8524 is expected to eq Gitlab::Email::Message::InProductMarketing::Team8525 when track does not exist8526 raises error8527Resolvers::ProjectPipelinesResolver8528 when the user does have access8529 resolves only MRs for the passed merge request8530 when the user does not have access8531 does not return pipeline data8532Counters::CleanupRefreshWorker8533 # order random8534 #perform8535 calls cleanup_refresh on the counter8536 when model class does not exist8537 does nothing8538 when record does not exist8539 does nothing8540Gitlab::Ci::Pipeline::Expression::Lexeme::Equals8541 .build8542 with non-evaluable operands8543 creates a new instance of the token8544 with evaluable operands8545 creates a new instance of the token8546 .type8547 is an operator8548 .precedence8549 has a precedence8550 #evaluate8551 when left and right are equal8552 left_value: "string", right_value: "string"8553 is expected to eq true8554 when left and right are not equal8555 left_value: "one string", right_value: "two string"8556 is expected to eq false8557 left_value: "two string", right_value: "one string"8558 is expected to eq false8559Ci::Runners::StaleManagersCleanupService8560 # order random8561 with some stale runner managers8562 only leaves non-stale runners8563 with more stale runners than SUB_BATCH_LIMIT8564 only leaves non-stale runners8565 with more stale runners than MAX_DELETIONS8566 only leaves non-stale runners8567 with no stale runner managers8568 does not clean any runner managers and returns :success status8569Ml::CandidateMetric8570 associations8571 is expected to belong to candidate required: false8572 scope :latest8573 fetches only the last metric for the name8574Mutations::BaseMutation8575 argument nullability8576 when using a mutation with correct argument declarations8577 when argument is nullable and required8578 is expected to raise ArgumentError with message matching /must be provided: foo/8579 is expected not to raise Exception8580 is expected not to raise Exception8581 when argument is required and NOT nullable8582 is expected to raise ArgumentError with message matching /must be provided/8583 is expected to raise ArgumentError with message matching /must be provided/8584 is expected not to raise Exception8585DataList8586 #to_array8587 returns current data8588Gitlab::Git::LfsPointerFile8589 #size8590 counts the bytes8591 handles non ascii data8592 #sha2568593 hashes the content correctly8594 #pointer8595 starts with the LFS version8596 includes sha2568597 ends with the size8598DependencyProxy::CleanupManifestWorker8599 behaves like dependency_proxy_cleanup_worker8600 #perform_work8601 with no work to do8602 is expected to be nil8603 with work to do8604 deletes the oldest artifact pending destruction based on updated_at8605 #max_running_jobs8606 is expected to eq 58607 #remaining_work_count8608 is expected to eq 38609MergeRequests::Mergeability::CheckCiStatusService8610 #execute8611 when the merge request is in a mergable state8612 returns a check result with status success8613 when the merge request is not in a mergeable state8614 returns a check result with status failed8615 #skip?8616 when skip check is true8617 returns true8618 when skip check is false8619 returns false8620 #cacheable?8621 returns false8622Gitlab::Database::MigrationHelpers::LooseForeignKeyHelpers8623-- create_table(:_test_loose_fk_test_table)8624 -> 0.0034s8625 when the record deletion tracker trigger is not installed8626 does store record deletions8627-- current_schema()8628 -> 0.0007s8629 is expected to be falsy8630 when the record deletion tracker trigger is installed8631-- execute("CREATE TRIGGER _test_loose_fk_test_table_loose_fk_trigger AFTER DELETE ON _test_loose_fk_test_table REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();")8632 -> 0.0015s8633 stores the record deletion8634-- execute("CREATE TRIGGER _test_loose_fk_test_table_loose_fk_trigger AFTER DELETE ON _test_loose_fk_test_table REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();")8635 -> 0.0015s8636 stores multiple record deletions8637-- execute("CREATE TRIGGER _test_loose_fk_test_table_loose_fk_trigger AFTER DELETE ON _test_loose_fk_test_table REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();")8638 -> 0.0014s8639-- current_schema()8640 -> 0.0007s8641 is expected to be truthy8642-- drop_table(:_test_loose_fk_test_table)8643 -> 0.0017s8644Ci::TrackFailedBuildService8645 #execute8646 when a build has failed8647 tracks the build failed event8648 when a build has not failed8649 does not track the build failed event8650BulkImports::Groups::Graphql::GetProjectsQuery8651 has a valid query8652 with invalid variables8653 raises an error8654 #data_path8655 returns data path8656 #page_info_path8657 returns pagination information path8658Gitlab::Usage::Metrics::Instrumentations::GitlabForJiraAppProxyInstallationsCountMetric8659 # order random8660 behaves like a correct instrumented metric value and query8661 behaves like a correct instrumented metric value8662 has correct value8663 behaves like a correct instrumented metric query8664 has correct generate query8665AnalyticsBuildSerializer8666 when there is a single object provided8667 contains important elements of analyticsBuild8668MergeRequests::Mergeability::CheckOpenStatusService8669 #execute8670 when the merge request is open8671 returns a check result with status success8672 when the merge request is not open8673 returns a check result with status failed8674 #skip?8675 returns false8676 #cacheable?8677 returns false8678Types::DeploymentType8679 # order random8680 has the expected fields8681 is expected to require graphql authorizations :read_deployment8682 is expected to eq "Deployment"8683 is expected to expose permissions using Types::PermissionTypes::Deployment8684Gitlab::Ci::Build::Artifacts::Adapters::RawStream8685 #initialize8686 when stream is passed8687 initialized8688 when stream is not passed8689 raises an error8690 #each_blob8691 when file is not empty8692 iterates content8693 when file is empty8694 does not iterate content8695Gitlab::Ci::Config::Entry::Hooks8696 # order random8697 validations8698 when passing a valid hook8699 is expected to be valid8700 when passing an invalid hook8701 is expected not to be valid8702 when entry config is not a hash8703 is expected not to be valid8704 #value8705 returns a hash8706NullifyIfBlank8707 attribute exists8708 attribute is blank8709 is expected to be nil8710 attribute is nil8711 is expected to be nil8712 attribute is not blank8713 is expected to eq "name"8714 attribute does not exist8715 is expected to raise ActiveModel::UnknownAttributeError8716Gitlab::View::Presenter::Factory8717 #initialize8718 without optional parameters8719 takes a subject and optional params8720 with optional parameters8721 takes a subject and optional params8722 #fabricate!8723 detects the presenter based on the given subject8724 uses the presenter_class if given on #initialize8725Types::Achievements::AchievementType8726 # order random8727 is expected to have graphql fields "id", "namespace", "name", "avatar_url", "description", "created_at", "updated_at", and "user_achievements"8728 is expected to require graphql authorizations :read_achievement8729 is expected to eq "Achievement"8730 #avatar_url8731 calls Achievement#avatar_url(only_path: false)8732BulkImports::ExportUpload8733 stores export file8734 associations8735 is expected to belong to export required: false8736Gitlab::Graphql::Tracers::MetricsTracer8737 when used as tracer and query is executed8738 does not record apdex for failing queries8739 duration: 0.1, expected_success: true8740 increments apdex sli8741 duration: 1.1, expected_success: false8742 increments apdex sli8743BulkImports::Projects::Pipelines::ContainerExpirationPolicyPipeline8744 #run8745 imports project feature8746Gitlab::TabWidth8747 .css_class_for_user8748 returns default CSS class when user is nil8749 returns CSS class for user's tab width8750 raises if tab width is out of valid range8751TrackingHelper8752 #tracking_attrs8753 returns no data if snowplow is disabled8754 returns data hash8755 can return data directly8756RuboCop::Cop::Migration::BackgroundMigrationRecord8757 # order random8758 in migration8759 adds an offense if inheriting from ActiveRecord::Base8760 adds an offense if create dynamic model from ActiveRecord::Base8761 adds an offense if inheriting from ::ActiveRecord::Base8762 outside of a migration8763 does not register any offenses8764RuboCop::Cop::Migration::AddConcurrentIndex8765 # order random8766 when outside of migration8767 registers no offense8768 when in migration8769 registers an offense when add_concurrent_index is used inside a change method8770 registers no offense when add_concurrent_index is used inside an up method8771Types::Boards::BoardIssueInputType8772 is expected to eq "BoardIssueInput"8773 has specific fields8774Gitlab::ExternalAuthorization::Config8775 # order random8776 allows deploy tokens and keys when external authorization is disabled8777 when external authorization is enabled8778 disable deploy tokens and keys8779 enable deploy tokens and keys when it is explicitly enabled and service url is blank8780Types::PrometheusAlertType8781 is expected to eq "PrometheusAlert"8782 has the expected fields8783 is expected to require graphql authorizations :read_prometheus_alerts8784Gitlab::Database::SchemaValidation::SchemaObjects::Trigger8785 # order random8786 #name8787 returns schema object name8788 #table_name8789 returns schema object table_name8790 #statement8791 returns schema object statement8792WebpackHelper8793 #prefetch_link_tag8794DEPRECATION WARNING: The asset "foo.js" is not present in the asset pipeline.8795Falling back to an asset that may be in the public folder.8796This behavior is deprecated and will be removed.8797To bypass the asset pipeline and preserve this behavior,8798use the `skip_pipeline: true` option.8799 (called from prefetch_link_tag at /builds/gitlab-org/gitlab/app/helpers/webpack_helper.rb:5)8800 returns prefetch link tag8801 #webpack_preload_asset_tag8802 preloads the resource by default8803 prefetches the resource if explicitly asked8804Gitlab::Utils::BatchLoader8805 # order random8806 .clear_key8807 clears batched items which match the specified batch key8808 clears loaded values which match the specified batch key8809Keys::DestroyService8810 destroys a key8811Gitlab::DoorkeeperSecretStoring::Token::Pbkdf2Sha5128812 # order random8813 STRETCHES8814 is 20_0008815 .transform_secret8816 generates a PBKDF2+SHA512 hashed value in the correct format8817 SALT8818 is empty8819Import::GithubOrgSerializer8820 # order random8821 represents GithubOrgEntity entities8822 #represent8823 when a single object is being serialized8824 serializes organization object8825 when multiple objects are being serialized8826 serializes array of organizations8827Gitlab::SidekiqMiddleware::ExtraDoneLogMetadata8828 #call8829 merges Application#logging_extras in to job8830 does not raise when the worker does not respond to #done_log_extra_metadata8831Gitlab::ApplicationRateLimiter::BaseStrategy8832 #increment8833 raises NotImplementedError8834 #read8835 raises NotImplementedError8836Types::Clusters::AgentTokenStatusEnum8837 is expected to eq "AgentTokenStatus"8838 is expected to contain exactly "ACTIVE" and "REVOKED"8839API::Entities::BulkImports::Entity8840 has the correct attributes8841shared/ssh_keys/_key_delete.html.haml8842 # order random8843 has text8844RuboCop::Cop::Migration::RemoveIndex8845 # order random8846 when outside of migration8847 registers no offense8848 when in migration8849 registers an offense when remove_index is used8850Types::Ci::RunnerArchitectureType8851 is expected to eq "RunnerArchitecture"8852 exposes the expected fields8853Gitlab::ExternalAuthorization::Cache8854 #load8855 reads stored info from redis8856 #store8857 sets the values in redis8858Gitlab::GithubImport::Importer::Events::BaseImporter8859 #execute8860 is expected to raise NotImplementedError8861Admin::UserEntity8862 #as_json8863 exposes correct attributes8864Projects::Settings::BranchRulesHelper8865 # order random8866 #branch_rules_data8867 returns branch rules data8868Types::Ci::StageType8869 is expected to eq "CiStage"8870 exposes the expected fields8871Gitlab::ErrorTracking::LogFormatter8872 appends error-related log fields and filters sensitive Sidekiq arguments8873Types::DeploymentTierEnum8874 includes a value for each supported environment tier8875DetailedStatusEntity8876 #as_json8877 contains status details8878Types::Ci::InheritedCiVariableType8879 # order random8880 is expected to have graphql fields :id, :key, :raw, :variable_type, :environment_scope, :masked, :protected, :group_name, and :group_ci_cd_settings_path8881Types::PermissionTypes::Ci::Job8882 has expected permission fields8883Types::PermissionTypes::Note8884 has the expected fields8885Gitlab::GithubImport::Representation::LfsObject8886 #github_identifiers8887 returns a hash with needed identifiers8888Gitlab::Database::PostgresqlDatabaseTasks::LoadSchemaVersionsMixin8889 calls SchemaMigrations load_all8890Types::PermissionTypes::MergeRequest8891 is expected to have graphql fields :read_merge_request, :admin_merge_request, :update_merge_request, :create_note, :push_to_source_branch, :remove_source_branch, :cherry_pick_on_current_merge_request, :revert_on_current_merge_request, :can_merge, and :can_approve8892Gitlab::QuickActions::Dsl8893 .command_definitions8894 returns an array with commands definitions8895Knapsack report was generated. Preview:8896{8897 "spec/models/namespace_spec.rb": 124.100959805,8898 "spec/lib/gitlab/regex_spec.rb": 25.556509268000013,8899 "spec/models/member_spec.rb": 56.735976187999995,8900 "spec/lib/gitlab/git/commit_spec.rb": 80.97677773499998,8901 "spec/services/projects/create_service_spec.rb": 67.10326773400004,8902 "spec/lib/gitlab/import_export/group/tree_restorer_spec.rb": 59.95902566099994,8903 "spec/helpers/integrations_helper_spec.rb": 17.40979138600005,8904 "spec/lib/gitlab/kubernetes/kube_client_spec.rb": 17.129812084999912,8905 "spec/finders/todos_finder_spec.rb": 28.425266789000034,8906 "spec/workers/packages/maven/metadata/sync_worker_spec.rb": 33.63543168600006,8907 "spec/models/abuse_report_spec.rb": 17.662742768000044,8908 "spec/services/merge_requests/close_service_spec.rb": 32.61988127500001,8909 "spec/tooling/danger/project_helper_spec.rb": 7.66317897600004,8910 "spec/services/search_service_spec.rb": 17.93793712899992,8911 "spec/routing/project_routing_spec.rb": 9.595802117000062,8912 "spec/lib/gitlab/ci/parsers/security/validators/schema_validator_spec.rb": 4.2332304420000355,8913 "spec/lib/gitlab/email/handler/create_merge_request_handler_spec.rb": 25.834615642000017,8914 "spec/lib/container_registry/gitlab_api_client_spec.rb": 4.306183841999996,8915 "spec/services/git/tag_hooks_service_spec.rb": 18.82301729599999,8916 "spec/models/concerns/avatarable_spec.rb": 15.932798214000059,8917 "spec/services/milestones/transfer_service_spec.rb": 17.5335551820001,8918 "spec/models/ci/pipeline_artifact_spec.rb": 9.318972954999936,8919 "spec/lib/gitlab/database/with_lock_retries_outside_transaction_spec.rb": 15.097887369999967,8920 "spec/lib/sbom/package_url_spec.rb": 3.2640791340000987,8921 "spec/helpers/diff_helper_spec.rb": 4.444133821000037,8922 "spec/models/integrations/chat_message/pipeline_message_spec.rb": 10.226332779000018,8923 "spec/lib/gitlab/auth/request_authenticator_spec.rb": 3.323017496000034,8924 "spec/models/concerns/pg_full_text_searchable_spec.rb": 7.458076409,8925 "spec/models/clusters/integrations/prometheus_spec.rb": 10.090739510000049,8926 "spec/models/release_highlight_spec.rb": 8.280290014000002,8927 "spec/lib/gitlab/ci/config/entry/reports_spec.rb": 3.0379129089999424,8928 "spec/lib/api/entities/snippet_spec.rb": 4.824867878000077,8929 "spec/services/groups/group_links/create_service_spec.rb": 11.532052700999884,8930 "spec/finders/clusters/kubernetes_namespace_finder_spec.rb": 8.630921325999907,8931 "spec/services/system_notes/time_tracking_service_spec.rb": 8.024399800000083,8932 "spec/workers/pages/invalidate_domain_cache_worker_spec.rb": 3.0209763849998126,8933 "spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb": 9.335861514000044,8934 "spec/lib/bulk_imports/projects/pipelines/design_bundle_pipeline_spec.rb": 6.067576144999975,8935 "spec/lib/banzai/pipeline/gfm_pipeline_spec.rb": 5.445222251999894,8936 "spec/bin/sidekiq_cluster_spec.rb": 9.833569751000141,8937 "spec/lib/gitlab/user_access_snippet_spec.rb": 4.031181741999944,8938 "spec/lib/google_api/cloud_platform/client_spec.rb": 1.1370883299998695,8939 "spec/serializers/environment_entity_spec.rb": 6.766796063999891,8940 "spec/models/concerns/prometheus_adapter_spec.rb": 5.835619568000084,8941 "spec/uploaders/pages/deployment_uploader_spec.rb": 7.408908861999862,8942 "spec/lib/gitlab/database/load_balancing/session_spec.rb": 1.158439398999917,8943 "spec/tasks/gitlab/seed/runner_fleet_rake_spec.rb": 6.873956915999997,8944 "spec/services/merge_requests/delete_non_latest_diffs_service_spec.rb": 7.0257959239997945,8945 "spec/services/packages/conan/create_package_file_service_spec.rb": 4.919791439999926,8946 "spec/services/timelogs/create_service_spec.rb": 4.721410886000058,8947 "spec/services/wiki_pages/destroy_service_spec.rb": 5.034329480999986,8948 "spec/services/clusters/agents/create_service_spec.rb": 5.074491396999974,8949 "spec/workers/deployments/update_environment_worker_spec.rb": 7.0829463889999715,8950 "spec/workers/merge_requests/create_pipeline_worker_spec.rb": 7.839620631999878,8951 "spec/services/work_items/create_and_link_service_spec.rb": 7.418005781999909,8952 "spec/lib/gitlab/diff/parser_spec.rb": 1.108354658000053,8953 "spec/helpers/boards_helper_spec.rb": 2.607151179000084,8954 "spec/views/notify/pipeline_failed_email.text.erb_spec.rb": 5.6476010259998475,8955 "spec/graphql/types/terraform/state_version_type_spec.rb": 2.288007371000049,8956 "spec/tasks/gitlab/web_hook_rake_spec.rb": 4.740681477999942,8957 "spec/models/ci/build_trace_chunks/database_spec.rb": 4.118880381000054,8958 "spec/lib/gitlab/middleware/compressed_json_spec.rb": 1.5842703400001028,8959 "spec/workers/database/batched_background_migration/ci_execution_worker_spec.rb": 1.5909468199999992,8960 "spec/models/lfs_object_spec.rb": 3.0478286879999814,8961 "spec/models/projects/topic_spec.rb": 2.31847790300003,8962 "spec/services/ci/catalog/validate_resource_service_spec.rb": 2.6833122949999506,8963 "spec/components/pajamas/badge_component_spec.rb": 1.1330666300000303,8964 "spec/lib/gitlab/jira_import/issue_serializer_spec.rb": 1.5967102009999508,8965 "spec/services/work_items/import_csv_service_spec.rb": 3.920306094000125,8966 "spec/serializers/group_child_serializer_spec.rb": 4.097414280000066,8967 "spec/rubocop/cop/rspec/factory_bot/inline_association_spec.rb": 0.9839488569998593,8968 "spec/models/packages/debian/file_entry_spec.rb": 1.1674879419999797,8969 "spec/models/projects/repository_storage_move_spec.rb": 1.317633356999977,8970 "spec/lib/gitlab/ci/templates/terraform_latest_gitlab_ci_yaml_spec.rb": 4.179725608000126,8971 "spec/lib/gitlab/ci/config/entry/include/rules/rule_spec.rb": 0.9138257500001146,8972 "spec/finders/tags_finder_spec.rb": 2.0034196879998944,8973 "spec/rubocop/cop/gitlab/namespaced_class_spec.rb": 1.3149424799998997,8974 "spec/tasks/gettext_rake_spec.rb": 4.254217161000042,8975 "spec/models/board_project_recent_visit_spec.rb": 3.629759566000075,8976 "spec/lib/gitlab/database/bulk_update_spec.rb": 3.7226386039999397,8977 "spec/graphql/mutations/dependency_proxy/group_settings/update_spec.rb": 2.0344597130001603,8978 "spec/views/projects/pages/show.html.haml_spec.rb": 4.554269934000104,8979 "spec/lib/gitlab/kas/user_access_spec.rb": 0.6238463950001005,8980 "spec/models/concerns/token_authenticatable_strategies/encrypted_spec.rb": 1.0072844970000006,8981 "spec/serializers/merge_requests/pipeline_entity_spec.rb": 1.3145973990001494,8982 "spec/lib/gitlab/git/merge_base_spec.rb": 1.378231317999962,8983 "spec/presenters/user_presenter_spec.rb": 0.8294695009999487,8984 "spec/lib/bulk_imports/projects/pipelines/snippets_pipeline_spec.rb": 1.8051289679999627,8985 "spec/tooling/lib/tooling/kubernetes_client_spec.rb": 0.7970106419998046,8986 "spec/lib/gitlab/ci/status/build/scheduled_spec.rb": 2.5121491920001517,8987 "spec/lib/gitlab/issuable/clone/copy_resource_events_service_spec.rb": 2.3773249150001448,8988 "spec/lib/gitlab/database/partitioning/detached_partition_dropper_spec.rb": 1.3053854089998822,8989 "spec/views/projects/diffs/_viewer.html.haml_spec.rb": 3.7503849619999983,8990 "spec/lib/gitlab/auth/otp/strategies/forti_authenticator/manual_otp_spec.rb": 0.4858422590000373,8991 "spec/lib/gitlab/usage/service_ping/instrumented_payload_spec.rb": 2.693510696999965,8992 "spec/workers/repository_update_remote_mirror_worker_spec.rb": 2.1010258510000313,8993 "spec/lib/sidebars/projects/menus/merge_requests_menu_spec.rb": 1.7711030289999599,8994 "spec/graphql/types/terraform/state_type_spec.rb": 0.6092687360001037,8995 "spec/initializers/check_forced_decomposition_spec.rb": 0.5783294269999715,8996 "spec/models/packages/npm/metadatum_spec.rb": 1.1981960020000315,8997 "spec/services/ci/create_pipeline_service/creation_errors_and_warnings_spec.rb": 2.3329669959998682,8998 "spec/lib/gitlab/ci/components/instance_path_spec.rb": 2.6533506789999137,8999 "spec/graphql/mutations/alert_management/update_alert_status_spec.rb": 1.7269268800000646,9000 "spec/lib/gitlab/ci/status/failed_spec.rb": 0.40431330000001253,9001 "spec/rubocop/cop/gitlab/predicate_memoization_spec.rb": 0.39621949100001075,9002 "spec/lib/api/helpers/members_helpers_spec.rb": 1.948304845000166,9003 "spec/lib/sidebars/user_profile/panel_spec.rb": 0.5808992659999603,9004 "spec/workers/remove_unreferenced_lfs_objects_worker_spec.rb": 2.592144069999904,9005 "spec/services/jira_import/server_users_mapper_service_spec.rb": 3.107280746000015,9006 "spec/workers/hashed_storage/project_migrate_worker_spec.rb": 1.8954697399999532,9007 "spec/models/webauthn_registration_spec.rb": 0.5344308319999982,9008 "spec/serializers/deployment_serializer_spec.rb": 3.1225279379998483,9009 "spec/support_specs/matchers/exceed_query_limit_helpers_spec.rb": 0.7499597099999846,9010 "spec/services/projects/move_lfs_objects_projects_service_spec.rb": 2.7346605870000076,9011 "spec/graphql/graphql_triggers_spec.rb": 1.4906355140001324,9012 "spec/finders/autocomplete/routes_finder_spec.rb": 2.42487701999994,9013 "spec/services/environments/stop_stale_service_spec.rb": 1.8605238820000523,9014 "spec/graphql/resolvers/data_transfer/project_data_transfer_resolver_spec.rb": 1.093562737999946,9015 "spec/lib/gitlab/memory/watchdog/monitor/unique_memory_growth_spec.rb": 0.3745310309998331,9016 "spec/services/ci/create_pipeline_service/parallel_spec.rb": 2.922339786999828,9017 "spec/rubocop/cop/migration/background_migration_base_class_spec.rb": 0.44659524300004705,9018 "spec/helpers/graph_helper_spec.rb": 1.9034217880000597,9019 "spec/graphql/mutations/issues/link_alerts_spec.rb": 1.909170199000073,9020 "spec/lib/gitlab/url_blockers/url_allowlist_spec.rb": 0.7031171389999145,9021 "spec/services/customer_relations/organizations/update_service_spec.rb": 0.8838288900001317,9022 "spec/finders/lfs_pointers_finder_spec.rb": 1.1089402540001174,9023 "spec/workers/personal_access_tokens/expiring_worker_spec.rb": 0.767019085000129,9024 "spec/lib/api/entities/ci/job_request/port_spec.rb": 0.37937981400000353,9025 "spec/models/external_issue_spec.rb": 0.4810422920002111,9026 "spec/services/ci/pipeline_schedules/update_service_spec.rb": 1.445239021999896,9027 "spec/models/concerns/checksummable_spec.rb": 0.3451193149999199,9028 "spec/serializers/job_artifact_report_entity_spec.rb": 2.1220125220002046,9029 "spec/services/users/deactivate_service_spec.rb": 1.5434992859998147,9030 "spec/lib/sidebars/user_profile/menus/snippets_menu_spec.rb": 1.1895528029999696,9031 "spec/services/users/unban_service_spec.rb": 1.8176869850001367,9032 "spec/lib/peek/views/external_http_spec.rb": 0.5128309839999474,9033 "spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb": 2.0230130589998225,9034 "spec/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event_spec.rb": 0.43687038799998845,9035 "spec/serializers/move_to_project_entity_spec.rb": 0.35743819699996493,9036 "spec/workers/issue_due_scheduler_worker_spec.rb": 1.7621069490000991,9037 "spec/lib/gitlab/config/entry/composable_array_spec.rb": 0.41815685500000654,9038 "spec/graphql/types/release_assets_type_spec.rb": 0.3692947679999179,9039 "spec/services/search/snippet_service_spec.rb": 1.7360628830001588,9040 "spec/models/projects/project_topic_spec.rb": 0.593797393999921,9041 "spec/policies/resource_label_event_policy_spec.rb": 1.4194172539998817,9042 "spec/graphql/mutations/branches/create_spec.rb": 1.523853494999912,9043 "spec/services/protected_branches/create_service_spec.rb": 1.4008564079999815,9044 "spec/models/concerns/cron_schedulable_spec.rb": 1.5904512229999455,9045 "spec/lib/gitlab/data_builder/feature_flag_spec.rb": 1.6561876420000772,9046 "spec/lib/gitlab/project_stats_refresh_conflicts_logger_spec.rb": 0.35173009700019975,9047 "spec/models/clusters/group_spec.rb": 0.31591985300019587,9048 "spec/lib/gitlab/performance_bar/with_top_level_warnings_spec.rb": 0.3971423479999885,9049 "spec/lib/gitlab/ci/config/entry/release/assets_spec.rb": 0.4202387739999267,9050 "spec/services/protected_branches/destroy_service_spec.rb": 1.3350365700000566,9051 "spec/lib/gitlab/database/schema_validation/inconsistency_spec.rb": 0.6845274770000742,9052 "spec/lib/sidebars/groups/super_sidebar_menus/analyze_menu_spec.rb": 0.3189593130000503,9053 "spec/lib/gitlab/database/migration_helpers/cascading_namespace_settings_spec.rb": 1.477248142999997,9054 "spec/lib/bitbucket_server/representation/comment_spec.rb": 0.6844070370000281,9055 "spec/helpers/pagination_helper_spec.rb": 0.3896415399999569,9056 "spec/workers/personal_access_tokens/expired_notification_worker_spec.rb": 1.1012624210000013,9057 "spec/lib/security/ci_configuration/sast_iac_build_action_spec.rb": 0.6128422499998578,9058 "spec/support_specs/helpers/migrations_helpers_spec.rb": 0.6173465589999978,9059 "spec/models/concerns/usage_statistics_spec.rb": 1.069901998000205,9060 "spec/lib/sidebars/admin/menus/admin_settings_menu_spec.rb": 0.5915864030000648,9061 "spec/models/integrations/chat_message/merge_message_spec.rb": 0.5444501519998539,9062 "spec/lib/gitlab/sidekiq_middleware/size_limiter/exceed_limit_error_spec.rb": 0.27136883100001796,9063 "spec/models/container_registry/data_repair_detail_spec.rb": 1.627680676999944,9064 "spec/lib/gitlab/sql/except_spec.rb": 0.5676363370000672,9065 "spec/models/dependency_proxy/image_ttl_group_policy_spec.rb": 0.6513965929998449,9066 "spec/lib/gitlab/ci/status/build/canceled_spec.rb": 1.5132732580000265,9067 "spec/graphql/resolvers/work_items/types_resolver_spec.rb": 0.9249855590001062,9068 "spec/graphql/mutations/achievements/update_spec.rb": 0.9463479560001815,9069 "spec/views/projects/merge_requests/_close_reopen_draft_report_toggle.html.haml_spec.rb": 1.3812763280000127,9070 "spec/support_specs/stub_member_access_level_spec.rb": 0.6109052169999813,9071 "spec/lib/gitlab/pagination/keyset_spec.rb": 0.5680870599999253,9072 "spec/workers/create_pipeline_worker_spec.rb": 1.1285798710000563,9073 "spec/lib/gitlab/email/message/in_product_marketing_spec.rb": 0.5203636850001203,9074 "spec/graphql/resolvers/project_pipelines_resolver_spec.rb": 1.1613859980000143,9075 "spec/workers/counters/cleanup_refresh_worker_spec.rb": 0.8878477519999706,9076 "spec/lib/gitlab/ci/pipeline/expression/lexeme/equals_spec.rb": 0.46435984899994764,9077 "spec/services/ci/runners/stale_managers_cleanup_service_spec.rb": 0.6406532940000034,9078 "spec/models/ml/candidate_metric_spec.rb": 0.9847382240000115,9079 "spec/graphql/mutations/base_mutation_spec.rb": 0.5198631739999655,9080 "spec/models/data_list_spec.rb": 1.0052045219999854,9081 "spec/lib/gitlab/git/lfs_pointer_file_spec.rb": 0.4088477039999816,9082 "spec/workers/dependency_proxy/cleanup_manifest_worker_spec.rb": 0.5921924879999096,9083 "spec/services/merge_requests/mergeability/check_ci_status_service_spec.rb": 0.4752727979998781,9084 "spec/lib/gitlab/database/migration_helpers/loose_foreign_key_helpers_spec.rb": 0.538805843000091,9085 "spec/services/ci/track_failed_build_service_spec.rb": 0.8564018140000371,9086 "spec/lib/bulk_imports/groups/graphql/get_projects_query_spec.rb": 0.48725867799998923,9087 "spec/lib/gitlab/usage/metrics/instrumentations/gitlab_for_jira_app_proxy_installations_count_metric_spec.rb": 0.6531246530000772,9088 "spec/serializers/analytics_build_serializer_spec.rb": 0.8466530949999651,9089 "spec/services/merge_requests/mergeability/check_open_status_service_spec.rb": 0.42364486299993587,9090 "spec/graphql/types/deployment_type_spec.rb": 0.3643346080000356,9091 "spec/lib/gitlab/ci/build/artifacts/adapters/raw_stream_spec.rb": 0.3680546380001033,9092 "spec/lib/gitlab/ci/config/entry/hooks_spec.rb": 0.3649930070000664,9093 "spec/models/concerns/nullify_if_blank_spec.rb": 0.4339810020001096,9094 "spec/lib/gitlab/view/presenter/factory_spec.rb": 0.4487617610000143,9095 "spec/graphql/types/achievements/achievement_type_spec.rb": 0.37016710700004296,9096 "spec/models/bulk_imports/export_upload_spec.rb": 0.5215959050001402,9097 "spec/lib/gitlab/graphql/tracers/metrics_tracer_spec.rb": 0.35110003900013,9098 "spec/lib/bulk_imports/projects/pipelines/container_expiration_policy_pipeline_spec.rb": 0.6876473500001339,9099 "spec/lib/gitlab/tab_width_spec.rb": 0.335693099999844,9100 "spec/helpers/tracking_helper_spec.rb": 0.38634070600005543,9101 "spec/rubocop/cop/migration/background_migration_record_spec.rb": 0.4332007020000219,9102 "spec/rubocop/cop/migration/add_concurrent_index_spec.rb": 0.3499103390001892,9103 "spec/graphql/types/boards/board_issue_input_type_spec.rb": 0.28209523600003195,9104 "spec/lib/gitlab/external_authorization/config_spec.rb": 0.34932099999991806,9105 "spec/graphql/types/prometheus_alert_type_spec.rb": 0.3112740330000179,9106 "spec/lib/gitlab/database/schema_validation/schema_objects/trigger_spec.rb": 0.32531175200006146,9107 "spec/helpers/webpack_helper_spec.rb": 0.35339507899993805,9108 "spec/lib/gitlab/utils/batch_loader_spec.rb": 0.29131523399996695,9109 "spec/services/keys/destroy_service_spec.rb": 0.48703379700009464,9110 "spec/lib/gitlab/doorkeeper_secret_storing/token/pbkdf2_sha512_spec.rb": 0.34521137000001545,9111 "spec/serializers/import/github_org_serializer_spec.rb": 0.3229415319999589,9112 "spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb": 0.28653447500005313,9113 "spec/lib/gitlab/application_rate_limiter/base_strategy_spec.rb": 0.3017853929998182,9114 "spec/graphql/types/clusters/agent_token_status_enum_spec.rb": 0.2946675839998534,9115 "spec/lib/api/entities/bulk_imports/entity_spec.rb": 0.3399965589999283,9116 "spec/views/shared/ssh_keys/_key_delete.html.haml_spec.rb": 0.3303148400000282,9117 "spec/rubocop/cop/migration/remove_index_spec.rb": 0.3176235519999864,9118 "spec/graphql/types/ci/runner_architecture_type_spec.rb": 0.2923017240000263,9119 "spec/lib/gitlab/external_authorization/cache_spec.rb": 0.3096285930000704,9120 "spec/lib/gitlab/github_import/importer/events/base_importer_spec.rb": 0.2577131670000199,9121 "spec/serializers/admin/user_entity_spec.rb": 0.37093294700002843,9122 "spec/helpers/projects/settings/branch_rules_helper_spec.rb": 0.2980500140001823,9123 "spec/graphql/types/ci/stage_type_spec.rb": 0.28594999500000995,9124 "spec/lib/gitlab/error_tracking/log_formatter_spec.rb": 0.2592703969999093,9125 "spec/graphql/types/deployment_tier_enum_spec.rb": 0.24994319800021003,9126 "spec/serializers/detailed_status_entity_spec.rb": 0.26371559600011096,9127 "spec/graphql/types/ci/inherited_ci_variable_type_spec.rb": 0.25497946799987403,9128 "spec/graphql/types/permission_types/ci/job_spec.rb": 0.2584394670000165,9129 "spec/graphql/types/permission_types/note_spec.rb": 0.26383611699998255,9130 "spec/lib/gitlab/github_import/representation/lfs_object_spec.rb": 0.25977244700015945,9131 "spec/lib/gitlab/database/postgresql_database_tasks/load_schema_versions_mixin_spec.rb": 0.259207497000034,9132 "spec/graphql/types/permission_types/merge_request_spec.rb": 0.26414989699992475,9133 "spec/lib/gitlab/quick_actions/dsl_spec.rb": 0.262235327000098559134}9135Knapsack global time execution for tests: 18m 41s9136Pending: (Failures listed here are expected and do not affect your suite's status)9137 1) Pages::DeploymentUploader behaves like builds correct paths #upload_path behaves like matches the method pattern 9138 # No pattern provided, skipping.9139 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89140 2) Pages::DeploymentUploader behaves like builds correct paths #relative_path is relative9141 # Path not set, skipping.9142 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:409143 3) Pages::DeploymentUploader behaves like builds correct paths .absolute_path behaves like matches the method pattern 9144 # No pattern provided, skipping.9145 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89146 4) Pages::DeploymentUploader behaves like builds correct paths .base_dir behaves like matches the method pattern 9147 # No pattern provided, skipping.9148 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89149 5) Pages::DeploymentUploader when object store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 9150 # No pattern provided, skipping.9151 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89152 6) Pages::DeploymentUploader when object store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 9153 # No pattern provided, skipping.9154 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89155 7) Pages::DeploymentUploader when object store is REMOTE behaves like builds correct paths #upload_path behaves like matches the method pattern 9156 # No pattern provided, skipping.9157 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89158 8) Pages::DeploymentUploader when object store is REMOTE behaves like builds correct paths #relative_path is relative9159 # Path not set, skipping.9160 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:409161 9) Pages::DeploymentUploader when object store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 9162 # No pattern provided, skipping.9163 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89164 10) Pages::DeploymentUploader when object store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 9165 # No pattern provided, skipping.9166 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89167 11) Database::BatchedBackgroundMigration::CiExecutionWorker behaves like batched background migrations execution worker #perform_work when the feature flag is enabled when the provided database is sharing config does nothing9168 # Skipping because none of the extra databases [:ci] are setup9169 # ./spec/support/shared_examples/workers/batched_background_migration_execution_worker_shared_example.rb:1139170 12) MigrationsHelpers#active_record_base ci database configured returns the CI base model9171 # Skipping because none of the extra databases [:ci] are setup9172 # ./spec/support_specs/helpers/migrations_helpers_spec.rb:269173 13) MigrationsHelpers#table ci database configured create a class based on the CI base model9174 # Skipping because none of the extra databases [:ci] are setup9175 # ./spec/support_specs/helpers/migrations_helpers_spec.rb:579176Failures:9177 1) Groups::GroupLinks::CreateService#execute when user has proper membership to share a group when sharing outside the hierarchy is disabled when group is inside hierarchy behaves like shareable adds group to another group9178 Failure/Error: expect(result[:status]).to eq(:success)9179 expected: :success9180 got: :error9181 (compared using ==)9182 Diff:9183 @@ -1 +1 @@9184 -:success9185 +:error9186 Shared Example Group: "shareable" called from ./spec/services/groups/group_links/create_service_spec.rb:679187 # ./spec/services/groups/group_links/create_service_spec.rb:39:in `block (4 levels) in <top (required)>'9188 # ./spec/services/groups/group_links/create_service_spec.rb:36:in `block (3 levels) in <top (required)>'9189 # ./spec/spec_helper.rb:415:in `block (3 levels) in <top (required)>'9190 # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'9191 # ./spec/spec_helper.rb:406:in `block (2 levels) in <top (required)>'9192 # ./spec/spec_helper.rb:402:in `block (3 levels) in <top (required)>'9193 # ./lib/gitlab/application_context.rb:61:in `with_raw_context'9194 # ./spec/spec_helper.rb:402:in `block (2 levels) in <top (required)>'9195 # ./spec/spec_helper.rb:243:in `block (2 levels) in <top (required)>'9196 # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'9197 # ./spec/support/fast_quarantine.rb:23:in `block (2 levels) in <top (required)>'9198 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (3 levels) in <top (required)>'9199 # ./spec/support/database/prevent_cross_joins.rb:62:in `with_cross_joins_prevented'9200 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (2 levels) in <top (required)>'9201Finished in 18 minutes 44 seconds (files took 52.5 seconds to load)92025091 examples, 1 failure, 13 pending9203Failed examples:9204rspec './spec/services/groups/group_links/create_service_spec.rb[1:1:2:2:1:1]' # Groups::GroupLinks::CreateService#execute when user has proper membership to share a group when sharing outside the hierarchy is disabled when group is inside hierarchy behaves like shareable adds group to another group9205Randomized with seed 71589206[TEST PROF INFO] Time spent in factories: 09:30.703 (50.42% of total time)9207Stopped processing SimpleCov as a previous error not related to SimpleCov has been detected9208RSpec exited with 1.9209RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_rspec_unit_pg13_single-db_23_28_report.txt9210Retrying the failing examples in a new RSpec process...9211$ gem install junit_merge --no-document --version 0.1.29212Successfully installed nokogiri-1.15.2-x86_64-linux9213Successfully installed junit_merge-0.1.292142 gems installed9215==> 'gem install junit_merge --no-document --version 0.1.2' succeeded in 1 seconds.9216Running RSpec command: bin/rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format Support::Formatters::JsonFormatter --out rspec/rspec-retry-4400964299.json --format RspecJunitFormatter --out rspec/rspec-retry-4400964299.xml --only-failures --pattern "spec/{bin,channels,components,config,contracts,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,lib,metrics_server,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,sidekiq_cluster,spam,support_specs,tasks,uploaders,validators,views,workers,tooling}{,/**/}*_spec.rb"9217warning: parser/current is loading parser/ruby30, which recognizes 3.0.5-compliant syntax, but you are running 3.0.6.9219Run options: include {:last_run_status=>"failed"}9220Test environment set up in 0.428624157 seconds9221Groups::GroupLinks::CreateService#execute9222 when user has proper membership to share a group9223 when sharing outside the hierarchy is disabled9224 when group is inside hierarchy9225 behaves like shareable9226 adds group to another group9227Finished in 3.82 seconds (files took 56.3 seconds to load)92281 example, 0 failures9229[TEST PROF INFO] Time spent in factories: 00:01.193 (19.18% of total time)9230Loading rspec/rspec-4400964299.json...9231Merged rspec/rspec-retry-4400964299.json adding 4 results.9232Saved rspec/rspec-4400964299.json.9233A test was flaky and succeeded after being retried. Checking to see if flaky test is part of this MR...9234Flaky test was not part of this MR.9236Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy9238Uploading artifacts...9239coverage/: found 4 matching artifact files and directories 9240crystalball/: found 2 matching artifact files and directories 9241deprecations/: found 5 matching artifact files and directories 9242knapsack/: found 4 matching artifact files and directories 9243WARNING: query_recorder/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 9244rspec/: found 19 matching artifact files and directories 9245WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 9246log/*.log: found 21 matching artifact files and directories 9247WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4400964299/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com9248WARNING: Retrying... context=artifacts-uploader error=request redirected9249Uploading artifacts as "archive" to coordinator... 201 Created id=4400964299 responseStatus=201 Created token=64_4zYZj9250Uploading artifacts...9251rspec/rspec-*.xml: found 2 matching artifact files and directories 9252WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4400964299/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com9253WARNING: Retrying... context=artifacts-uploader error=request redirected9254Uploading artifacts as "junit" to coordinator... 201 Created id=4400964299 responseStatus=201 Created token=64_4zYZj9256Job succeeded