rspec unit pg12 4/22
Passed Started
by
@splattael
Peter Leitzen
1 is expected to have many source_pipelines2 is expected to have many prometheus_alert_events3 is expected to have many self_managed_prometheus_alert_events4 is expected to have many alert_management_alerts5 is expected to have many alert_management_http_integrations6 is expected to have many jira_imports7 is expected to have many metrics_users_starred_dashboards inverse_of => project8 is expected to have many repository_storage_moves9 is expected to have many reviews inverse_of => project10 is expected to have many packages class_name => Packages::Package11 is expected to have many package_files class_name => Packages::PackageFile12 is expected to have many debian_distributions class_name => Packages::Debian::ProjectDistribution dependent => destroy13 is expected to have one packages_cleanup_policy class_name => Packages::Cleanup::Policy inverse_of => project14 is expected to have many pipeline_artifacts dependent => restrict_with_error15 is expected to have many terraform_states class_name => Terraform::State inverse_of => project16 is expected to have many timelogs17 is expected to have many error_tracking_client_keys class_name => ErrorTracking::ClientKey18 is expected to have many pending_builds class_name => Ci::PendingBuild19 is expected to have many ci_feature_usages class_name => Projects::CiFeatureUsage20 is expected to have many bulk_import_exports class_name => BulkImports::Export21 is expected to have many job_artifacts dependent => restrict_with_error22 is expected to have many build_trace_chunks through builds dependent => restrict_with_error23 is expected to have many secure_files class_name => Ci::SecureFile dependent => restrict_with_error24 is expected to have one build_artifacts_size_refresh class_name => Projects::BuildArtifactsSizeRefresh25 is expected to have many pages_domains26 is expected to have one pages_metadatum27 is expected to have many pages_deployments28 has an inverse relationship with merge requests29 has a distinct has_many :lfs_objects relation through lfs_objects_projects30 behaves like model with repository31 container class includes HasRepository32 #commits_by33 retrieves several commits from the repository by oid34 #web_url35 when given the only_path option36 when only_path is false37 returns the full web URL for this repo38 when only_path is true39 returns the relative web URL for this repo40 when only_path is nil41 returns the full web URL for this repo42 when not given the only_path option43 returns the full web URL for this repo44 #url_to_repo45 returns the SSH URL to the repository46 #ssh_url_to_repo47 returns the SSH URL to the repository48 #http_url_to_repo49 returns the HTTP URL to the repository50 #repository51 returns valid repo52 uses the same container53 #storage54 returns valid storage55 #full_path56 returns valid full_path57 #lfs_enabled?58 returns the expected value59 #empty_repo?60 when the repo does not exist61 returns true62 when the repo exists63 returns the empty state of the repository64 #valid_repo?65 is expected to equal false66 is expected to equal true67 #repository_exists?68 is expected to equal false69 is expected to equal true70 #repo_exists?71 is expected to equal false72 is expected to equal true73 #root_ref74 is expected to equal true75 is expected to equal false76 is expected to equal false77 Respond to78 is expected to respond to #base_dir79 is expected to respond to #disk_path80 is expected to respond to #gitlab_shell81 #change_head82 delegates #change_head to repository83 #after_repository_change_head84 calls #reload_default_branch85 behaves like model with wiki86 #create_wiki87 returns true if the wiki repository already exists88 returns true if the wiki repository was created89 when the repository cannot be created90 returns false and adds a validation error91 #wiki_repository_exists?92 returns true when the wiki repository exists93 returns false when the wiki repository does not exist94 wiki path conflict95 when the new path has been used by the wiki of other Project96 has an error on the name attribute97 when the new wiki path has been used by the path of other Project98 has an error on the name attribute99 when the new path has been used by the wiki of other Group100 has an error on the name attribute101 when the new wiki path has been used by the path of other Group102 has an error on the name attribute103 behaves like can move repository storage104 #set_repository_read_only!105 makes the repository read-only106 raises an error if the project is already read-only107 raises an error when there is an existing git transfer in progress108 skip_git_transfer_check is true109 makes the project read-only when git transfers are in progress110 #set_repository_writable!111 sets repository_read_only to false112 #reference_counter113 returns a Gitlab::ReferenceCounter object114 after initialized115 has a project_feature116 when deleting project117 also deletes the associated ProjectNamespace118 when project has object storage attached to it119 when associated object storage object is not deleted before the project120 adds an error to project121 when associated object storage object is deleted before the project122 deletes the project123 when creating a new project124 automatically creates a CI/CD settings row125 automatically creates a container expiration policy row126 does not create another container expiration policy if there is already one127 automatically creates a Pages metadata row128 automatically builds a project setting row129 with project namespaces130 behaves like creates project namespace131 automatically creates a project namespace132 updating a project133 when project has an associated project namespace134 project is INVALID when trying to remove project namespace135 when same project is being updated in 2 instances136 syncs only changed attributes137 updating cd_cd_settings138 does not raise an error139 #members & #requesters140 behaves like members and requesters associations141 #members_and_requesters142 includes members and requesters143 #members144 includes members and exclude requesters145 #requesters146 does not include requesters147 ci_pipelines association148 returns only pipelines from ci_sources149 modules150 is expected to includes the Gitlab::ConfigHelper module151 is expected to includes the Gitlab::ShellAdapter module152 is expected to includes the Gitlab::VisibilityLevel module153 is expected to includes the Referable module154 is expected to includes the Sortable module155 validation156 is expected to validate that :name cannot be empty/falsy157 is expected to validate that :name is case-sensitively unique within the scope of :namespace_id158 is expected to validate that the length of :name is at most 255159 is expected not to allow :path to be ‹"colon:in:path"›160 is expected to validate that :path cannot be empty/falsy161 is expected to validate that the length of :path is at most 255162 is expected to validate that the length of :description is at most 2000163 is expected to validate that the length of :ci_config_path is at most 255164 is expected to allow :ci_config_path to be ‹""›165 is expected not to allow :ci_config_path to be ‹"test/../foo"›166 is expected not to allow :ci_config_path to be ‹"/test/foo"›167 is expected to validate that :creator cannot be empty/falsy168 is expected to validate that :namespace cannot be empty/falsy169 is expected to validate that :repository_storage cannot be empty/falsy170 is expected to validate that :max_artifacts_size looks like an integer greater than 0171 is expected to validate that the length of :suggestion_commit_message is at most 255172 validates build timeout constraints173 does not allow new projects beyond user limits174 validates the visibility175 validates presence of project_feature176 validates project namespace creation177 does not create project namespace if project is not created178 repository storages inclusion179 does not allow repository storages that don't match a label in the configuration180 import_url181 does not allow an invalid URI as import_url182 does allow a SSH URI as import_url for persisted projects183 does not allow a SSH URI as import_url for new projects184 does allow a valid URI as import_url185 allows an empty URI186 does not produce import data on an empty URI187 does not produce import data on an invalid URI188 does not allow import_url pointing to localhost189 does not allow import_url pointing to the local network190 does not allow import_url with invalid ports for new projects191 does not allow import_url with invalid ports for persisted projects192 does not allow import_url with invalid user193 does not allow URLs with unencoded CR or LF characters194 allow URLs with CR or LF characters195 project pending deletion196 contains errors related to the project being deleted197 path validation198 allows paths reserved on the root namespace199 rejects paths reserved on another level200 rejects nested paths201 allows a reserved group name202 rejects a path ending in '.'203 rejects a path starting with '.'204 rejects a path ending in '-'205 rejects a path starting with '-'206 rejects a path ending in '_'207 rejects a path starting with '_'208 path is unchanged209 does not raise validation error for path for existing project210 behaves like a BulkUsersByEmailLoad model211 #users_by_emails212 when nothing is loaded213 preforms the yielded query and supplies the data with only emails desired214 when store is preloaded215 passes back loaded data and does not update the items that already exist216 #all_pipelines217 has all pipelines218 when builds are disabled219 returns .external pipelines220 #has_packages?221 with maven packages222 behaves like returning true examples223 is expected to equal true224 with npm packages225 behaves like returning true examples226 is expected to equal true227 with conan packages228 behaves like returning true examples229 is expected to equal true230 with no package type231 behaves like returning false examples232 is expected to equal false233 #ci_pipelines234 excludes dangling pipelines such as :webide235 when builds are disabled236 returns .external pipelines237 #personal_namespace_holder?238 project: personal_project, user: namespace_user, result: true239 is expected to eq true240 project: personal_project, user: admin_user, result: false241 is expected to eq false242 project: personal_project, user: another_user, result: false243 is expected to eq false244 project: personal_project, user: nil, result: false245 is expected to eq false246 project: group_project, user: namespace_user, result: false247 is expected to eq false248 project: group_project, user: group_owner_user, result: false249 is expected to eq false250 project: group_project, user: another_user, result: false251 is expected to eq false252 project: group_project, user: nil, result: false253 is expected to eq false254 project: group_project, user: nil, result: false255 is expected to eq false256 project: group_project, user: admin_user, result: false257 is expected to eq false258 #default_pipeline_lock259 keep_latest_artifact_enabled: false, result_pipeline_locked: :unlocked260 is expected to eq :unlocked261 keep_latest_artifact_enabled: true, result_pipeline_locked: :artifacts_locked262 is expected to eq :artifacts_locked263 #membership_locked?264 returns false265 #autoclose_referenced_issues266 when DB entry is nil267 returns true268 when DB entry is true269 returns true270 when DB entry is false271 returns false272 project token273 sets an random token if none provided274 does not set an random token if one provided275 Respond to276 is expected to respond to #url_to_repo277 is expected to respond to #execute_hooks278 is expected to respond to #owner279 is expected to respond to #path_with_namespace280 is expected to respond to #full_path281 delegation282 is expected to delegate #add_guest to the #team object283 is expected to delegate #add_reporter to the #team object284 is expected to delegate #add_developer to the #team object285 is expected to delegate #add_maintainer to the #team object286 is expected to delegate #add_user to the #team object287 is expected to delegate #add_users to the #team object288 is expected to delegate #team_members to the #team object as #members289 is expected to delegate #owner_name to the #owner object as #name, allowing #owner to return nil290 is expected to delegate #root_ancestor to the #namespace object, allowing #namespace to return nil291 is expected to delegate #certificate_based_clusters_enabled? to the #namespace object, allowing #namespace to return nil292 is expected to delegate #last_pipeline to the #commit object, allowing #commit to return nil293 is expected to delegate #container_registry_enabled? to the #project_feature object294 is expected to delegate #container_registry_access_level to the #project_feature object295 read project settings296 is expected to delegate #show_default_award_emojis to the #project_setting object, allowing #project_setting to return nil297 is expected to delegate #show_default_award_emojis? to the #project_setting object, allowing #project_setting to return nil298 is expected to delegate #warn_about_potentially_unwanted_characters to the #project_setting object, allowing #project_setting to return nil299 is expected to delegate #warn_about_potentially_unwanted_characters? to the #project_setting object, allowing #project_setting to return nil300 is expected to delegate #enforce_auth_checks_on_uploads to the #project_setting object, allowing #project_setting to return nil301 is expected to delegate #enforce_auth_checks_on_uploads? to the #project_setting object, allowing #project_setting to return nil302 write project settings303 is expected to delegate #show_default_award_emojis= to the #project_setting object passing arguments [:args], allowing #project_setting to return nil304 is expected to delegate #warn_about_potentially_unwanted_characters= to the #project_setting object passing arguments [:args], allowing #project_setting to return nil305 is expected to delegate #enforce_auth_checks_on_uploads= to the #project_setting object passing arguments [:args], allowing #project_setting to return nil306 when ci_cd_settings is destroyed but project is not307 allows methods delegated to ci_cd_settings to be nil308 #ci_forward_deployment_enabled?309 behaves like a ci_cd_settings predicate method310 when ci_cd_settings is nil311 returns false312 when ci_cd_settings is not nil313 delegated_method_return: true, subject_return: true314 returns the expected boolean value315 delegated_method_return: false, subject_return: false316 returns the expected boolean value317 #ci_job_token_scope_enabled?318 behaves like a ci_cd_settings predicate method319 when ci_cd_settings is nil320 returns false321 when ci_cd_settings is not nil322 delegated_method_return: true, subject_return: true323 returns the expected boolean value324 delegated_method_return: false, subject_return: false325 returns the expected boolean value326 #restrict_user_defined_variables?327 behaves like a ci_cd_settings predicate method328 when ci_cd_settings is nil329 returns false330 when ci_cd_settings is not nil331 delegated_method_return: true, subject_return: true332 returns the expected boolean value333 delegated_method_return: false, subject_return: false334 returns the expected boolean value335 #keep_latest_artifacts_available?336 behaves like a ci_cd_settings predicate method337 when ci_cd_settings is nil338 returns false339 when ci_cd_settings is not nil340 delegated_method_return: true, subject_return: true341 returns the expected boolean value342 delegated_method_return: false, subject_return: false343 returns the expected boolean value344 #keep_latest_artifact?345 behaves like a ci_cd_settings predicate method346 when ci_cd_settings is nil347 returns false348 when ci_cd_settings is not nil349 delegated_method_return: true, subject_return: true350 returns the expected boolean value351 delegated_method_return: false, subject_return: false352 returns the expected boolean value353 #group_runners_enabled?354 behaves like a ci_cd_settings predicate method355 when ci_cd_settings is nil356 returns false357 when ci_cd_settings is not nil358 delegated_method_return: true, subject_return: true359 returns the expected boolean value360 delegated_method_return: false, subject_return: false361 returns the expected boolean value362 #remove_project_authorizations363 removes the project authorizations of the specified users in the current project364 #merge_commit_template_or_default365 returns default merge commit template366 when merge commit template is set and not nil367 returns current value368 #merge_commit_template_or_default=369 sets template to nil when set to default value370 sets template to nil when set to default value but with CRLF line endings371 allows changing template372 allows setting template to nil373 #squash_commit_template_or_default374 returns default squash commit template375 when squash commit template is set and not nil376 returns current value377 #squash_commit_template_or_default=378 sets template to nil when set to default value379 allows changing template380 allows setting template to nil381 reference methods382 #to_reference383 returns the path with reference_postfix384 returns the path with reference_postfix when arg is self385 returns the full_path with reference_postfix when full386 returns the full_path with reference_postfix when cross-project387 #to_reference_base388 when nil argument389 returns nil390 when full is true391 returns complete path to the project392 when same project argument393 returns nil394 when cross namespace project argument395 returns complete path to the project396 when same namespace / cross-project argument397 returns path to the project398 when different namespace / cross-project argument with same owner399 returns full path to the project400 when argument is a namespace401 with same project path402 returns path to the project403 with different project path404 returns full path to the project405 when argument is a user406 returns full path to the project407 #to_human_reference408 when nil argument409 returns nil410 when same project argument411 returns nil412 when cross namespace project argument413 returns complete name with namespace of the project414 when same namespace / cross-project argument415 returns name of the project416 #merge_method417 ff: true, rebase: true, method: :ff418 is expected to eq :ff419 ff: true, rebase: false, method: :ff420 is expected to eq :ff421 ff: false, rebase: true, method: :rebase_merge422 is expected to eq :rebase_merge423 ff: false, rebase: false, method: :merge424 is expected to eq :merge425 #readme_url426 with a non-existing repository427 returns nil428 with an existing repository429 when no README exists430 returns nil431 when a README exists432 returns the README433 #new_issuable_address434 incoming email enabled435 returns the address to create a new issue436 returns the address to create a new merge request437 returns nil with invalid address type438 incoming email disabled439 returns nil440 returns nil441 last_activity methods442 last_activity443 alias last_activity to last_event444 last_activity_date445 returns the project's last update date446 #get_issue447 with default issues tracker448 returns an issue449 returns count of open issues450 returns nil when no issue found451 returns nil when user doesn't have access452 with external issues tracker453 when internal issues are enabled454 returns interlan issue455 returns an ExternalIssue when internal issue does not exists456 when internal issues are disabled457 returns always an External issues458 returns an ExternalIssue when internal issue does not exists459 #open_issues_count460 provides the issue count461 invokes the count service with current_user462 invokes the batch count service with no current_user463 #open_merge_requests_count464 provides the merge request count465 #issue_exists?466 is truthy when issue exists467 is falsey when issue does not exist468 #to_param469 with namespace470 is expected to eq "gitlabhq"471 with invalid path472 returns previous path to keep project suitable for use in URLs when persisted473 returns current path when new record474 #default_issues_tracker?475 is true if used internal tracker476 is false if used other tracker477 #has_wiki?478 returns true if project is wiki enabled or has external wiki479 #first_owner480 the project does not have a group481 is the namespace owner482 the project is in a group483 is the group owner484 #external_issue_tracker485 sets Project#has_external_issue_tracker when it is nil486 returns nil and does not query services when there is no external issue tracker487 retrieves external_issue_tracker querying services and cache it when there is external issue tracker488 #has_external_issue_tracker489 is false when external issue tracker integration is not active490 is false when other integration is active491 when there is an active external issue tracker integration492 is expected to eq true493 becomes false when external issue tracker integration is destroyed494 becomes false when external issue tracker integration becomes inactive495 when there are two active external issue tracker integrations496 does not become false when external issue tracker integration is destroyed497 does not become false when external issue tracker integration becomes inactive498 #external_wiki499 returns an active external wiki500 does not return an inactive external wiki501 sets Project#has_external_wiki when it is nil502 #has_external_wiki503 is expected to eq false504 when there is an active external wiki integration505 is expected to eq true506 becomes false if the external wiki integration is destroyed507 becomes false if the external wiki integration becomes inactive508 when created as inactive509 is false510 #star_count511 counts stars from multiple users512 counts stars on the right project513 #avatar_type514 is true if avatar is image515 is false if avatar is html page516 #avatar_url517 when avatar file is uploaded518 shows correct url519 when avatar file in git520 is expected to eq "http://localhost/namespace1/project176/-/avatar"521 when git repo is empty522 is expected to eq nil523 #builds_enabled524 is expected to be truthy525 .sort_by_attribute526 reorders the input relation by start count desc527 reorders the input relation by last activity desc528 reorders the input relation by last activity asc529 .with_shared_runners530 when shared runners are enabled for project531 returns a project532 when shared runners are disabled for project533 returns an empty array534 .with_remote_mirrors535 when some remote mirrors are enabled for the project536 returns a project537 when some remote mirrors exists but disabled for the project538 returns a project539 when no remote mirrors exist for the project540 returns an empty list541 .with_jira_dvcs_cloud542 returns the correct project543 .with_jira_dvcs_server544 returns the correct project545 .cached_count546 returns total project count547 .trending548 sorts projects by the amount of notes in descending order549 does not take system notes into account550 .starred_by551 returns only projects starred by the given user552 .with_limit553 limits the number of projects returned554 .visible_to_user555 when a user has access to a project556 is expected to eq [#<Project id:152 namespace1/project201>>]557 when a user does not have access to any projects558 is expected to eq []559 .with_integration560 returns the correct projects561 .with_active_integration562 returns the correct projects563 .include_integration564 avoids n + 1565 .service_desk_enabled566 returns the correct project567 #service_desk_enabled?568 is enabled569 #service_desk_address570 when service_desk_email is disabled571 behaves like with incoming email address572 when incoming email is enabled573 uses project full path as service desk address key574 when incoming email is disabled575 uses project full path as service desk address key576 when service_desk_email is enabled577 when project_key is set578 returns custom address including the project_key579 when project_key is not set580 returns custom address including the project full path581 .with_service_desk_key582 returns projects with given key583 returns empty if there is no project with the key584 .find_by_url585 url is internal586 path is recognised as a project path587 is expected to eq #<Project id:169 namespace1/project219>>588 returns nil if the path detection throws an error589 path is not a project path590 is expected to be nil591 url is external592 is expected to be nil593 .without_integration594 returns projects without the integration595 repository storage by default596 picks storage from ApplicationSetting597 shared runners by default598 are enabled599 is expected to be truthy600 are disabled601 is expected to be falsey602 #any_online_runners?603 shared runners604 for shared runners disabled605 has no runners available606 has a specific runner607 has a shared runner, but they are prohibited to use608 checks the presence of specific runner609 returns false if match cannot be found610 returns false if runner is offline611 for shared runners enabled612 has a shared runner613 checks the presence of shared runner614 returns false if match cannot be found615 group runners616 for group runners disabled617 has no runners available618 has a group runner, but they are prohibited to use619 for group runners enabled620 has a group runner621 has an offline group runner622 checks the presence of group runner623 returns false if match cannot be found624 #shared_runners625 behaves like shared_runners626 when shared runners are enabled for project627 returns a list of shared runners628 when shared runners are disabled for project629 returns a empty list630 #available_shared_runners631 behaves like shared_runners632 when shared runners are enabled for project633 returns a list of shared runners634 when shared runners are disabled for project635 returns a empty list636 #visibility_level637 by default638 is expected to eq 0639 when set to INTERNAL in application settings640 is expected to eq 10641 attribute_name: :visibility, value: "public"642 sets the visibility level643 attribute_name: :visibility_level, value: 20644 sets the visibility level645 attribute_name: "visibility", value: "public"646 sets the visibility level647 attribute_name: "visibility_level", value: 20648 sets the visibility level649 #visibility_level_allowed?650 when checking on non-forked project651 is expected to be truthy652 is expected to be truthy653 is expected to be truthy654 when checking on forked project655 is expected to be truthy656 is expected to be truthy657 is expected to be falsey658 #pages_show_onboarding?659 if there is no metadata660 is expected to be truthy661 if onboarding is complete662 is expected to be falsey663 if there is metadata, but onboarding is not complete664 is expected to be truthy665 will return false if pages is deployed even if onboarding_complete is false666 is expected to be falsey667 #pages_deployed?668 if pages are deployed669 is expected to be truthy670 if public folder doesn't exist671 is expected to be falsey672 #default_branch_protected?673 default_branch_protection_level: 0, result: false674 is expected to eq false675 default_branch_protection_level: 1, result: false676 is expected to eq false677 default_branch_protection_level: 3, result: true678 is expected to eq true679 default_branch_protection_level: 2, result: true680 is expected to eq true681 #pages_url682 group page683 is expected to eq "http://group.example.com"684 mixed case path685 is expected to eq "http://group.example.com"686 project page687 is expected to eq "http://group.example.com/project"688 mixed case path689 is expected to eq "http://group.example.com/Project"690 #pages_group_url691 group page692 is expected to eq "http://group.example.com:1234"693 project page694 is expected to eq "http://group.example.com:1234"695 .search696 returns projects with a matching name697 returns projects with a partially matching name698 returns projects with a matching name regardless of the casing699 returns projects with a matching description700 returns projects with a partially matching description701 returns projects with a matching description regardless of the casing702 returns projects with a matching path703 returns projects with a partially matching path704 returns projects with a matching path regardless of the casing705 when include_namespace is true706 returns projects that match the group path707 returns projects that match the full path708 with pending_delete project709 shows pending deletion project710 .optionally_search711 searches for projects matching the query if one is given712 returns the current relation if no search query is given713 .eager_load_namespace_and_owner714 eager loads the namespace and namespace owner715 #expire_caches_before_rename716 expires the caches of the repository and wiki717 .search_by_title718 returns projects with a matching name719 returns projects with a partially matching name720 returns projects with a matching name regardless of the casing721 when checking projects from groups722 when group is private project can not be internal723 is expected to be falsey724 when group is internal project can not be public725 is expected to be falsey726 #track_project_repository727 with projects on legacy storage728 behaves like tracks storage location729 when a project repository entry does not exist730 creates a new entry731 tracks the project storage location732 when a tracking entry exists733 does not create a new entry in the database734 updates the project storage location735 with projects on hashed storage736 behaves like tracks storage location737 when a project repository entry does not exist738 creates a new entry739 tracks the project storage location740 when a tracking entry exists741 does not create a new entry in the database742 updates the project storage location743 #create_repository744 using a regular repository745 creates the repository746 adds an error if the repository could not be created747 using a forked repository748 does nothing749 #ensure_repository750 creates the repository if it not exist751 does not create the repository if it exists752 creates the repository if it is a fork753 handling import URL754 returns the sanitized URL755 saves the url credentials percent decoded756 saves url with no credentials757 #container_registry_url758 for enabled registry759 is expected not to be nil760 for disabled registry761 is expected to be nil762 #container_repositories_size763 on gitlab.com764 no_container_repositories: true, all_migrated: nil, gitlab_api_supported: nil, returned_size: nil, expected_result: 0765 is expected to eq 0766 no_container_repositories: false, all_migrated: false, gitlab_api_supported: nil, returned_size: nil, expected_result: nil767 is expected to eq nil768 no_container_repositories: false, all_migrated: true, gitlab_api_supported: false, returned_size: nil, expected_result: nil769 is expected to eq nil770 no_container_repositories: false, all_migrated: true, gitlab_api_supported: true, returned_size: 555, expected_result: 555771 is expected to eq 555772 no_container_repositories: false, all_migrated: true, gitlab_api_supported: true, returned_size: nil, expected_result: nil773 is expected to eq nil774 not on gitlab.com775 is expected to eq nil776 #container_registry_enabled=777 updates project_feature778 #container_registry_enabled779 delegates to project_feature780 #has_container_registry_tags?781 when container registry is enabled782 when tags are present for multi-level registries783 has image tags784 when tags are present for root repository785 has image tags786 when there are no tags at all787 does not have image tags788 when container registry is disabled789 does not have image tags790 does not check root repository tags791 iterates through container repositories792 #ci_config_path=793 default_ci_config_path: nil, project_ci_config_path: :notset, expected_ci_config_path: :default794 returns the correct path795 default_ci_config_path: nil, project_ci_config_path: nil, expected_ci_config_path: :default796 returns the correct path797 default_ci_config_path: nil, project_ci_config_path: "", expected_ci_config_path: :default798 returns the correct path799 default_ci_config_path: nil, project_ci_config_path: "cust\u0000om/\u0000/path", expected_ci_config_path: "custom//path"800 returns the correct path801 default_ci_config_path: "", project_ci_config_path: :notset, expected_ci_config_path: :default802 returns the correct path803 default_ci_config_path: "", project_ci_config_path: nil, expected_ci_config_path: :default804 returns the correct path805 default_ci_config_path: "", project_ci_config_path: "", expected_ci_config_path: :default806 returns the correct path807 default_ci_config_path: "", project_ci_config_path: "cust\u0000om/\u0000/path", expected_ci_config_path: "custom//path"808 returns the correct path809 default_ci_config_path: "global/path", project_ci_config_path: :notset, expected_ci_config_path: "global/path"810 returns the correct path811 default_ci_config_path: "global/path", project_ci_config_path: nil, expected_ci_config_path: :default812 returns the correct path813 default_ci_config_path: "global/path", project_ci_config_path: "", expected_ci_config_path: :default814 returns the correct path815 default_ci_config_path: "global/path", project_ci_config_path: "cust\u0000om/\u0000/path", expected_ci_config_path: "custom//path"816 returns the correct path817 #uses_default_ci_config?818 has a custom ci config path819 has a blank ci config path820 does not have a custom ci config path821 #uses_external_project_ci_config?822 when ci_config_path is configured with external project823 is expected to eq true824 when ci_config_path is nil825 is expected to eq false826 when ci_config_path is configured with a file in the project827 is expected to eq false828 when ci_config_path is configured with remote file829 is expected to eq false830 #latest_successful_build_for_ref831 behaves like latest successful build for sha or ref832 with many builds833 gives the latest builds from latest pipeline834 with succeeded pipeline835 standalone pipeline836 returns builds for ref for default_branch837 with nonexistent build838 returns empty relation if the build cannot be found839 with some pending pipeline840 gives the latest build from latest pipeline841 with pending pipeline842 returns empty relation843 with build belonging to a child pipeline844 returns the child build845 with a specified ref846 is expected to eq #<Ci::Build status: "pending", finished_at: "2022-06-29 08:53:29.000000000 +0000", trace: nil, create...r_resource_at: nil, processed: false, scheduling_type: "stage", id: 14, stage_id: 13, tag_list: nil>847 #latest_pipeline848 default repository branch849 when explicitly provided850 is expected to eq #<Ci::Pipeline id: 14, ref: "master", sha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", before_sha: ni..._sha: nil, target_sha: nil, external_pull_request_id: nil, ci_ref_id: 6, locked: "artifacts_locked">851 when not provided852 is expected to eq #<Ci::Pipeline id: 17, ref: "master", sha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", before_sha: ni..._sha: nil, target_sha: nil, external_pull_request_id: nil, ci_ref_id: 8, locked: "artifacts_locked">853 with provided sha854 is expected to eq #<Ci::Pipeline id: 22, ref: "master", sha: "1b12f15a11fc6e62177bef08f47bc7b5ce50b141", before_sha: ni...sha: nil, target_sha: nil, external_pull_request_id: nil, ci_ref_id: 10, locked: "artifacts_locked">855 provided ref856 is expected to eq #<Ci::Pipeline id: 24, ref: "add-ipython-files", sha: "4963fefc990451a8ad34289ce266b757456fc88c", bef...sha: nil, target_sha: nil, external_pull_request_id: nil, ci_ref_id: 13, locked: "artifacts_locked">857 with provided sha858 is expected to eq #<Ci::Pipeline id: 29, ref: "add-ipython-files", sha: "4963fefc990451a8ad34289ce266b757456fc88c", bef...sha: nil, target_sha: nil, external_pull_request_id: nil, ci_ref_id: 15, locked: "artifacts_locked">859 bad ref860 is expected to be nil861 on deleted ref862 always returns nil despite a pipeline exists863 #latest_successful_build_for_sha864 behaves like latest successful build for sha or ref865 with many builds866 gives the latest builds from latest pipeline867 with succeeded pipeline868 standalone pipeline869 returns builds for ref for default_branch870 with nonexistent build871 returns empty relation if the build cannot be found872 with some pending pipeline873 gives the latest build from latest pipeline874 with pending pipeline875 returns empty relation876 with build belonging to a child pipeline877 returns the child build878 #latest_successful_build_for_ref!879 with many builds880 gives the latest builds from latest pipeline881 with succeeded pipeline882 standalone pipeline883 returns builds for ref for default_branch884 returns exception if the build cannot be found885 with some pending pipeline886 gives the latest build from latest pipeline887 with pending pipeline888 returns empty relation889 #import_status890 with import_state891 returns the right status892 without import_state893 returns none894 #jira_import_status895 when no jira imports896 returns none897 when there are jira imports898 when latest import status is initial or jira imports are mising899 returns initial900 when latest import status is scheduled901 returns scheduled902 #human_import_status_name903 with import_state904 returns the right human import status905 without import_state906 returns none907 #add_import_job908 forked909 schedules a RepositoryForkWorker job910 without repository911 schedules RepositoryImportWorker912 not forked913 schedules a RepositoryImportWorker job914 jira import915 schedules a jira import job916 #jira_import?917 is expected to equal true918 is expected to equal true919 #github_import?920 is expected to equal true921 #github_enterprise_import?922 is expected to equal true923 is expected to equal false924 is expected to equal true925 is expected to equal true926 #remove_import_data927 when jira import928 does remove import data929 when neither a mirror nor a jira import930 removes import data931 #gitlab_project_import?932 is expected to equal true933 #gitea_import?934 is expected to equal true935 #has_remote_mirror?936 returns true when a remote mirror is enabled937 returns false when remote mirror is disabled938 #update_remote_mirrors939 syncs enabled remote mirror940 does nothing when remote mirror is disabled globally and not overridden941 does not sync disabled remote mirrors942 #remote_mirror_available?943 when remote mirror global setting is enabled944 returns true945 when remote mirror global setting is disabled946 returns true when overridden947 returns false when not overridden948 #mark_primary_write_location949 marks the location with project ID950 #mark_stuck_remote_mirrors_as_failed!951 fails stuck remote mirrors952 #ancestors953 with linear_project_ancestors feature flag enabled954 group ancestory955 behaves like project with group ancestors956 returns all ancestors957 behaves like project with ordered group ancestors958 returns ancestors ordered by descending hierarchy959 namespace ancestry960 is expected to be empty961 with linear_project_ancestors feature flag disabled962 group ancestory963 behaves like project with group ancestors964 returns all ancestors965 behaves like project with ordered group ancestors966 returns ancestors ordered by descending hierarchy967 namespace ancestry968 is expected to be empty969 #ancestors_upto970 group ancestry971DEPRECATION WARNING: Passing an Active Record object to `quote` directly is deprecated972and will be no longer quoted as id value in Rails 6.2.973 (called from block in write_using_load_balancer at /builds/gitlab-org/gitlab/lib/gitlab/database/load_balancing/connection_proxy.rb:120)974 includes ancestors upto but excluding the given ancestor975 behaves like project with group ancestors976 returns all ancestors977 behaves like project with ordered group ancestors978 returns ancestors ordered by descending hierarchy979 with hierarchy_order980DEPRECATION WARNING: Passing an Active Record object to `quote` directly is deprecated981and will be no longer quoted as id value in Rails 6.2.982 (called from block in write_using_load_balancer at /builds/gitlab-org/gitlab/lib/gitlab/database/load_balancing/connection_proxy.rb:120)983 can be used with upto option984 namespace ancestry985 is expected to be empty986 #root_ancestor987 is expected to eq #<Namespaces::UserNamespace id: 1, name: "Sidney Jones2", path: "namespace1", owner_id: 1, created_at...runners_enabled: true, allow_descendants_override_disabled_shared_runners: false, traversal_ids: []>988 in a group989 is expected to eq #<Group id:387 @group55>990 in a nested group991 is expected to eq #<Group id:390 @group56>992 #emails_disabled?993 emails disabled in group994 returns true995 emails enabled in group996 returns false997 returns true998 #lfs_enabled?999 LFS disabled in group1000 behaves like project overrides group1001 returns true when enabled in project1002 returns false when disabled in project1003 returns the value from the namespace, when no value is set in project1004 LFS enabled in group1005 behaves like project overrides group1006 returns true when enabled in project1007 returns false when disabled in project1008 returns the value from the namespace, when no value is set in project1009 LFS disabled globally1010 when no values are set1011 behaves like it always returns false1012 is expected to be falsey1013 when all values are set to true1014 behaves like it always returns false1015 is expected to be falsey1016 #after_repository_change_head1017 updates commit count1018 reloads the default branch1019 #after_change_head_branch_does_not_exist1020 adds an error to container if branch does not exist1021 #lfs_objects_for_repository_types1022 returns LFS objects of the specified type only1023 forks1024 #fork_network1025 includes a fork of the project1026 includes a fork of a fork1027 includes sibling forks1028 includes the base project1029 #in_fork_network_of?1030 is true for a real fork1031 is true for a fork of a fork1032 is true for sibling forks1033 is false when another project is given1034 #fork_source1035 returns the direct source if it exists1036 returns the root of the fork network when the directs source was deleted1037 returns nil if it is the root of the fork network1038 #forks1039 includes direct forks of the project1040 #lfs_object_oids_from_fork_source1041 when fork has one of two LFS objects1042 returns OIDs of owned LFS objects1043 returns empty when project is not a fork1044 behaves like can housekeep repository1045 with a clean redis state1046 #pushes_since_gc1047 without any pushes1048 returns 01049 with a number of pushes1050 returns the number of pushes1051 #increment_pushes_since_gc1052 increments the number of pushes since the last GC1053 #reset_pushes_since_gc1054 resets the number of pushes since the last GC1055 #pushes_since_gc_redis_shared_state_key1056 returns the proper redis key format1057 #git_garbage_collect_worker_klass1058 defines a git gargabe collect worker1059 #deployment_variables1060 when the deployment platform is stubbed1061 when project has a deployment platform1062 is expected to eq ["platform", "variables"]1063 when project has no deployment platform1064 is expected to eq []1065 when project has a deployment platforms1066 when environment name is review/name1067 returns variables from this service1068 when environment name is other1069 returns variables from this service1070 #default_environment1071 returns production environment when it exists1072 returns first environment when no production environment exists1073 returns nil when no available environment exists1074 #ci_variables_for1075 memoizes the result by ref and environment1076 when the ref is not protected1077 contains only the CI variables1078 when the ref is a protected branch1079 behaves like ref is protected1080 contains all the variables1081 when the ref is a protected tag1082 behaves like ref is protected1083 contains all the variables1084 when environment name is specified1085 when environment scope is exactly matched1086 is expected to contain exactly #<Ci::Variable id: 10, key: [FILTERED], value: nil, encrypted_value: "U4QR89+OH5B+f3o/q9uuMQ==\n", en...tected: false, environment_scope: "review/name", masked: false, variable_type: "env_var", raw: true>1087 when environment scope is matched by wildcard1088 is expected to contain exactly #<Ci::Variable id: 12, key: [FILTERED], value: nil, encrypted_value: "MVc0ckCko13/CBlACfiSEw==\n", en...protected: false, environment_scope: "review/*", masked: false, variable_type: "env_var", raw: true>1089 when environment scope does not match1090 is expected not to contain exactly #<Ci::Variable id: 14, key: [FILTERED], value: nil, encrypted_value: "gn/ZDTE3wmSzBD2gxd5Wxg==\n", en...d: false, environment_scope: "review/*/special", masked: false, variable_type: "env_var", raw: true>1091 when environment scope has _1092 does not treat it as wildcard1093 when environment name contains underscore1094 matches literally for _1095 when environment scope has %1096 does not treat it as wildcard1097 when environment name contains a percent1098 matches literally for _1099 when variables with the same name have different environment scopes1100 puts variables matching environment scope more in the end1101 #any_lfs_file_locks?1102 returns false when there are no LFS file locks1103 returns a cached true when there are LFS file locks1104 #protected_for?1105 when ref is nil1106 returns false1107 when ref is ref name1108 when ref is ambiguous1109 raises an error1110 when the ref is not protected1111 behaves like ref is not protected1112 returns false1113 when the ref is a protected branch1114 behaves like ref is protected branch1115 returns true1116 when the ref is a protected tag1117 behaves like ref is protected tag1118 returns true1119 when ref does not exist1120 returns false1121 when ref is full ref1122 when the ref is not protected1123 behaves like ref is not protected1124 returns false1125 when the ref is a protected branch1126 behaves like ref is protected branch1127 returns true1128 when the ref is a protected tag1129 behaves like ref is protected tag1130 returns true1131 when branch ref name is a full tag ref1132 when ref is not protected1133 returns false1134 when ref is a protected branch1135 returns true1136 when ref does not exist1137 returns false1138 #update_project_statistics1139 is called after creation1140 copies the namespace_id1141 updates the namespace_id when changed1142 inside_path1143 returns correct project1144 #route_map_for1145 when there is a .gitlab/route-map.yml at the commit1146 when the route map is valid1147 returns a route map1148 when the route map is invalid1149 returns nil1150 when there is no .gitlab/route-map.yml at the commit1151 returns nil1152 #public_path_for_source_path1153 when there is a route map1154 returns a public path with a leading slash unmodified1155 when the source path is mapped1156 returns the public path1157 when the source path is not mapped1158 returns nil1159 when there is no route map1160 returns nil1161 #parent1162 is expected to eq #<Namespaces::UserNamespace id: 1, name: "Sidney Jones2", path: "namespace1", owner_id: 1, created_at...runners_enabled: true, allow_descendants_override_disabled_shared_runners: false, traversal_ids: []>1163 #parent_id1164 is expected to eq 11165 #parent_changed?1166 is expected to be truthy1167 #default_merge_request_target1168 when mr_default_target_self is set to true1169 returns the current project1170 when merge request can not target upstream1171 returns the current project1172 when merge request can target upstream1173 returns the source project1174 #mr_can_target_upstream?1175 when forked from a more visible project1176 can not target the upstream project1177 when forked from a project with disabled merge requests1178 can not target the upstream project1179 when forked from a project with enabled merge requests1180 can target the upstream project1181 when not forked1182 can not target the upstream project1183 #pages_url1184 top-level group1185 group page1186 is expected to eq "http://group.example.com"1187 project page1188 is expected to eq "http://group.example.com/project"1189 nested group1190 group page1191 is expected to eq "http://group.example.com/group86/group.example.com"1192 project page1193 is expected to eq "http://group.example.com/group87/project"1194 #lfs_http_url_to_repo1195 when a custom HTTP clone URL root is not set1196 returns the url to the repo without a username1197 when a custom HTTP clone URL root is set1198 returns the url to the repo, with the root replaced with the custom one1199 #pipeline_status1200 builds a pipeline status1201 hase a loaded pipeline status1202 #update1203 validates the visibility1204 does not validate the visibility1205 #last_repository_updated_at1206 sets to created_at upon creation1207 .public_or_visible_to_user1208 with a user1209 includes projects the user has access to1210 includes projects the user can see1211 without a user1212 only includes public projects1213 min_access_level1214 excludes projects when user does not have required minimum access level1215 with deploy token users1216 deploy token user without project1217 is expected to eq []1218 deploy token user with project1219 is expected to include #<Project id:375 namespace1/project484>>1220 .ids_with_issuables_available_for1221 returns project ids with milestones available for user1222 .with_feature_available_for_user1223 with user1224 behaves like feature disabled1225 does not return projects with the project feature disabled1226 behaves like feature public1227 returns projects with the project feature public1228 behaves like feature enabled1229 returns projects with the project feature enabled1230 behaves like feature access level is nil1231 returns projects with the project feature access level nil1232 when feature is private1233 when user does not have access to the feature1234 does not return projects with the project feature private1235 when user has access to the feature1236 returns projects with the project feature private1237 user is an admin1238 behaves like feature disabled1239 does not return projects with the project feature disabled1240 behaves like feature public1241 returns projects with the project feature public1242 behaves like feature enabled1243 returns projects with the project feature enabled1244 behaves like feature access level is nil1245 returns projects with the project feature access level nil1246 when feature is private1247 when admin mode is enabled1248 returns projects with the project feature private1249 when admin mode is disabled1250 does not return projects with the project feature private1251 without user1252 behaves like feature disabled1253 does not return projects with the project feature disabled1254 behaves like feature public1255 returns projects with the project feature public1256 behaves like feature enabled1257 returns projects with the project feature enabled1258 behaves like feature access level is nil1259 returns projects with the project feature access level nil1260 when feature is private1261 does not return projects with the project feature private1262 .filter_by_feature_visibility1263 with reporter level access1264 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11265 behaves like filter respects visibility1266 respects visibility1267 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11268 behaves like filter respects visibility1269 respects visibility1270 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11271 behaves like filter respects visibility1272 respects visibility1273 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11274 behaves like filter respects visibility1275 respects visibility1276 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11277 behaves like filter respects visibility1278 respects visibility1279 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 11280 behaves like filter respects visibility1281 respects visibility1282 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11283 behaves like filter respects visibility1284 respects visibility1285 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01286 behaves like filter respects visibility1287 respects visibility1288 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11289 behaves like filter respects visibility1290 respects visibility1291 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 01292 behaves like filter respects visibility1293 respects visibility1294 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01295 behaves like filter respects visibility1296 respects visibility1297 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01298 behaves like filter respects visibility1299 respects visibility1300 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01301 behaves like filter respects visibility1302 respects visibility1303 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01304 behaves like filter respects visibility1305 respects visibility1306 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01307 behaves like filter respects visibility1308 respects visibility1309 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01310 behaves like filter respects visibility1311 respects visibility1312 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11313 behaves like filter respects visibility1314 respects visibility1315 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11316 behaves like filter respects visibility1317 respects visibility1318 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11319 behaves like filter respects visibility1320 respects visibility1321 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11322 behaves like filter respects visibility1323 respects visibility1324 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11325 behaves like filter respects visibility1326 respects visibility1327 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 01328 behaves like filter respects visibility1329 respects visibility1330 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11331 behaves like filter respects visibility1332 respects visibility1333 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01334 behaves like filter respects visibility1335 respects visibility1336 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11337 behaves like filter respects visibility1338 respects visibility1339 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 01340 behaves like filter respects visibility1341 respects visibility1342 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01343 behaves like filter respects visibility1344 respects visibility1345 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01346 behaves like filter respects visibility1347 respects visibility1348 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01349 behaves like filter respects visibility1350 respects visibility1351 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01352 behaves like filter respects visibility1353 respects visibility1354 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01355 behaves like filter respects visibility1356 respects visibility1357 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01358 behaves like filter respects visibility1359 respects visibility1360 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11361 behaves like filter respects visibility1362 respects visibility1363 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01364 behaves like filter respects visibility1365 respects visibility1366 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11367 behaves like filter respects visibility1368 respects visibility1369 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 01370 behaves like filter respects visibility1371 respects visibility1372 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01373 behaves like filter respects visibility1374 respects visibility1375 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01376 behaves like filter respects visibility1377 respects visibility1378 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01379 behaves like filter respects visibility1380 respects visibility1381 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01382 behaves like filter respects visibility1383 respects visibility1384 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01385 behaves like filter respects visibility1386 respects visibility1387 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01388 behaves like filter respects visibility1389 respects visibility1390 with feature issues1391 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11392 behaves like filter respects visibility1393 respects visibility1394 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11395 behaves like filter respects visibility1396 respects visibility1397 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11398 behaves like filter respects visibility1399 respects visibility1400 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11401 behaves like filter respects visibility1402 respects visibility1403 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11404 behaves like filter respects visibility1405 respects visibility1406 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 11407 behaves like filter respects visibility1408 respects visibility1409 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11410 behaves like filter respects visibility1411 respects visibility1412 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01413 behaves like filter respects visibility1414 respects visibility1415 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11416 behaves like filter respects visibility1417 respects visibility1418 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11419 behaves like filter respects visibility1420 respects visibility1421 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01422 behaves like filter respects visibility1423 respects visibility1424 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01425 behaves like filter respects visibility1426 respects visibility1427 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01428 behaves like filter respects visibility1429 respects visibility1430 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01431 behaves like filter respects visibility1432 respects visibility1433 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01434 behaves like filter respects visibility1435 respects visibility1436 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01437 behaves like filter respects visibility1438 respects visibility1439 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11440 behaves like filter respects visibility1441 respects visibility1442 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11443 behaves like filter respects visibility1444 respects visibility1445 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11446 behaves like filter respects visibility1447 respects visibility1448 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11449 behaves like filter respects visibility1450 respects visibility1451 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11452 behaves like filter respects visibility1453 respects visibility1454 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 01455 behaves like filter respects visibility1456 respects visibility1457 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11458 behaves like filter respects visibility1459 respects visibility1460 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01461 behaves like filter respects visibility1462 respects visibility1463 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11464 behaves like filter respects visibility1465 respects visibility1466 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11467 behaves like filter respects visibility1468 respects visibility1469 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01470 behaves like filter respects visibility1471 respects visibility1472 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01473 behaves like filter respects visibility1474 respects visibility1475 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01476 behaves like filter respects visibility1477 respects visibility1478 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01479 behaves like filter respects visibility1480 respects visibility1481 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01482 behaves like filter respects visibility1483 respects visibility1484 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01485 behaves like filter respects visibility1486 respects visibility1487 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11488 behaves like filter respects visibility1489 respects visibility1490 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01491 behaves like filter respects visibility1492 respects visibility1493 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11494 behaves like filter respects visibility1495 respects visibility1496 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11497 behaves like filter respects visibility1498 respects visibility1499 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01500 behaves like filter respects visibility1501 respects visibility1502 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01503 behaves like filter respects visibility1504 respects visibility1505 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01506 behaves like filter respects visibility1507 respects visibility1508 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01509 behaves like filter respects visibility1510 respects visibility1511 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01512 behaves like filter respects visibility1513 respects visibility1514 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01515 behaves like filter respects visibility1516 respects visibility1517 with feature wiki1518 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11519 behaves like filter respects visibility1520 respects visibility1521 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11522 behaves like filter respects visibility1523 respects visibility1524 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11525 behaves like filter respects visibility1526 respects visibility1527 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11528 behaves like filter respects visibility1529 respects visibility1530 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11531 behaves like filter respects visibility1532 respects visibility1533 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 11534 behaves like filter respects visibility1535 respects visibility1536 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11537 behaves like filter respects visibility1538 respects visibility1539 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01540 behaves like filter respects visibility1541 respects visibility1542 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11543 behaves like filter respects visibility1544 respects visibility1545 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11546 behaves like filter respects visibility1547 respects visibility1548 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01549 behaves like filter respects visibility1550 respects visibility1551 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01552 behaves like filter respects visibility1553 respects visibility1554 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01555 behaves like filter respects visibility1556 respects visibility1557 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01558 behaves like filter respects visibility1559 respects visibility1560 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01561 behaves like filter respects visibility1562 respects visibility1563 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01564 behaves like filter respects visibility1565 respects visibility1566 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11567 behaves like filter respects visibility1568 respects visibility1569 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11570 behaves like filter respects visibility1571 respects visibility1572 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11573 behaves like filter respects visibility1574 respects visibility1575 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11576 behaves like filter respects visibility1577 respects visibility1578 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11579 behaves like filter respects visibility1580 respects visibility1581 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 01582 behaves like filter respects visibility1583 respects visibility1584 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11585 behaves like filter respects visibility1586 respects visibility1587 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01588 behaves like filter respects visibility1589 respects visibility1590 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11591 behaves like filter respects visibility1592 respects visibility1593 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11594 behaves like filter respects visibility1595 respects visibility1596 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01597 behaves like filter respects visibility1598 respects visibility1599 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01600 behaves like filter respects visibility1601 respects visibility1602 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01603 behaves like filter respects visibility1604 respects visibility1605 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01606 behaves like filter respects visibility1607 respects visibility1608 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01609 behaves like filter respects visibility1610 respects visibility1611 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01612 behaves like filter respects visibility1613 respects visibility1614 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11615 behaves like filter respects visibility1616 respects visibility1617 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01618 behaves like filter respects visibility1619 respects visibility1620 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11621 behaves like filter respects visibility1622 respects visibility1623 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11624 behaves like filter respects visibility1625 respects visibility1626 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01627 behaves like filter respects visibility1628 respects visibility1629 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01630 behaves like filter respects visibility1631 respects visibility1632 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01633 behaves like filter respects visibility1634 respects visibility1635 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01636 behaves like filter respects visibility1637 respects visibility1638 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01639 behaves like filter respects visibility1640 respects visibility1641 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01642 behaves like filter respects visibility1643 respects visibility1644 with feature code1645 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11646 behaves like filter respects visibility1647 respects visibility1648 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11649 behaves like filter respects visibility1650 respects visibility1651 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11652 behaves like filter respects visibility1653 respects visibility1654 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11655 behaves like filter respects visibility1656 respects visibility1657 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11658 behaves like filter respects visibility1659 respects visibility1660 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 11661 behaves like filter respects visibility1662 respects visibility1663 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11664 behaves like filter respects visibility1665 respects visibility1666 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01667 behaves like filter respects visibility1668 respects visibility1669 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11670 behaves like filter respects visibility1671 respects visibility1672 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11673 behaves like filter respects visibility1674 respects visibility1675 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01676 behaves like filter respects visibility1677 respects visibility1678 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01679 behaves like filter respects visibility1680 respects visibility1681 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01682 behaves like filter respects visibility1683 respects visibility1684 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01685 behaves like filter respects visibility1686 respects visibility1687 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01688 behaves like filter respects visibility1689 respects visibility1690 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01691 behaves like filter respects visibility1692 respects visibility1693 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11694 behaves like filter respects visibility1695 respects visibility1696 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11697 behaves like filter respects visibility1698 respects visibility1699 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11700 behaves like filter respects visibility1701 respects visibility1702 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11703 behaves like filter respects visibility1704 respects visibility1705 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11706 behaves like filter respects visibility1707 respects visibility1708 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 01709 behaves like filter respects visibility1710 respects visibility1711 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11712 behaves like filter respects visibility1713 respects visibility1714 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01715 behaves like filter respects visibility1716 respects visibility1717 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11718 behaves like filter respects visibility1719 respects visibility1720 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11721 behaves like filter respects visibility1722 respects visibility1723 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01724 behaves like filter respects visibility1725 respects visibility1726 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01727 behaves like filter respects visibility1728 respects visibility1729 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01730 behaves like filter respects visibility1731 respects visibility1732 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01733 behaves like filter respects visibility1734 respects visibility1735 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01736 behaves like filter respects visibility1737 respects visibility1738 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01739 behaves like filter respects visibility1740 respects visibility1741 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11742 behaves like filter respects visibility1743 respects visibility1744 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01745 behaves like filter respects visibility1746 respects visibility1747 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11748 behaves like filter respects visibility1749 respects visibility1750 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 01751 behaves like filter respects visibility1752 respects visibility1753 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01754 behaves like filter respects visibility1755 respects visibility1756 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01757 behaves like filter respects visibility1758 respects visibility1759 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01760 behaves like filter respects visibility1761 respects visibility1762 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01763 behaves like filter respects visibility1764 respects visibility1765 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01766 behaves like filter respects visibility1767 respects visibility1768 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01769 behaves like filter respects visibility1770 respects visibility1771 .wrap_with_cte1772 wrapped query matches original1773 #pages_available?1774 when the project is in a top level namespace1775 is expected to equal true1776 when the project is in a subgroup1777 is expected to equal true1778 #remove_private_deploy_keys1779 for a private deploy key1780 when the key is not linked to another project1781 removes the key1782 when the key is linked to another project1783 does not remove the key1784 for a public deploy key1785 does not remove the key1786 #remove_export1787/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil1788 removes the export1789 with export1790 #export_file_exists? returns true1791 #export_archive_exists? returns false1792 #forks_count1793 returns the number of forks1794 #git_transfer_in_progress?1795 project_reference_counter: 0, wiki_reference_counter: 0, design_reference_counter: 0, result: false1796 is expected to equal false1797 project_reference_counter: 2, wiki_reference_counter: 0, design_reference_counter: 0, result: true1798 is expected to equal true1799 project_reference_counter: 0, wiki_reference_counter: 2, design_reference_counter: 0, result: true1800 is expected to equal true1801 project_reference_counter: 0, wiki_reference_counter: 0, design_reference_counter: 2, result: true1802 is expected to equal true1803 legacy storage1804 #base_dir1805 returns base_dir based on namespace only1806 #disk_path1807 returns disk_path based on namespace and project path1808 #legacy_storage?1809 returns true when storage_version is nil1810 returns true when the storage_version is 01811 #hashed_storage?1812 returns false1813 #pages_path1814 returns a path where pages are stored1815 #migrate_to_hashed_storage!1816 returns true1817 does not run validation1818 schedules HashedStorage::ProjectMigrateWorker with delayed start when the project repo is in use1819 schedules HashedStorage::ProjectMigrateWorker with delayed start when the wiki repo is in use1820 schedules HashedStorage::ProjectMigrateWorker1821 #rollback_to_legacy_storage!1822 returns nil1823 does not run validations1824 hashed storage1825 #legacy_storage?1826 returns false1827 #hashed_storage?1828 returns true if rolled out1829 returns false when not rolled out yet1830 #base_dir1831 returns base_dir based on hash of project id1832 #disk_path1833 returns disk_path based on hash of project id1834 #pages_path1835 returns a path where pages are stored1836 #migrate_to_hashed_storage!1837 returns nil1838 does not flag as read-only1839 when partially migrated1840 enqueues a job1841 #rollback_to_legacy_storage!1842 returns true1843 does not run validations1844 does not flag as read-only1845 enqueues a job1846 #has_ci?1847 when has .gitlab-ci.yml1848 CI is available1849 when there is no .gitlab-ci.yml1850 CI is available1851 when auto devops is disabled1852 CI is not available1853 #predefined_project_variables1854 is expected to include nil1855 when ci config path is overridden1856 is expected to include nil1857 #dependency_proxy_variables1858 when dependency_proxy is enabled1859 contains the downcased name1860 when dependency_proxy is disabled1861 is expected to be empty1862 #auto_devops_enabled?1863 when explicitly enabled1864 is expected to be truthy1865 when explicitly disabled1866 is expected to be falsey1867 when enabled in settings1868 is expected to be truthy1869 when disabled in settings1870 is expected to be falsey1871 when explicitly enabled1872 is expected to be truthy1873 when explicitly disabled1874 is expected to be falsey1875 when force_autodevops_on_by_default is enabled for the project1876 is expected to be truthy1877 with group parents1878 when enabled on parent1879 when auto devops instance enabled1880 is expected to be truthy1881 when auto devops instance disabled1882 is expected to be truthy1883 when disabled on parent1884 when auto devops instance enabled1885 is expected to be falsy1886 when auto devops instance disabled1887 is expected to be falsy1888 when enabled on root parent1889 when auto devops instance enabled1890 is expected to be truthy1891 when auto devops instance disabled1892 is expected to be truthy1893 when explicitly disabled on parent1894 is expected to be falsy1895 when disabled on root parent1896 when auto devops instance enabled1897 is expected to be falsy1898 when auto devops instance disabled1899 is expected to be falsy1900 when explicitly disabled on parent1901 is expected to be falsy1902 #has_auto_devops_implicitly_enabled?1903 when disabled in settings1904 does not have auto devops implicitly disabled1905 when enabled in settings1906 auto devops is implicitly disabled1907 when explicitly disabled1908 does not have auto devops implicitly disabled1909 when explicitly enabled1910 does not have auto devops implicitly disabled1911 when enabled on group1912 has auto devops implicitly enabled1913 when enabled on parent group1914 has auto devops implicitly enabled1915 #has_auto_devops_implicitly_disabled?1916 when explicitly disabled1917 does not have auto devops implicitly disabled1918 when explicitly enabled1919 does not have auto devops implicitly disabled1920 when enabled in settings1921 does not have auto devops implicitly disabled1922 when disabled in settings1923 auto devops is implicitly disabled1924 when force_autodevops_on_by_default is enabled for the project1925 does not have auto devops implicitly disabled1926 when disabled on group1927 has auto devops implicitly disabled1928 when disabled on parent group1929 has auto devops implicitly disabled1930 #api_variables1931 exposes API v4 URL1932 contains a URL variable for every supported API version1933 #latest_successful_builds_for1934 without a ref1935 returns a pipeline for the default branch1936 with the ref set to the default branch1937 returns a pipeline for the default branch1938 with a ref that is not the default branch1939 returns the latest successful pipeline for the given ref1940 #check_repository_path_availability1941 when the repository already exists1942 returns false when repository already exists1943 when the repository does not exist1944 returns false when repository already exists1945 skips gitlab-shell exists?1946 #latest_successful_pipeline_for_default_branch1947 memoizes and returns the latest successful pipeline for the default branch1948 #after_import1949 runs the correct hooks1950 project authorizations refresh1951 updates user authorizations1952 branch protection1953 does not protect when branch protection is disabled1954 gives developer access to push when branch protection is set to 'developers can push'1955 gives developer access to merge when branch protection is set to 'developers can merge'1956 protects default branch1957 project target platforms detection1958 calls enqueue_record_project_target_platforms1959 #update_project_counter_caches1960 updates all project counter caches1961 #set_full_path1962 writes full path in .git/config when key is missing1963 updates full path in .git/config when key is present1964 does not raise an error with an empty repository1965 #default_branch1966 with default_branch_name1967 instance_branch: "", root_group_branch: nil, project_group_branch: nil, project_branch: nil1968 is expected to eq nil1969 instance_branch: nil, root_group_branch: nil, project_group_branch: nil, project_branch: nil1970 is expected to eq nil1971 instance_branch: "main", root_group_branch: nil, project_group_branch: nil, project_branch: "main"1972 is expected to eq "main"1973 instance_branch: "main", root_group_branch: "root_branch", project_group_branch: nil, project_branch: "root_branch"1974 is expected to eq "root_branch"1975 instance_branch: "main", root_group_branch: "root_branch", project_group_branch: "group_branch", project_branch: "group_branch"1976 is expected to eq "group_branch"1977 #to_ability_name1978 returns project1979 #execute_hooks1980 executes active projects hooks with the specified scope1981 does not execute project hooks that dont match the specified scope1982 does not execute project hooks which are not active1983 executes the system hooks with the specified scope1984 executes the system hooks when inside a transaction1985 #execute_integrations1986 executes integrations with the specified scope1987 does not execute integration that don't match the specified scope1988 #has_active_hooks?1989 is expected to be falsey1990 returns true when a matching push hook exists1991 returns true when a matching system hook exists1992 returns true when a plugin exists1993 #has_active_integrations?1994 is expected to be falsey1995 returns true when a matching service exists1996 #badges1997 returns the project and the project group badges1998 with nested_groups1999 returns the project and the project nested groups badges2000 with cross internal project merge requests2001 does not endlessly loop for internal projects with MRs to each other2002 #branch_allows_collaboration?2003 when there are open merge requests that have their source/target branches point to each other2004 when user is a developer2005 behaves like successful check2006 does not go into an infinite loop2007 when user is a reporter2008 behaves like successful check2009 does not go into an infinite loop2010 when user is a guest2011 behaves like successful check2012 does not go into an infinite loop2013 with cross project merge requests2014 #merge_requests_allowing_push_to_user2015 returns open merge requests for which the user has developer access to the target project2016 does not include closed merge requests2017 does not include merge requests for guest users2018 does not include the merge request for other users2019 is empty when no user is passed2020 #any_branch_allows_collaboration?2021 allows access when there are merge requests open allowing collaboration2022 does not allow access when there are no merge requests open allowing collaboration2023 #branch_allows_collaboration?2024 allows access if the user can merge the merge request2025 does not allow guest users access2026 does not allow access to branches for which the merge request was closed2027 does not allow access if the user cannot merge the merge request2028 when the requeststore is active2029 only queries per project across instances2030 #external_authorization_classification_label2031 falls back to the default when none is configured2032 returns the classification label if it was configured on the project2033 #pages_https_only?2034 when HTTPS pages are disabled2035 is expected not to be pages https only2036 when HTTPS pages are enabled2037 is expected to be pages https only2038 #pages_https_only? validation2039 when no domains are associated2040 is expected to be valid2041 when domains including keys and certificates are associated2042 is expected to be valid2043 when domains including no keys or certificates are associated2044 is expected not to be valid2045 #toggle_ci_cd_settings!2046 toggles the value on #settings2047 #gitlab_deploy_token2048 when there is a gitlab deploy token associated2049 is expected to eq #<DeployToken id: 7, revoked: false, read_repository: true, read_registry: true, expires_at: "2022-07...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>2050 when there is no a gitlab deploy token associated2051 is expected to be nil2052 when there is a gitlab deploy token associated but is has been revoked2053 is expected to be nil2054 when there is a gitlab deploy token associated but it is expired2055 is expected to be nil2056 when there is a deploy token associated with a different name2057 is expected to be nil2058 when there is a deploy token associated to a different project2059 is expected to be nil2060 when the project group has a gitlab deploy token associated2061 is expected to eq #<DeployToken id: 12, revoked: false, read_repository: true, read_registry: true, expires_at: "2022-0...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>2062 when the FF ci_variable_for_group_gitlab_deploy_token is disabled2063 is expected to be nil2064 when the project and its group has a gitlab deploy token associated2065 is expected to eq #<DeployToken id: 14, revoked: false, read_repository: true, read_registry: true, expires_at: "2022-0...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>2066 when the FF ci_variable_for_group_gitlab_deploy_token is disabled2067 is expected to eq #<DeployToken id: 16, revoked: false, read_repository: true, read_registry: true, expires_at: "2022-0...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>2068 with uploads2069 behaves like model with uploads2070 .destroy2071 with mounted uploader2072 deletes remote uploads2073 with not mounted uploads2074 with local files2075 deletes any FileUploader uploads which are not mounted2076 deletes local files2077 with remote files2078 deletes any FileUploader uploads which are not mounted2079 deletes remote files2080 #members_among2081 when users is an Array2082 returns project members among the users2083 maintains input order2084 returns empty array if users is empty2085 when users is a relation2086 returns project members among the users2087 returns empty relation if users is empty2088 #find_or_initialize_integrations2089 avoids N+1 database queries2090 avoids N+1 database queries with more available integrations2091 with disabled integrations2092 returns only enabled integrations sorted2093 #find_or_initialize_integration2094 avoids N+1 database queries2095 returns nil if integration is disabled2096 returns nil if integration does not exist2097 with an existing integration2098 retrieves the integration2099 with an instance-level integration2100 builds the integration from the instance integration2101 without an existing integration or instance-level2102 builds the integration2103 .for_group2104 returns the projects for a given group2105 .for_group_and_its_ancestor_groups2106 returns projects for group and its ancestors2107 .deployments2108 when there is a deployment record with created status2109 does not return the record2110 when there is a deployment record with running status2111 does not return the record2112 when there is a deployment record with success status2113 returns the record2114 #snippets_visible?2115 returns true when a logged in user can read snippets2116 returns true when an anonymous user can read snippets2117 returns false when a user can not read snippets2118 #all_clusters2119 returns project level cluster2120 project belongs to a group2121 returns clusters for groups of this project2122 project is hosted on instance with integrated cluster2123 returns all available clusters for this project2124 #object_pool_params2125 when the objects cannot be pooled2126 is expected to be empty2127 when a pool is created2128 returns that pool repository2129 #git_objects_poolable?2130 when not using hashed storage2131 is expected not to be git objects poolable2132 when the project is private2133 is expected not to be git objects poolable2134 when the project is public2135 is expected to be git objects poolable2136 when the project is internal2137 is expected to be git objects poolable2138 when objects are poolable2139 is expected to be git objects poolable2140 #leave_pool_repository2141 removes the membership2142 #check_personal_projects_limit2143 when creating a project for a group2144 does nothing2145 when the user is not allowed to create a personal project2146 when the project limit is zero2147 adds a validation error2148 when the project limit is greater than zero2149 adds a validation error2150 when the user is allowed to create personal projects2151 does nothing2152 validation #changing_shared_runners_enabled_is_allowed2153 shared_runners_setting: :shared_runners_enabled, project_shared_runners_enabled: true, valid_record: true2154 validates the configuration2155 shared_runners_setting: :shared_runners_enabled, project_shared_runners_enabled: false, valid_record: true2156 validates the configuration2157 shared_runners_setting: :disabled_with_override, project_shared_runners_enabled: true, valid_record: true2158 validates the configuration2159 shared_runners_setting: :disabled_with_override, project_shared_runners_enabled: false, valid_record: true2160 validates the configuration2161 shared_runners_setting: :disabled_and_unoverridable, project_shared_runners_enabled: true, valid_record: false2162 validates the configuration2163 shared_runners_setting: :disabled_and_unoverridable, project_shared_runners_enabled: false, valid_record: true2164 validates the configuration2165 #mark_pages_onboarding_complete2166 creates new record and sets onboarding_complete to true if none exists yet2167 overrides an existing setting2168 #mark_pages_as_deployed2169 works when artifacts_archive is missing2170 creates new record and sets deployed to true if none exists yet2171 updates the existing record and sets deployed to true and records artifact archive2172 #mark_pages_as_not_deployed2173 creates new record and sets deployed to false if none exists yet2174 updates the existing record and sets deployed to false and clears artifacts_archive2175 #update_pages_deployment!2176 creates new metadata record if none exists yet and sets deployment2177 updates the existing metadara record with deployment2178 #set_first_pages_deployment!2179 creates new metadata record if none exists yet and sets deployment2180 updates the existing metadara record with deployment2181 only updates metadata for this project2182 does nothing if metadata already references some deployment2183 marks project as not deployed if deployment is nil2184 #has_pool_repsitory?2185 returns false when it does not have a pool repository2186 returns true when it has a pool repository2187 #access_request_approvers_to_be_notified2188 for a personal project2189 behaves like returns active, non_invited, non_requested owners/maintainers of the project2190 is expected to contain exactly #<ProjectMember id: 638, access_level: 40, source_id: 550, source_type: "Project", user_id: 351, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1057> and #<ProjectMember id: 637, access_level: 50, source_id: 550, source_type: "Project", user_id: 1, notifi... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1057>2191 for a project in a group2192 returns a maximum of ten maintainers/owners of the project in recent_sign_in descending order2193 behaves like returns active, non_invited, non_requested owners/maintainers of the project2194 is expected to contain exactly #<ProjectMember id: 672, access_level: 40, source_id: 556, source_type: "Project", user_id: 370, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1071> and #<ProjectMember id: 649, access_level: 50, source_id: 556, source_type: "Project", user_id: 358, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1071>2195 #pages_lookup_path2196 returns instance of Pages::LookupPath2197 .with_pages_deployed2198 returns only projects that have pages deployed2199 .pages_metadata_not_migrated2200 returns only projects that have pages deployed2201 #pages_group_root?2202 returns returns true if pages_url is same as pages_group_url2203 returns returns false if pages_url is different than pages_group_url2204 #closest_setting2205 when setting is of non-boolean type2206 global_setting: 100, group_setting: 200, project_setting: 300, result: 3002207 behaves like fetching closest setting2208 returns closest non-nil value2209 global_setting: 100, group_setting: 200, project_setting: nil, result: 2002210 behaves like fetching closest setting2211 returns closest non-nil value2212 global_setting: 100, group_setting: nil, project_setting: nil, result: 1002213 behaves like fetching closest setting2214 returns closest non-nil value2215 global_setting: nil, group_setting: nil, project_setting: nil, result: nil2216 behaves like fetching closest setting2217 returns closest non-nil value2218 when setting is of boolean type2219 global_setting: true, group_setting: true, project_setting: false, result: false2220 behaves like fetching closest setting2221 returns closest non-nil value2222 global_setting: true, group_setting: false, project_setting: nil, result: false2223 behaves like fetching closest setting2224 returns closest non-nil value2225 global_setting: true, group_setting: nil, project_setting: nil, result: true2226 behaves like fetching closest setting2227 returns closest non-nil value2228 #drop_visibility_level!2229 when has a group2230 when the group `visibility_level` is more strict2231 sets `visibility_level` value from the group2232 when the group `visibility_level` is less strict2233 does not change the value of the `visibility_level` field2234 when `restricted_visibility_levels` of the GitLab instance exist2235 when `visibility_level` is included into `restricted_visibility_levels`2236 sets `visibility_level` value to `PRIVATE`2237 when `restricted_visibility_levels` does not include `visibility_level`2238 does not change the value of the `visibility_level` field2239 #jira_subscription_exists?2240 jira connect subscription exists2241 is expected to eq true2242 with integrations and chat names2243 removes chat names on removal2244 with_issues_or_mrs_available_for_user2245 returns correct projects2246 #limited_protected_branches2247 returns limited number of protected branches based on specified limit2248 #lfs_objects_oids2249 when project has associated LFS objects2250 returns OIDs of LFS objects2251 lfs_objects_projects associations are deleted along with project2252 lfs_objects associations are unchanged when the assicated project is removed2253 and there are specified oids2254 returns OIDs of LFS objects that match specified oids2255 when project has no associated LFS objects2256 returns empty array2257 #prometheus_integration_active?2258 when project has an activated prometheus integration2259 is expected to be truthy2260 when project has an inactive prometheus integration2261 the integration is marked as inactive2262 #self_monitoring?2263 when the project is instance self monitoring2264 is expected to equal true2265 when the project is not self monitoring2266 is expected to equal false2267 #add_export_job2268 when project storage_size does not exceed the application setting max_export_size2269 starts project export worker2270 when project storage_size exceeds the application setting max_export_size2271 raises Project::ExportLimitExceeded2272 when application setting max_export_size is not set2273 starts project export worker2274 #export_in_progress?2275 when project export is enqueued2276 is expected to equal false2277 when project export is in progress2278 is expected to equal true2279 when project export is completed2280 is expected to equal false2281 #export_status2282 when project export is enqueued2283 is expected to eq :queued2284 when project export is in progress2285 is expected to eq :started2286 when project export is completed2287 is expected to eq :finished2288 when project export is being regenerated2289 is expected to eq :regeneration_in_progress2290 #has_packages?2291 with maven packages2292 behaves like has_package2293 package of package_type exists2294 is expected to equal true2295 package of package_type does not exist2296 is expected to equal false2297 with npm packages2298 behaves like has_package2299 package of package_type exists2300 is expected to equal true2301 package of package_type does not exist2302 is expected to equal false2303 with conan packages2304 behaves like has_package2305 package of package_type exists2306 is expected to equal true2307 package of package_type does not exist2308 is expected to equal false2309 calling has_package? with nil2310 is expected to equal false2311 with Debian Distributions2312 behaves like model with Debian distributions2313 removes distribution files on removal2314 #environments_for_scope2315 retrieves all project environments when using the * wildcard2316 retrieves a specific project environment when using the name of that environment2317 #latest_jira_import2318 when no jira imports2319 returns nil2320 when single jira import2321 returns the jira import2322 when multiple jira imports2323 returns latest jira import by created_at2324 #packages_enabled2325 is expected to equal true2326 when packages_enabled is enabled2327 project_visibility: 0, expected_result: 102328 set package_registry_access_level to correct value2329 project_visibility: 10, expected_result: 202330 set package_registry_access_level to correct value2331 project_visibility: 20, expected_result: 302332 set package_registry_access_level to correct value2333 when packages_enabled is disabled2334 set package_registry_access_level to DISABLED2335 set package_registry_access_level to DISABLED2336 set package_registry_access_level to DISABLED2337 #related_group_ids2338 when associated with a namespace2339 only includes linked groups2340 when associated with a group2341 includes self, ancestors and linked groups2342 #package_already_taken?2343 within the package project2344 package_name: "@test/bar", package_version: "1.2.3", expected_result: false2345 is expected to eq false2346 package_name: "@test/bar", package_version: "5.5.5", expected_result: false2347 is expected to eq false2348 package_name: "@test/foo", package_version: "1.2.3", expected_result: false2349 is expected to eq false2350 package_name: "@test/foo", package_version: "5.5.5", expected_result: false2351 is expected to eq false2352 within a different project2353 package_name: "@test/bar", package_version: "1.2.3", expected_result: false2354 is expected to eq false2355 package_name: "@test/bar", package_version: "5.5.5", expected_result: false2356 is expected to eq false2357 package_name: "@test/foo", package_version: "1.2.3", expected_result: true2358 is expected to eq true2359 package_name: "@test/foo", package_version: "5.5.5", expected_result: false2360 is expected to eq false2361 for a different package type2362 returns false2363 with a pending_destruction package2364 package_name: "@test/bar", package_version: "1.2.3", expected_result: false2365 is expected to eq false2366 package_name: "@test/bar", package_version: "5.5.5", expected_result: false2367 is expected to eq false2368 package_name: "@test/foo", package_version: "1.2.3", expected_result: false2369 is expected to eq false2370 package_name: "@test/foo", package_version: "5.5.5", expected_result: false2371 is expected to eq false2372 #design_management_enabled?2373 lfs_enabled: false, hashed_storage_enabled: false, expectation: false2374 is expected to equal false2375 lfs_enabled: true, hashed_storage_enabled: false, expectation: false2376 is expected to equal false2377 lfs_enabled: false, hashed_storage_enabled: true, expectation: false2378 is expected to equal false2379 lfs_enabled: true, hashed_storage_enabled: true, expectation: true2380 is expected to equal true2381 #parent_loaded?2382 is false when the parent is not loaded2383 is true when the parent is loaded2384 #bots2385 is expected to contain exactly #<User id:395 @user384>2386 is expected not to include #<User id:396 @user385>2387 #metrics_setting2388 creates setting if it does not exist2389 #ci_config_external_project2390 is expected to eq #<Project id:636 namespace1/project788>>2391 #enabled_group_deploy_keys2392 when a project does not have a group2393 is expected to be empty2394 when a project has a parent group2395 and this group has a group deploy key enabled2396 is expected to contain exactly #<GroupDeployKey id: 1, user_id: 397, created_at: "2022-06-29 20:09:44.529455885 +0000", updated_at: ...1:41:6c:0e:a0:ea:9a:a9:74:67:11", fingerprint_sha256: "vQodG5/WrqoQIs6lc5mAbyCKQv1292BnSwjrCxojqyk">2397 and this group has parent group which also has a group deploy key enabled2398 returns both group deploy keys2399 and another group has a group deploy key enabled2400 does not return this group deploy key2401 #activity_path2402 returns the project activity_path2403 #default_branch_or_main2404 returns default branch2405 when default branch is nil2406 returns Gitlab::DefaultBranch.value2407 #increment_statistic_value2408 increments the value2409 when the project is scheduled for removal2410 does not increment the value2411 topics2412 topic_list returns correct string array2413 topics returns correct topic records2414 topic_list=2415 set topics if only the order is changed2416 does not persist topics before project is saved2417 does not update topics if project is not valid2418 does not add new topic if name is not unique (case insensitive)2419 topic_list: ["topicA", "topicB"], expected_result: ["topicA", "topicB"]2420 set topics2421 topic_list: ["topicB", "topicA"], expected_result: ["topicB", "topicA"]2422 set topics2423 topic_list: [" topicC ", " topicD "], expected_result: ["topicC", "topicD"]2424 set topics2425 topic_list: ["topicE", "topicF", "topicE"], expected_result: ["topicE", "topicF"]2426 set topics2427 topic_list: ["topicE ", "topicF", " topicE"], expected_result: ["topicE", "topicF"]2428 set topics2429 topic_list: "topicA, topicB", expected_result: ["topicA", "topicB"]2430 set topics2431 topic_list: "topicB, topicA", expected_result: ["topicB", "topicA"]2432 set topics2433 topic_list: " topicC , topicD ", expected_result: ["topicC", "topicD"]2434 set topics2435 topic_list: "topicE, topicF, topicE", expected_result: ["topicE", "topicF"]2436 set topics2437 topic_list: "topicE , topicF, topicE", expected_result: ["topicE", "topicF"]2438 set topics2439 public topics counter2440 initial_visibility: private, new_visibility: nil, new_topic_list: "t2, t3", expected_count_changes: [0, 0, 0]2441 increments or decrements counters of topics2442 initial_visibility: internal, new_visibility: nil, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2443 increments or decrements counters of topics2444 initial_visibility: public, new_visibility: nil, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2445 increments or decrements counters of topics2446 initial_visibility: private, new_visibility: public, new_topic_list: nil, expected_count_changes: [1, 1, 0]2447 increments or decrements counters of topics2448 initial_visibility: private, new_visibility: internal, new_topic_list: nil, expected_count_changes: [1, 1, 0]2449 increments or decrements counters of topics2450 initial_visibility: private, new_visibility: private, new_topic_list: nil, expected_count_changes: [0, 0, 0]2451 increments or decrements counters of topics2452 initial_visibility: internal, new_visibility: public, new_topic_list: nil, expected_count_changes: [0, 0, 0]2453 increments or decrements counters of topics2454 initial_visibility: internal, new_visibility: internal, new_topic_list: nil, expected_count_changes: [0, 0, 0]2455 increments or decrements counters of topics2456 initial_visibility: internal, new_visibility: private, new_topic_list: nil, expected_count_changes: [-1, -1, 0]2457 increments or decrements counters of topics2458 initial_visibility: public, new_visibility: public, new_topic_list: nil, expected_count_changes: [0, 0, 0]2459 increments or decrements counters of topics2460 initial_visibility: public, new_visibility: internal, new_topic_list: nil, expected_count_changes: [0, 0, 0]2461 increments or decrements counters of topics2462 initial_visibility: public, new_visibility: private, new_topic_list: nil, expected_count_changes: [-1, -1, 0]2463 increments or decrements counters of topics2464 initial_visibility: private, new_visibility: public, new_topic_list: "t2, t3", expected_count_changes: [0, 1, 1]2465 increments or decrements counters of topics2466 initial_visibility: private, new_visibility: internal, new_topic_list: "t2, t3", expected_count_changes: [0, 1, 1]2467 increments or decrements counters of topics2468 initial_visibility: private, new_visibility: private, new_topic_list: "t2, t3", expected_count_changes: [0, 0, 0]2469 increments or decrements counters of topics2470 initial_visibility: internal, new_visibility: public, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2471 increments or decrements counters of topics2472 initial_visibility: internal, new_visibility: internal, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2473 increments or decrements counters of topics2474 initial_visibility: internal, new_visibility: private, new_topic_list: "t2, t3", expected_count_changes: [-1, -1, 0]2475 increments or decrements counters of topics2476 initial_visibility: public, new_visibility: public, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2477 increments or decrements counters of topics2478 initial_visibility: public, new_visibility: internal, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2479 increments or decrements counters of topics2480 initial_visibility: public, new_visibility: private, new_topic_list: "t2, t3", expected_count_changes: [-1, -1, 0]2481 increments or decrements counters of topics2482 #all_runners2483 behaves like all_runners2484 when shared runners are enabled for project2485 returns a list with all runners2486 when shared runners are disabled for project2487 returns a list without shared runners2488 when group runners are enabled for project2489 returns a list with all runners2490 when group runners are disabled for project2491 returns a list without group runners2492 #all_available_runners2493 behaves like all_runners2494 when shared runners are enabled for project2495 returns a list with all runners2496 when shared runners are disabled for project2497 returns a list without shared runners2498 when group runners are enabled for project2499 returns a list with all runners2500 when group runners are disabled for project2501 returns a list without group runners2502 #enforced_runner_token_expiration_interval and #effective_runner_token_expiration_interval2503 when there is no interval2504 behaves like no enforced expiration interval2505 is expected to be nil2506 behaves like no effective expiration interval2507 is expected to be nil2508 when there is a project interval2509 behaves like no enforced expiration interval2510 is expected to be nil2511 behaves like effective expiration interval2512 is expected to eq 3 days2513 when there is a site-wide enforced shared interval2514 behaves like no enforced expiration interval2515 is expected to be nil2516 behaves like no effective expiration interval2517 is expected to be nil2518 when there is a site-wide enforced group interval2519 behaves like no enforced expiration interval2520 is expected to be nil2521 behaves like no effective expiration interval2522 is expected to be nil2523 when there is a site-wide enforced project interval2524 behaves like enforced expiration interval2525 is expected to eq 5 days2526 behaves like effective expiration interval2527 is expected to eq 5 days2528 when there is a group-enforced group interval2529 behaves like no enforced expiration interval2530 is expected to be nil2531 behaves like no effective expiration interval2532 is expected to be nil2533 when there is a group-enforced subgroup interval2534 behaves like no enforced expiration interval2535 is expected to be nil2536 behaves like no effective expiration interval2537 is expected to be nil2538 when there is an owner group-enforced project interval2539 behaves like enforced expiration interval2540 is expected to eq 4 days2541 behaves like effective expiration interval2542 is expected to eq 4 days2543 when there is a grandparent group-enforced interval2544 behaves like enforced expiration interval2545 is expected to eq 3 days2546 behaves like effective expiration interval2547 is expected to eq 3 days2548 when there is a parent group-enforced interval overridden by group-enforced interval2549 behaves like enforced expiration interval2550 is expected to eq 4 days2551 behaves like effective expiration interval2552 is expected to eq 4 days2553 when site-wide enforced interval overrides project interval2554 behaves like enforced expiration interval2555 is expected to eq 3 days2556 behaves like effective expiration interval2557 is expected to eq 3 days2558 when project interval overrides site-wide enforced interval2559 has human-readable expiration intervals2560 behaves like enforced expiration interval2561 is expected to eq 5 days2562 behaves like effective expiration interval2563 is expected to eq 4 days2564 when site-wide enforced interval overrides group-enforced interval2565 behaves like enforced expiration interval2566 is expected to eq 3 days2567 behaves like effective expiration interval2568 is expected to eq 3 days2569 when group-enforced interval overrides site-wide enforced interval2570 behaves like enforced expiration interval2571 is expected to eq 4 days2572 behaves like effective expiration interval2573 is expected to eq 4 days2574 when group-enforced interval overrides project interval2575 behaves like enforced expiration interval2576 is expected to eq 3 days2577 behaves like effective expiration interval2578 is expected to eq 3 days2579 when project interval overrides group-enforced interval2580 behaves like enforced expiration interval2581 is expected to eq 5 days2582 behaves like effective expiration interval2583 is expected to eq 4 days2584 when there is an enforced project interval in an unrelated group2585 behaves like no enforced expiration interval2586 is expected to be nil2587 behaves like no effective expiration interval2588 is expected to be nil2589 when there is an enforced project interval in a subgroup2590 behaves like no enforced expiration interval2591 is expected to be nil2592 behaves like no effective expiration interval2593 is expected to be nil2594 behaves like it has loose foreign keys2595 has at least one loose foreign key definition2596 has the deletion trigger present2597 records record deletions2598 cleans up record deletions2599 Projects::SyncEvent2600 when creating the project2601 creates a projects_sync_event record2602 enqueues ProcessProjectSyncEventsWorker2603 when updating project namespace_id2604 creates a projects_sync_event record2605 enqueues ProcessProjectSyncEventsWorker2606 when updating project other attribute2607 creates a projects_sync_event record2608 in the same transaction2609 when updating different namespace_id2610 creates two projects_sync_event records2611 when updating the same namespace_id2612 creates one projects_sync_event record2613 .not_hidden2614 lists projects that are not hidden2615 #pending_delete_or_hidden?2616 pending_delete: true, hidden: false, expected_result: true2617 returns true if project is pending delete or hidden2618 pending_delete: true, hidden: true, expected_result: true2619 returns true if project is pending delete or hidden2620 pending_delete: false, hidden: true, expected_result: true2621 returns true if project is pending delete or hidden2622 pending_delete: false, hidden: false, expected_result: false2623 returns true if project is pending delete or hidden2624 #work_items_feature_flag_enabled?2625 when a project does not belong to a group2626 behaves like project checking work_items feature flag2627 when work_items FF is disabled globally2628 is expected to be falsey2629 when work_items FF is enabled for the project2630 is expected to be truthy2631 when work_items FF is enabled globally2632 is expected to be truthy2633 when project belongs to a group2634 behaves like project checking work_items feature flag2635 when work_items FF is disabled globally2636 is expected to be falsey2637 when work_items FF is enabled for the project2638 is expected to be truthy2639 when work_items FF is enabled globally2640 is expected to be truthy2641 when work_items FF is enabled for the root group2642 is expected to be truthy2643 when work_items FF is enabled for the group2644 is expected to be truthy2645 serialization2646 behaves like blocks unsafe serialization2647 blocks as_json2648 blocks to_json2649 #enqueue_record_project_target_platforms2650 enqueues a Projects::RecordTargetPlatformsWorker2651 when feature flag is disabled2652 behaves like does not enqueue a Projects::RecordTargetPlatformsWorker2653 does not enqueue a Projects::RecordTargetPlatformsWorker2654 when not in gitlab.com2655 behaves like does not enqueue a Projects::RecordTargetPlatformsWorker2656 does not enqueue a Projects::RecordTargetPlatformsWorker2657 #inactive?2658 behaves like returns true if project is inactive2659 storage_size: 1048576, last_activity_at: Sun, 29 May 2022 20:02:46.932725911 UTC +00:00, expected_result: false2660 returns expected result2661 storage_size: 1048576, last_activity_at: Sat, 29 Jun 2019 20:02:46.933002231 UTC +00:00, expected_result: false2662 returns expected result2663 storage_size: 8388608, last_activity_at: Sun, 29 May 2022 20:02:46.933095591 UTC +00:00, expected_result: false2664 returns expected result2665 storage_size: 8388608, last_activity_at: Sat, 29 Jun 2019 20:02:46.933190441 UTC +00:00, expected_result: true2666 returns expected result2667 .inactive2668 returns projects that are inactive2669 #refreshing_build_artifacts_size?2670 when project has no existing refresh record2671 is expected to be falsey2672 when project has existing refresh record2673 and refresh has not yet started2674 is expected to eq false2675 and refresh has started2676 is expected to eq true2677 #security_training_available?2678 returns false2679Member2680 Associations2681 is expected to belong to user required: false2682 is expected to belong to member_namespace required: false2683 is expected to have one member_task2684 Validation2685 is expected to validate that :user cannot be empty/falsy2686 is expected to validate that :source cannot be empty/falsy2687 expires_at2688 is expected not to allow :expires_at to be ‹Tue, 28 Jun 2022›2689 is expected to allow :expires_at to be ‹Thu, 30 Jun 2022›2690 is expected to allow :expires_at to be ‹Wed, 29 Jun 2022›2691 is expected to allow :expires_at to be ‹nil›2692 behaves like an object with email-formatted attributes2693 specifically its :invite_email attribute2694 with a value of 'info@example.com'2695 is valid2696 with a value of 'info+test@example.com'2697 is valid2698 with a value of 'o'reilly@example.com'2699 is valid2700 with a value of 'mailto:test@example.com'2701 is valid2702 with a value of 'lol!'+=?><#$%^&*()@gmail.com'2703 is valid2704 with a value of 'foobar'2705 is invalid2706 with a value of 'test@test@example.com'2707 is invalid2708 when an invite email is provided2709 doesn't require a user2710 requires a valid invite email2711 requires a unique invite email scoped to this source2712 when an invite email is not provided2713 requires a user2714 is valid otherwise2715 with admin signup restrictions2716 when allowed domains for signup is enabled2717 adds an error message when email is not accepted2718 when denylist is enabled2719 adds an error message when email is denied2720 when email restrictions is enabled2721 adds an error message when email is not accepted2722 when a child member inherits its access level2723 requires a higher level2724 is valid with an equal level2725 is valid with a higher level2726 project bots2727 not a member of any group or project2728 is valid2729 already member of a project2730 is not valid2731 Scopes & finders2732 .access_for_user_ids2733 returns the right access levels2734 .in_hierarchy2735 is expected to contain exactly #<GroupMember id: 802, access_level: 50, source_id: 1332, source_type: "Namespace", user_id: 443, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1332>, #<ProjectMember id: 804, access_level: 40, source_id: 692, source_type: "Project", user_id: 446, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1337>, #<GroupMember id: 805, access_level: 50, source_id: 1341, source_type: "Namespace", user_id: 448, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1341>, and #<ProjectMember id: 807, access_level: 40, source_id: 694, source_type: "Project", user_id: 451, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1346>2736 with scope prefix2737 is expected to contain exactly #<GroupMember id: 808, access_level: 50, source_id: 1350, source_type: "Namespace", user_id: 453, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1350>, #<GroupMember id: 811, access_level: 50, source_id: 1359, source_type: "Namespace", user_id: 458, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1359>, and #<ProjectMember id: 813, access_level: 40, source_id: 698, source_type: "Project", user_id: 461, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1364>2738 with scope suffix2739 is expected to contain exactly #<GroupMember id: 814, access_level: 50, source_id: 1368, source_type: "Namespace", user_id: 463, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1368>, #<GroupMember id: 817, access_level: 50, source_id: 1377, source_type: "Namespace", user_id: 468, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1377>, and #<ProjectMember id: 819, access_level: 40, source_id: 702, source_type: "Project", user_id: 471, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1382>2740 .invite2741 is expected not to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2742 is expected to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2743 is expected not to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2744 is expected not to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2745 is expected not to include #<ProjectMember id: 800, access_level: 30, source_id: 687, source_type: "Project", user_id: 441, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2746 .non_invite2747 is expected to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2748 is expected not to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2749 is expected to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2750 is expected to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2751 is expected to include #<ProjectMember id: 800, access_level: 30, source_id: 687, source_type: "Project", user_id: 441, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2752 .non_minimal_access2753 is expected to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2754 is expected to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2755 is expected to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2756 is expected to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2757 is expected to include #<ProjectMember id: 800, access_level: 30, source_id: 687, source_type: "Project", user_id: 441, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2758 is expected not to include #<GroupMember id: 801, access_level: 5, source_id: 1308, source_type: "Namespace", user_id: 442, noti...: nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: nil>2759 .request2760 is expected not to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2761 is expected not to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2762 is expected not to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2763 is expected to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2764 is expected not to include #<ProjectMember id: 800, access_level: 30, source_id: 687, source_type: "Project", user_id: 441, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2765 .non_request2766 is expected to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2767 is expected to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2768 is expected to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2769 is expected not to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2770 is expected to include #<ProjectMember id: 800, access_level: 30, source_id: 687, source_type: "Project", user_id: 441, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2771 .not_accepted_invitations2772 is expected to include #<ProjectMember id: 821, access_level: 40, source_id: 704, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1388>2773 is expected not to include #<ProjectMember id: 823, access_level: 40, source_id: 705, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1391>2774 .not_accepted_invitations_by_user2775 is expected to contain exactly #<ProjectMember id: 829, access_level: 40, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2776 .not_expired2777 is expected not to include #<GroupMember id: 830, access_level: 50, source_id: 1401, source_type: "Namespace", user_id: 483, not...-30", ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1401> and #<GroupMember id: 831, access_level: 50, source_id: 1403, source_type: "Namespace", user_id: 484, not...-01", ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1403>2778 is expected to include #<GroupMember id: 832, access_level: 50, source_id: 1405, source_type: "Namespace", user_id: 485, not...-02", ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1405> and #<GroupMember id: 833, access_level: 50, source_id: 1407, source_type: "Namespace", user_id: 486, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1407>2779 .created_today2780 is expected not to include #<GroupMember id: 835, access_level: 50, source_id: 1411, source_type: "Namespace", user_id: 488, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1411>2781 is expected to include #<GroupMember id: 834, access_level: 50, source_id: 1409, source_type: "Namespace", user_id: 487, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1409>2782 .last_ten_days_excluding_today2783 is expected to include #<GroupMember id: 837, access_level: 50, source_id: 1415, source_type: "Namespace", user_id: 490, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1415>2784 is expected not to include #<GroupMember id: 836, access_level: 50, source_id: 1413, source_type: "Namespace", user_id: 489, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1413> and #<GroupMember id: 838, access_level: 50, source_id: 1417, source_type: "Namespace", user_id: 491, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1417>2785 .search_invite_email2786 returns only members the matching e-mail2787 .by_access_level2788 by owner2789 is expected to include #<GroupMember id: 791, access_level: 50, source_id: 1308, source_type: "Namespace", user_id: 431, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1308>2790 is expected not to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2791 is expected not to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2792 is expected not to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2793 is expected not to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2794 is expected not to include nil2795 is expected not to include #<ProjectMember id: 793, access_level: 40, source_id: 687, source_type: "Project", user_id: 433, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2796 is expected not to include #<ProjectMember id: 794, access_level: 30, source_id: 687, source_type: "Project", user_id: 434, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2797 by maintainer2798 is expected not to include #<GroupMember id: 791, access_level: 50, source_id: 1308, source_type: "Namespace", user_id: 431, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1308>2799 is expected to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2800 is expected not to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2801 is expected not to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2802 is expected not to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2803 is expected not to include nil2804 is expected not to include #<ProjectMember id: 793, access_level: 40, source_id: 687, source_type: "Project", user_id: 433, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2805 is expected not to include #<ProjectMember id: 794, access_level: 30, source_id: 687, source_type: "Project", user_id: 434, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2806 by developer2807 is expected not to include #<GroupMember id: 791, access_level: 50, source_id: 1308, source_type: "Namespace", user_id: 431, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1308>2808 is expected not to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2809 is expected to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2810 is expected to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2811 is expected not to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2812 is expected not to include nil2813 is expected not to include #<ProjectMember id: 793, access_level: 40, source_id: 687, source_type: "Project", user_id: 433, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2814 is expected not to include #<ProjectMember id: 794, access_level: 30, source_id: 687, source_type: "Project", user_id: 434, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2815 by owner and maintainer2816 is expected to include #<GroupMember id: 791, access_level: 50, source_id: 1308, source_type: "Namespace", user_id: 431, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1308>2817 is expected to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2818 is expected not to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2819 is expected not to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2820 is expected not to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2821 is expected not to include nil2822 is expected not to include #<ProjectMember id: 793, access_level: 40, source_id: 687, source_type: "Project", user_id: 433, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2823 is expected not to include #<ProjectMember id: 794, access_level: 30, source_id: 687, source_type: "Project", user_id: 434, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2824 by owner, maintainer and developer2825 is expected to include #<GroupMember id: 791, access_level: 50, source_id: 1308, source_type: "Namespace", user_id: 431, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1308>2826 is expected to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2827 is expected to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2828 is expected to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2829 is expected not to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2830 is expected not to include nil2831 is expected not to include #<ProjectMember id: 793, access_level: 40, source_id: 687, source_type: "Project", user_id: 433, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2832 is expected not to include #<ProjectMember id: 794, access_level: 30, source_id: 687, source_type: "Project", user_id: 434, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2833 .developers2834 is expected not to include #<GroupMember id: 791, access_level: 50, source_id: 1308, source_type: "Namespace", user_id: 431, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1308>2835 is expected not to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2836 is expected to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2837 is expected to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2838 is expected not to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2839 is expected to include #<ProjectMember id: 800, access_level: 30, source_id: 687, source_type: "Project", user_id: 441, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2840 is expected not to include #<ProjectMember id: 793, access_level: 40, source_id: 687, source_type: "Project", user_id: 433, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2841 is expected not to include #<ProjectMember id: 794, access_level: 30, source_id: 687, source_type: "Project", user_id: 434, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2842 .owners_and_maintainers2843 is expected to include #<GroupMember id: 791, access_level: 50, source_id: 1308, source_type: "Namespace", user_id: 431, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1308>2844 is expected to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2845 is expected not to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2846 is expected not to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2847 is expected not to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2848 is expected not to include #<ProjectMember id: 800, access_level: 30, source_id: 687, source_type: "Project", user_id: 441, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2849 is expected not to include #<ProjectMember id: 793, access_level: 40, source_id: 687, source_type: "Project", user_id: 433, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2850 .has_access2851 is expected to include #<GroupMember id: 791, access_level: 50, source_id: 1308, source_type: "Namespace", user_id: 431, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1308>2852 is expected to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2853 is expected to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2854 is expected to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2855 is expected not to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2856 is expected to include #<ProjectMember id: 800, access_level: 30, source_id: 687, source_type: "Project", user_id: 441, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2857 is expected not to include #<ProjectMember id: 793, access_level: 40, source_id: 687, source_type: "Project", user_id: 433, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2858 is expected not to include #<ProjectMember id: 794, access_level: 30, source_id: 687, source_type: "Project", user_id: 434, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2859 .active2860 is expected to include #<GroupMember id: 791, access_level: 50, source_id: 1308, source_type: "Namespace", user_id: 431, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1308>2861 is expected to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2862 is expected to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2863 is expected to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2864 is expected not to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2865 is expected to include #<ProjectMember id: 800, access_level: 30, source_id: 687, source_type: "Project", user_id: 441, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2866 is expected not to include #<ProjectMember id: 793, access_level: 40, source_id: 687, source_type: "Project", user_id: 433, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2867 is expected not to include #<ProjectMember id: 794, access_level: 30, source_id: 687, source_type: "Project", user_id: 434, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2868 is expected not to include #<GroupMember id: 801, access_level: 5, source_id: 1308, source_type: "Namespace", user_id: 442, noti...: nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: nil>2869 .blocked2870 is expected not to include #<GroupMember id: 791, access_level: 50, source_id: 1308, source_type: "Namespace", user_id: 431, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1308>2871 is expected not to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2872 is expected not to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2873 is expected not to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2874 is expected not to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2875 is expected not to include #<ProjectMember id: 800, access_level: 30, source_id: 687, source_type: "Project", user_id: 441, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2876 is expected to include #<ProjectMember id: 793, access_level: 40, source_id: 687, source_type: "Project", user_id: 433, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2877 is expected to include #<ProjectMember id: 794, access_level: 30, source_id: 687, source_type: "Project", user_id: 434, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2878 is expected not to include #<GroupMember id: 801, access_level: 5, source_id: 1308, source_type: "Namespace", user_id: 442, noti...: nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: nil>2879 .active_without_invites_and_requests2880 is expected to include #<GroupMember id: 791, access_level: 50, source_id: 1308, source_type: "Namespace", user_id: 431, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1308>2881 is expected to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2882 is expected not to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2883 is expected to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2884 is expected not to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2885 is expected to include #<ProjectMember id: 800, access_level: 30, source_id: 687, source_type: "Project", user_id: 441, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2886 is expected not to include #<ProjectMember id: 793, access_level: 40, source_id: 687, source_type: "Project", user_id: 433, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2887 is expected not to include #<ProjectMember id: 794, access_level: 30, source_id: 687, source_type: "Project", user_id: 434, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2888 is expected not to include #<GroupMember id: 801, access_level: 5, source_id: 1308, source_type: "Namespace", user_id: 442, noti...: nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: nil>2889 .without_invites_and_requests2890 is expected to include #<GroupMember id: 791, access_level: 50, source_id: 1308, source_type: "Namespace", user_id: 431, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1308>2891 is expected to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2892 is expected not to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2893 is expected to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2894 is expected not to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2895 is expected to include #<ProjectMember id: 800, access_level: 30, source_id: 687, source_type: "Project", user_id: 441, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2896 is expected to include #<ProjectMember id: 793, access_level: 40, source_id: 687, source_type: "Project", user_id: 433, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2897 is expected to include #<ProjectMember id: 794, access_level: 30, source_id: 687, source_type: "Project", user_id: 434, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2898 is expected not to include #<GroupMember id: 801, access_level: 5, source_id: 1308, source_type: "Namespace", user_id: 442, noti...: nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: nil>2899 is expected not to include #<GroupMember id: 788, access_level: 50, source_id: 1308, source_type: "Namespace", user_id: 428, not... nil, ldap: false, override: false, state: 1, invite_email_success: true, member_namespace_id: 1308>2900 is expected not to include #<ProjectMember id: 790, access_level: 40, source_id: 687, source_type: "Project", user_id: 429, noti... nil, ldap: false, override: false, state: 1, invite_email_success: true, member_namespace_id: 1307>2901 .connected_to_user2902 is expected to include #<GroupMember id: 791, access_level: 50, source_id: 1308, source_type: "Namespace", user_id: 431, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1308>2903 is expected to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2904 is expected to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2905 is expected to include #<ProjectMember id: 800, access_level: 30, source_id: 687, source_type: "Project", user_id: 441, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2906 is expected to include #<ProjectMember id: 793, access_level: 40, source_id: 687, source_type: "Project", user_id: 433, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2907 is expected to include #<ProjectMember id: 794, access_level: 30, source_id: 687, source_type: "Project", user_id: 434, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2908 is expected to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2909 is expected to include #<GroupMember id: 801, access_level: 5, source_id: 1308, source_type: "Namespace", user_id: 442, noti...: nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: nil>2910 is expected not to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2911 .authorizable2912 includes the member who has an associated user record,but also having an invite_token2913 is expected to include #<GroupMember id: 791, access_level: 50, source_id: 1308, source_type: "Namespace", user_id: 431, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1308>2914 is expected to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2915 is expected to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2916 is expected to include #<ProjectMember id: 800, access_level: 30, source_id: 687, source_type: "Project", user_id: 441, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2917 is expected to include #<ProjectMember id: 793, access_level: 40, source_id: 687, source_type: "Project", user_id: 433, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2918 is expected to include #<ProjectMember id: 794, access_level: 30, source_id: 687, source_type: "Project", user_id: 434, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2919 is expected not to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2920 is expected not to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2921 is expected not to include #<GroupMember id: 801, access_level: 5, source_id: 1308, source_type: "Namespace", user_id: 442, noti...: nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: nil>2922 is expected not to include #<GroupMember id: 788, access_level: 50, source_id: 1308, source_type: "Namespace", user_id: 428, not... nil, ldap: false, override: false, state: 1, invite_email_success: true, member_namespace_id: 1308>2923 is expected not to include #<ProjectMember id: 790, access_level: 40, source_id: 687, source_type: "Project", user_id: 429, noti... nil, ldap: false, override: false, state: 1, invite_email_success: true, member_namespace_id: 1307>2924 .distinct_on_user_with_max_access_level2925 is expected not to include #<GroupMember id: 842, access_level: 30, source_id: 1424, source_type: "Namespace", user_id: 431, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1424>2926 is expected to include #<GroupMember id: 791, access_level: 50, source_id: 1308, source_type: "Namespace", user_id: 431, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1308>2927 is expected to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2928 is expected to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2929 is expected to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2930 is expected to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2931 is expected to include #<ProjectMember id: 800, access_level: 30, source_id: 687, source_type: "Project", user_id: 441, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2932 is expected to include #<ProjectMember id: 793, access_level: 40, source_id: 687, source_type: "Project", user_id: 433, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2933 is expected to include #<ProjectMember id: 794, access_level: 30, source_id: 687, source_type: "Project", user_id: 434, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2934 is expected to include #<GroupMember id: 801, access_level: 5, source_id: 1308, source_type: "Namespace", user_id: 442, noti...: nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: nil>2935 with where conditions2936 is expected to eq [#<GroupMember id: 843, access_level: 50, source_id: 1426, source_type: "Namespace", user_id: 495, no...nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1426>]2937 .with_invited_user_state2938 is expected to include #<GroupMember id: 791, access_level: 50, source_id: 1308, source_type: "Namespace", user_id: 431, not... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1308>2939 is expected to include #<ProjectMember id: 792, access_level: 40, source_id: 687, source_type: "Project", user_id: 432, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2940 is expected to include #<ProjectMember id: 796, access_level: 30, source_id: 687, source_type: "Project", user_id: nil, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2941 is expected to include #<ProjectMember id: 798, access_level: 30, source_id: 687, source_type: "Project", user_id: 439, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2942 is expected to include #<ProjectMember id: 799, access_level: 30, source_id: 687, source_type: "Project", user_id: 440, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2943 is expected to include #<ProjectMember id: 800, access_level: 30, source_id: 687, source_type: "Project", user_id: 441, noti... nil, ldap: false, override: false, state: 0, invite_email_success: true, member_namespace_id: 1307>2944 with invited pending members2945 includes invited user state2946 .active_state2947 includes members with an active state2948 does not include members with an awaiting state2949 .excluding_users2950 excludes members with given user ids2951 Delegate methods2952 is expected to respond to #user_name2953 is expected to respond to #user_email2954 .valid_email?2955 is a valid email format2956 is not a valid email format2957 #accept_request2958 is expected to be truthy2959 clears requested_at2960 calls #after_accept_request2961 #invite?2962 is expected to be invite2963 #request?2964 is expected to be request2965 #pending?2966 is expected to be pending2967 is expected to be pending2968 #hook_prerequisites_met?2969 when the member does not have an associated user2970 returns false2971 when the member has an associated user2972 returns true2973 #accept_invite!2974 resets the invite token2975 sets the invite accepted timestamp2976 sets the user2977 calls #after_accept_invite2978 does not accept the invite if saving a new user fails2979 schedules a TasksToBeDone::CreateWorker task2980 authorized projects2981 successfully completes a blocking refresh2982 successfully completes a non-blocking refresh2983 when the feature flag is disabled2984 successfully completes a blocking refresh2985 #decline_invite!2986 destroys the member2987 calls #after_decline_invite2988 #generate_invite_token2989 sets the invite token2990 generate invite token on create2991 sets the invite token2992 when invite was already accepted2993 does not set invite token2994 .find_by_invite_token2995 finds the member2996 #send_invitation_reminder2997 an invited group member2998 sends a reminder2999 an invited member without a raw invite token set3000 generates a new token3001 an uninvited member3002 does not send a reminder3003 #invite_to_unknown_user?3004 when user is nil3005 is expected to eq true3006 when user is set3007 is expected to eq false3008 destroying a record3009 refreshes user's authorized projects3010 when after_commit :update_highest_role3011 member_type: :project_member, source_type: :project3012 create member3013 when lease is obtained3014 takes the lease but does not release it3015 schedules a job in the future3016 when lease cannot be obtained3017 only schedules one job3018 when member exists3019 update member3020 when access level was changed3021 when lease is obtained3022 takes the lease but does not release it3023 schedules a job in the future3024 when lease cannot be obtained3025 only schedules one job3026 when access level was not changed3027 does not obtain an exclusive lease3028 destroy member3029 when lease is obtained3030 takes the lease but does not release it3031 schedules a job in the future3032 when lease cannot be obtained3033 only schedules one job3034 member_type: :group_member, source_type: :group3035 create member3036 when lease is obtained3037 takes the lease but does not release it3038 schedules a job in the future3039 when lease cannot be obtained3040 only schedules one job3041 when member exists3042 update member3043 when access level was changed3044 when lease is obtained3045 takes the lease but does not release it3046 schedules a job in the future3047 when lease cannot be obtained3048 only schedules one job3049 when access level was not changed3050 does not obtain an exclusive lease3051 destroy member3052 when lease is obtained3053 takes the lease but does not release it3054 schedules a job in the future3055 when lease cannot be obtained3056 only schedules one job3057 log_invitation_token_cleanup3058 when on gitlab.com3059 doesn't log info for members without invitation or accepted invitation3060 logs error for accepted members with token and creates membership3061 when not on gitlab.com3062 does not log error for accepted members with token and creates membership3063 #set_member_namespace_id3064 on create3065 sets the member_namespace_id3066 .sort_by_attribute3067 sort users in ascending order by access-level3068 sort users in descending order by access-level3069 sorts users in descending order by their creation time3070 sorts users in ascending order by their creation time3071 sort users by recent last activity3072 sort users by oldest last activity3073 when sort by recent_sign_in3074 sorts users by recent sign-in time3075 pushes users who never signed in to the end3076 when sort by oldest_sign_in3077 sorts users by the oldest sign-in time3078 pushes users who never signed in to the end3079Gitlab::Color3080 .of3081 parses black to #0000003082 parses silver to #C0C0C03083 parses gray to #8080803084 parses white to #FFFFFF3085 parses maroon to #8000003086 parses red to #FF00003087 parses purple to #8000803088 parses fuchsia to #FF00FF3089 parses green to #0080003090 parses lime to #00FF003091 parses olive to #8080003092 parses yellow to #FFFF003093 parses navy to #0000803094 parses blue to #0000FF3095 parses teal to #0080803096 parses aqua to #00FFFF3097 parses orange to #FFA5003098 parses aliceblue to #F0F8FF3099 parses antiquewhite to #FAEBD73100 parses aquamarine to #7FFFD43101 parses azure to #F0FFFF3102 parses beige to #F5F5DC3103 parses bisque to #FFE4C43104 parses blanchedalmond to #FFEBCD3105 parses blueviolet to #8A2BE23106 parses brown to #A52A2A3107 parses burlywood to #DEB8873108 parses cadetblue to #5F9EA03109 parses chartreuse to #7FFF003110 parses chocolate to #D2691E3111 parses coral to #FF7F503112 parses cornflowerblue to #6495ED3113 parses cornsilk to #FFF8DC3114 parses crimson to #DC143C3115 parses darkblue to #00008B3116 parses darkcyan to #008B8B3117 parses darkgoldenrod to #B8860B3118 parses darkgray to #A9A9A93119 parses darkgreen to #0064003120 parses darkgrey to #A9A9A93121 parses darkkhaki to #BDB76B3122 parses darkmagenta to #8B008B3123 parses darkolivegreen to #556B2F3124 parses darkorange to #FF8C003125 parses darkorchid to #9932CC3126 parses darkred to #8B00003127 parses darksalmon to #E9967A3128 parses darkseagreen to #8FBC8F3129 parses darkslateblue to #483D8B3130 parses darkslategray to #2F4F4F3131 parses darkslategrey to #2F4F4F3132 parses darkturquoise to #00CED13133 parses darkviolet to #9400D33134 parses deeppink to #FF14933135 parses deepskyblue to #00BFFF3136 parses dimgray to #6969693137 parses dimgrey to #6969693138 parses dodgerblue to #1E90FF3139 parses firebrick to #B222223140 parses floralwhite to #FFFAF03141 parses forestgreen to #228B223142 parses gainsboro to #DCDCDC3143 parses ghostwhite to #F8F8FF3144 parses gold to #FFD7003145 parses goldenrod to #DAA5203146 parses greenyellow to #ADFF2F3147 parses grey to #8080803148 parses honeydew to #F0FFF03149 parses hotpink to #FF69B43150 parses indianred to #CD5C5C3151 parses indigo to #4B00823152 parses ivory to #FFFFF03153 parses khaki to #F0E68C3154 parses lavender to #E6E6FA3155 parses lavenderblush to #FFF0F53156 parses lawngreen to #7CFC003157 parses lemonchiffon to #FFFACD3158 parses lightblue to #ADD8E63159 parses lightcoral to #F080803160 parses lightcyan to #E0FFFF3161 parses lightgoldenrodyellow to #FAFAD23162 parses lightgray to #D3D3D33163 parses lightgreen to #90EE903164 parses lightgrey to #D3D3D33165 parses lightpink to #FFB6C13166 parses lightsalmon to #FFA07A3167 parses lightseagreen to #20B2AA3168 parses lightskyblue to #87CEFA3169 parses lightslategray to #7788993170 parses lightslategrey to #7788993171 parses lightsteelblue to #B0C4DE3172 parses lightyellow to #FFFFE03173 parses limegreen to #32CD323174 parses linen to #FAF0E63175 parses mediumaquamarine to #66CDAA3176 parses mediumblue to #0000CD3177 parses mediumorchid to #BA55D33178 parses mediumpurple to #9370DB3179 parses mediumseagreen to #3CB3713180 parses mediumslateblue to #7B68EE3181 parses mediumspringgreen to #00FA9A3182 parses mediumturquoise to #48D1CC3183 parses mediumvioletred to #C715853184 parses midnightblue to #1919703185 parses mintcream to #F5FFFA3186 parses mistyrose to #FFE4E13187 parses moccasin to #FFE4B53188 parses navajowhite to #FFDEAD3189 parses oldlace to #FDF5E63190 parses olivedrab to #6B8E233191 parses orangered to #FF45003192 parses orchid to #DA70D63193 parses palegoldenrod to #EEE8AA3194 parses palegreen to #98FB983195 parses paleturquoise to #AFEEEE3196 parses palevioletred to #DB70933197 parses papayawhip to #FFEFD53198 parses peachpuff to #FFDAB93199 parses peru to #CD853F3200 parses pink to #FFC0CB3201 parses plum to #DDA0DD3202 parses powderblue to #B0E0E63203 parses rosybrown to #BC8F8F3204 parses royalblue to #4169E13205 parses saddlebrown to #8B45133206 parses salmon to #FA80723207 parses sandybrown to #F4A4603208 parses seagreen to #2E8B573209 parses seashell to #FFF5EE3210 parses sienna to #A0522D3211 parses skyblue to #87CEEB3212 parses slateblue to #6A5ACD3213 parses slategray to #7080903214 parses slategrey to #7080903215 parses snow to #FFFAFA3216 parses springgreen to #00FF7F3217 parses steelblue to #4682B43218 parses tan to #D2B48C3219 parses thistle to #D8BFD83220 parses tomato to #FF63473221 parses turquoise to #40E0D03222 parses violet to #EE82EE3223 parses wheat to #F5DEB33224 parses whitesmoke to #F5F5F53225 parses yellowgreen to #9ACD323226 parses rebeccapurple to #6633993227 parses hex literals as colors3228 raises if the input is nil3229 returns an invalid color if the input is not valid3230 .color_for3231 when generating color for nil value3232 is expected to be valid3233 behaves like deterministic3234 is deterministoc3235 when generating color for empty string value3236 is expected to be valid3237 behaves like deterministic3238 is deterministoc3239 when generating color for number value3240 is expected to be valid3241 behaves like deterministic3242 is deterministoc3243 when generating color for string value3244 is expected to be valid3245 behaves like deterministic3246 is deterministoc3247 #new3248 handles nil values3249 strips input3250 #valid?3251 black is a valid color3252 silver is a valid color3253 gray is a valid color3254 white is a valid color3255 maroon is a valid color3256 red is a valid color3257 purple is a valid color3258 fuchsia is a valid color3259 green is a valid color3260 lime is a valid color3261 olive is a valid color3262 yellow is a valid color3263 navy is a valid color3264 blue is a valid color3265 teal is a valid color3266 aqua is a valid color3267 orange is a valid color3268 aliceblue is a valid color3269 antiquewhite is a valid color3270 aquamarine is a valid color3271 azure is a valid color3272 beige is a valid color3273 bisque is a valid color3274 blanchedalmond is a valid color3275 blueviolet is a valid color3276 brown is a valid color3277 burlywood is a valid color3278 cadetblue is a valid color3279 chartreuse is a valid color3280 chocolate is a valid color3281 coral is a valid color3282 cornflowerblue is a valid color3283 cornsilk is a valid color3284 crimson is a valid color3285 darkblue is a valid color3286 darkcyan is a valid color3287 darkgoldenrod is a valid color3288 darkgray is a valid color3289 darkgreen is a valid color3290 darkgrey is a valid color3291 darkkhaki is a valid color3292 darkmagenta is a valid color3293 darkolivegreen is a valid color3294 darkorange is a valid color3295 darkorchid is a valid color3296 darkred is a valid color3297 darksalmon is a valid color3298 darkseagreen is a valid color3299 darkslateblue is a valid color3300 darkslategray is a valid color3301 darkslategrey is a valid color3302 darkturquoise is a valid color3303 darkviolet is a valid color3304 deeppink is a valid color3305 deepskyblue is a valid color3306 dimgray is a valid color3307 dimgrey is a valid color3308 dodgerblue is a valid color3309 firebrick is a valid color3310 floralwhite is a valid color3311 forestgreen is a valid color3312 gainsboro is a valid color3313 ghostwhite is a valid color3314 gold is a valid color3315 goldenrod is a valid color3316 greenyellow is a valid color3317 grey is a valid color3318 honeydew is a valid color3319 hotpink is a valid color3320 indianred is a valid color3321 indigo is a valid color3322 ivory is a valid color3323 khaki is a valid color3324 lavender is a valid color3325 lavenderblush is a valid color3326 lawngreen is a valid color3327 lemonchiffon is a valid color3328 lightblue is a valid color3329 lightcoral is a valid color3330 lightcyan is a valid color3331 lightgoldenrodyellow is a valid color3332 lightgray is a valid color3333 lightgreen is a valid color3334 lightgrey is a valid color3335 lightpink is a valid color3336 lightsalmon is a valid color3337 lightseagreen is a valid color3338 lightskyblue is a valid color3339 lightslategray is a valid color3340 lightslategrey is a valid color3341 lightsteelblue is a valid color3342 lightyellow is a valid color3343 limegreen is a valid color3344 linen is a valid color3345 mediumaquamarine is a valid color3346 mediumblue is a valid color3347 mediumorchid is a valid color3348 mediumpurple is a valid color3349 mediumseagreen is a valid color3350 mediumslateblue is a valid color3351 mediumspringgreen is a valid color3352 mediumturquoise is a valid color3353 mediumvioletred is a valid color3354 midnightblue is a valid color3355 mintcream is a valid color3356 mistyrose is a valid color3357 moccasin is a valid color3358 navajowhite is a valid color3359 oldlace is a valid color3360 olivedrab is a valid color3361 orangered is a valid color3362 orchid is a valid color3363 palegoldenrod is a valid color3364 palegreen is a valid color3365 paleturquoise is a valid color3366 palevioletred is a valid color3367 papayawhip is a valid color3368 peachpuff is a valid color3369 peru is a valid color3370 pink is a valid color3371 plum is a valid color3372 powderblue is a valid color3373 rosybrown is a valid color3374 royalblue is a valid color3375 saddlebrown is a valid color3376 salmon is a valid color3377 sandybrown is a valid color3378 seagreen is a valid color3379 seashell is a valid color3380 sienna is a valid color3381 skyblue is a valid color3382 slateblue is a valid color3383 slategray is a valid color3384 slategrey is a valid color3385 snow is a valid color3386 springgreen is a valid color3387 steelblue is a valid color3388 tan is a valid color3389 thistle is a valid color3390 tomato is a valid color3391 turquoise is a valid color3392 violet is a valid color3393 wheat is a valid color3394 whitesmoke is a valid color3395 yellowgreen is a valid color3396 rebeccapurple is a valid color3397 #fff is a valid color3398 #ffffff is a valid color3399 #ABCDEF is a valid color3400 #123456 is a valid color3401 #1234567 is not a valid color3402 fff is not a valid color3403 #deadbeaf is not a valid color3404 #a1b2c3 is a valid color3405 nil is not a valid color3406 #light?3407 #fff is light3408 #a7a7a7 is light3409 #a6a7a7 is dark3410 #000 is dark3411 invalid colors are not light3412 #contrast3413 with light colors3414 is dark3415 with dark colors3416 is light3417 as_json3418 serializes correctly3419Gitlab::MergeRequests::CommitMessageGenerator3420 #merge_message3421 behaves like commit message with template3422 returns nil when template is not set in target project3423 when project has custom commit template3424 uses custom template3425 when project has commit template with only the title3426 evaluates only necessary variables3427 when project has commit template with closed issues3428 omits issues and new lines when no issues are mentioned in description3429 when MR closes issues3430 includes them and keeps new line characters3431 when project has commit template with description3432 uses template3433 when description is empty string3434 skips description placeholder and removes new line characters before it3435 when description is nil3436 skips description placeholder and removes new line characters before it3437 when description is blank string3438 skips description placeholder and removes new line characters before it3439 when custom commit template contains placeholder in the middle or beginning of the line3440 uses custom template3441 when description is empty string3442 does not remove new line characters before empty placeholder3443 when project has template with CRLF newlines3444 converts it to LF newlines3445 when description is empty string3446 skips description placeholder and removes new line characters before it3447 when project has merge commit template with first_commit3448 uses first commit3449 when branch has no unmerged commits3450 is an empty string3451 when project has merge commit template with first_multiline_commit3452 uses first multiline commit3453 when branch has no multiline commits3454 is mr title3455 when project has merge commit template with approvers3456 and mr has no approval3457 removes variable and blank line3458 when there is blank line after approved_by3459 removes blank line before it3460 when there is no blank line after approved_by3461 does not remove blank line before it3462 and mr has one approval3463 returns user name and email3464 and mr has multiple approvals3465 returns users names and emails3466 when project has merge commit template with url3467 and merge request has url3468 returns mr url3469 when project has merge commit template with merged_by3470 and current_user is passed3471 returns user name and email3472 when project has commit template with all_commits3473 returns all commit messages3474 with 2 commits3475 returns both messages3476 with over 100 commits3477 returns first 100 commits skipping merge commit3478 when branch has no unmerged commits3479 is an empty string3480 when branch has commit with message over 100kb3481 skips commit body3482 user3483 comes from metrics3484 returns user name and email3485 comes from merge_user3486 returns user name and email3487 when project has commit template with the same variable used twice3488 uses custom template3489 when project has commit template without any variable3490 uses custom template3491 when project has template with all variables3492 uses custom template3493 when project has merge commit template with co_authored_by3494 uses custom template3495 when author and merging user is one of the commit authors3496 skips his mail in coauthors3497 when author and merging user is the only author of commits3498 skips coauthors and empty lines before it3499 when project has merge commit template with co_authored_by3500 when author and merging user are one of the commit authors3501 skips merging user, but does not skip merge request author3502 #squash_message3503 behaves like commit message with template3504 returns nil when template is not set in target project3505 when project has custom commit template3506 uses custom template3507 when project has commit template with only the title3508 evaluates only necessary variables3509 when project has commit template with closed issues3510 omits issues and new lines when no issues are mentioned in description3511 when MR closes issues3512 includes them and keeps new line characters3513 when project has commit template with description3514 uses template3515 when description is empty string3516 skips description placeholder and removes new line characters before it3517 when description is nil3518 skips description placeholder and removes new line characters before it3519 when description is blank string3520 skips description placeholder and removes new line characters before it3521 when custom commit template contains placeholder in the middle or beginning of the line3522 uses custom template3523 when description is empty string3524 does not remove new line characters before empty placeholder3525 when project has template with CRLF newlines3526 converts it to LF newlines3527 when description is empty string3528 skips description placeholder and removes new line characters before it3529 when project has merge commit template with first_commit3530 uses first commit3531 when branch has no unmerged commits3532 is an empty string3533 when project has merge commit template with first_multiline_commit3534 uses first multiline commit3535 when branch has no multiline commits3536 is mr title3537 when project has merge commit template with approvers3538 and mr has no approval3539 removes variable and blank line3540 when there is blank line after approved_by3541 removes blank line before it3542 when there is no blank line after approved_by3543 does not remove blank line before it3544 and mr has one approval3545 returns user name and email3546 and mr has multiple approvals3547 returns users names and emails3548 when project has merge commit template with url3549 and merge request has url3550 returns mr url3551 when project has merge commit template with merged_by3552 and current_user is passed3553 returns user name and email3554 when project has commit template with all_commits3555 returns all commit messages3556 with 2 commits3557 returns both messages3558 with over 100 commits3559 returns first 100 commits skipping merge commit3560 when branch has no unmerged commits3561 is an empty string3562 when branch has commit with message over 100kb3563 skips commit body3564 user3565 comes from metrics3566 returns user name and email3567 comes from merge_user3568 returns user name and email3569 when project has commit template with the same variable used twice3570 uses custom template3571 when project has commit template without any variable3572 uses custom template3573 when project has template with all variables3574 uses custom template3575 when project has merge commit template with co_authored_by3576 uses custom template3577 when author and merging user is one of the commit authors3578 skips his mail in coauthors3579 when author and merging user is the only author of commits3580 skips coauthors and empty lines before it3581 when project has merge commit template with co_authored_by3582 when author and merging user are one of the commit authors3583 skips merge request author, but does not skip merging user3584Projects::Security::ConfigurationPresenter3585 #to_html_data_attribute3586 when latest default branch pipeline`s source is not auto devops3587 includes links to auto devops and secure product docs3588 returns info that Auto DevOps is not enabled3589 includes a link to the latest pipeline3590 has stubs for autofix3591 includes feature information3592 includes a link to the latest pipeline3593 includes the path to gitlab_ci history3594 while retrieving information about user's ability to enable auto_devops3595 is_admin: true, archived: true, feature_available: true, result: false3596 includes can_enable_auto_devops3597 is_admin: false, archived: true, feature_available: true, result: false3598 includes can_enable_auto_devops3599 is_admin: true, archived: false, feature_available: true, result: true3600 includes can_enable_auto_devops3601 is_admin: false, archived: false, feature_available: true, result: false3602 includes can_enable_auto_devops3603 is_admin: true, archived: true, feature_available: false, result: false3604 includes can_enable_auto_devops3605 is_admin: false, archived: true, feature_available: false, result: false3606 includes can_enable_auto_devops3607 is_admin: true, archived: false, feature_available: false, result: false3608 includes can_enable_auto_devops3609 is_admin: false, archived: false, feature_available: false, result: false3610 includes can_enable_auto_devops3611 when checking features configured status3612 type: :dast, configured: true3613 returns proper configuration status3614 type: :dast_profiles, configured: true3615 returns proper configuration status3616 type: :sast, configured: true3617 returns proper configuration status3618 type: :sast_iac, configured: false3619 returns proper configuration status3620 type: :container_scanning, configured: false3621 returns proper configuration status3622 type: :cluster_image_scanning, configured: false3623 returns proper configuration status3624 type: :dependency_scanning, configured: false3625 returns proper configuration status3626 type: :license_scanning, configured: true3627 returns proper configuration status3628 type: :secret_detection, configured: false3629 returns proper configuration status3630 type: :coverage_fuzzing, configured: false3631 returns proper configuration status3632 type: :api_fuzzing, configured: false3633 returns proper configuration status3634 type: :corpus_management, configured: true3635 returns proper configuration status3636 when the job has more than one report3637 type: :dast, configured: false3638 properly detects security jobs3639 type: :dast_profiles, configured: true3640 properly detects security jobs3641 type: :sast, configured: true3642 properly detects security jobs3643 type: :sast_iac, configured: false3644 properly detects security jobs3645 type: :container_scanning, configured: false3646 properly detects security jobs3647 type: :cluster_image_scanning, configured: false3648 properly detects security jobs3649 type: :dependency_scanning, configured: false3650 properly detects security jobs3651 type: :license_scanning, configured: true3652 properly detects security jobs3653 type: :secret_detection, configured: false3654 properly detects security jobs3655 type: :coverage_fuzzing, configured: false3656 properly detects security jobs3657 type: :api_fuzzing, configured: false3658 properly detects security jobs3659 type: :corpus_management, configured: true3660 properly detects security jobs3661 while retrieving information about gitlab ci file3662 when a .gitlab-ci.yml file exists3663 expects gitlab_ci_present to be true3664 when a .gitlab-ci.yml file does not exist3665 expects gitlab_ci_present to be false if the file is not present3666 when the project is empty3667 includes a blank gitlab_ci history path3668 when the project has no default branch set3669 includes the path to gitlab_ci history3670 when the latest default branch pipeline's source is auto devops3671 reports that auto devops is enabled3672 when gathering feature data3673 type: :dast, configured: true3674 reports that all scanners are configured for which latest pipeline has builds3675 type: :dast_profiles, configured: true3676 reports that all scanners are configured for which latest pipeline has builds3677 type: :sast, configured: true3678 reports that all scanners are configured for which latest pipeline has builds3679 type: :sast_iac, configured: false3680 reports that all scanners are configured for which latest pipeline has builds3681 type: :container_scanning, configured: false3682 reports that all scanners are configured for which latest pipeline has builds3683 type: :cluster_image_scanning, configured: false3684 reports that all scanners are configured for which latest pipeline has builds3685 type: :dependency_scanning, configured: false3686 reports that all scanners are configured for which latest pipeline has builds3687 type: :license_scanning, configured: false3688 reports that all scanners are configured for which latest pipeline has builds3689 type: :secret_detection, configured: true3690 reports that all scanners are configured for which latest pipeline has builds3691 type: :coverage_fuzzing, configured: false3692 reports that all scanners are configured for which latest pipeline has builds3693 type: :api_fuzzing, configured: false3694 reports that all scanners are configured for which latest pipeline has builds3695 type: :corpus_management, configured: true3696 reports that all scanners are configured for which latest pipeline has builds3697 when the project has no default branch pipeline3698 reports that auto devops is disabled3699 includes a link to CI pipeline docs3700 when gathering feature data3701 type: :dast, configured: false3702 reports all security jobs as unconfigured with exception of "fake" jobs3703 type: :dast_profiles, configured: true3704 reports all security jobs as unconfigured with exception of "fake" jobs3705 type: :sast, configured: false3706 reports all security jobs as unconfigured with exception of "fake" jobs3707 type: :sast_iac, configured: false3708 reports all security jobs as unconfigured with exception of "fake" jobs3709 type: :container_scanning, configured: false3710 reports all security jobs as unconfigured with exception of "fake" jobs3711 type: :cluster_image_scanning, configured: false3712 reports all security jobs as unconfigured with exception of "fake" jobs3713 type: :dependency_scanning, configured: false3714 reports all security jobs as unconfigured with exception of "fake" jobs3715 type: :license_scanning, configured: false3716 reports all security jobs as unconfigured with exception of "fake" jobs3717 type: :secret_detection, configured: false3718 reports all security jobs as unconfigured with exception of "fake" jobs3719 type: :coverage_fuzzing, configured: false3720 reports all security jobs as unconfigured with exception of "fake" jobs3721 type: :api_fuzzing, configured: false3722 reports all security jobs as unconfigured with exception of "fake" jobs3723 type: :corpus_management, configured: true3724 reports all security jobs as unconfigured with exception of "fake" jobs3725DesignManagement::Design3726 behaves like AtomicInternalId3727 .has_internal_id3728 Module inclusion3729 is expected to includes the AtomicInternalId module3730 Validation3731 when presence validation is required3732 when creating an object3733 raises an error if the internal id is blank3734 when updating an object3735 raises an error if the internal id is blank3736 when presence validation is not required3737 when creating an object3738 does not raise an error if the internal id is blank (PENDING: No reason given)3739 when updating an object3740 does not raise an error if the internal id is blank (PENDING: No reason given)3741 Creating an instance3742 saves a new instance properly3743 internal id generation3744 calls InternalId.generate_next and sets internal id attribute3745 does not overwrite an existing internal id3746 when the instance has an internal ID set3747 calls InternalId.update_last_value and sets the `last_value` to that of the instance3748 unsetting the instance internal id on rollback3749 when the internal id has been changed3750 when the internal id is automatically set3751 clears it on the instance3752 when the internal id is manually set3753 does not clear it on the instance3754 when the internal id has not been changed3755 preserves the value on the instance3756 supply of internal ids3757 provides a persistent supply of IID values, sensitive to the current state3758 #reset_scope_internal_id_attribute3759 rewinds the allocated IID3760 allocates the same IID3761 behaves like a class that supports relative positioning3762 #scoped_items3763 includes all items with the same scope3764 #relative_siblings3765 includes all items with the same scope, except self3766 .move_nulls_to_end3767 moves items with null relative_position to the end3768 preserves relative position3769 moves the item near the start position when there are no existing positions3770 does not perform any moves if all items have their relative_position set3771 manages to move nulls to the end even if there is a sequence at the end3772 manages to move nulls to the end even if there is not enough space3773 manages to move nulls to the end, stacking if we cannot create enough space3774 manages to move nulls found in the relative scope3775 can move many nulls3776 does not have an N+1 issue3777 .move_nulls_to_start3778 moves items with null relative_position to the start3779 moves the item near the start position when there are no existing positions3780 preserves relative position3781 does not perform any moves if all items have their relative_position set3782 manages to move nulls to the start even if there is not enough space3783 manages to move nulls to the end, stacking if we cannot create enough space3784 #move_before3785 moves item before3786 can move the item before an item at the start3787 can move the item before an item at MIN_POSITION3788 can move the item before an item bunched up at MIN_POSITION3789 when there is no space3790 moves items correctly3791 leap-frogging to the left3792 can leap-frog STEPS times before needing to rebalance3793 there is no space to the left after moving STEPS times3794 rebalances to the right3795 #move_after3796 moves item after3797 can move the item after an item bunched up at MAX_POSITION3798 when there is no space3799 can move the item after an item at MAX_POSITION3800 moves items correctly3801 leap-frogging3802 rebalances after STEPS jumps3803 #move_to_start3804 places items at most IDEAL_DISTANCE from the start when the range is open3805 moves item to the end3806 positions the item at MIN_POSITION when there is only one space left3807 rebalances when there is already an item at the MIN_POSITION3808 deals with a run of elements at the start3809 #move_to_end3810 places items at most IDEAL_DISTANCE from the start when the range is open3811 moves item to the end3812 positions the item at MAX_POSITION when there is only one space left3813 rebalances when there is already an item at the MAX_POSITION3814 deals with a run of elements at the end3815 #move_between3816 positions item between two other3817 positions item between on top3818 positions item between to end3819 positions items even when after and before positions are the same3820 positions item in the middle of other two if distance is big enough3821 positions item closer to the middle if we are at the very top3822 positions item closer to the middle if we are at the very bottom3823 positions item in the middle of other two3824 positions item right if we pass non-sequential parameters3825 avoids N+1 queries when rebalancing other items3826 the two items are next to each other3827 behaves like moves item between3828 moves the middle item to between left and right3829 there is no space3830 behaves like moves item between3831 moves the middle item to between left and right3832 there is a bunch of items3833 handles bunches correctly3834 behaves like moves item between3835 moves the middle item to between left and right3836 relations3837 is expected to belong to project required: false3838 is expected to belong to issue required: false3839 is expected to have many actions3840 is expected to have many versions3841 is expected to have many authors3842 is expected to have many notes dependent => delete_all3843 is expected to have many user_mentions3844 #authors3845 returns unique version authors3846 validations3847 is expected to be valid3848 is expected to validate that :project cannot be empty/falsy3849 is expected to validate that :issue cannot be empty/falsy3850 is expected to validate that :filename cannot be empty/falsy3851 is expected to validate that the length of :filename is at most 2553852 is expected to validate that :filename is case-sensitively unique within the scope of :issue_id3853 validates that the extension is an image3854 validating files with .svg extension3855 allows .svg files when feature flag is enabled3856 does not allow .svg files when feature flag is disabled3857 scopes3858 .visible_at_version3859 at oldest version3860 finds the first design only3861 at version 23862 finds the first and second designs3863 at latest version3864 finds designs3865 when the argument is nil3866 finds all undeleted designs3867 one of the designs was deleted before the given version3868 is not returned3869 a re-created history3870 is returned, though other deleted events are not3871 dead or alive3872 can establish the history at any point3873 .ordered3874 sorts by relative position and ID in ascending order3875 .in_creation_order3876 sorts by ID in ascending order3877 .with_filename3878 returns correct design when passed a single filename3879 returns correct designs when passed an Array of filenames3880 .on_issue3881 returns correct designs when passed a single issue3882 returns correct designs when passed an Array of issues3883 .current3884 returns just the undeleted designs3885 .build_full_path3886 builds the full path for a design3887 #visible_in?3888 tells us when a design is visible3889 #to_ability_name3890 is expected to eq "design"3891 #status3892 the design is new3893 is expected to have attributes {:status => :new}3894 the design is current3895 is expected to have attributes {:status => :current}3896 the design has been deleted3897 is expected to have attributes {:status => :deleted}3898 #deleted?3899 the design is new3900 is falsy3901 the design is current3902 is falsy3903 the design has been deleted3904 is truthy3905 the design has been deleted, but was then re-created3906 is falsy3907 #participants3908 is expected to be empty3909 when participants can read the project3910 is expected to contain exactly #<User id:886 @user667>, #<User id:887 @user668>, and #<User id:888 @user669>3911 #new_design?3912 is false when there are versions3913 is true when there are no versions3914 is false for deleted designs3915 does not cause extra queries when actions are loaded3916 implicitly caches values3917 queries again when the clear_version_cache trigger has been called3918 causes a single query when there versions are not loaded3919 #full_path3920 builds the full path for a design3921 #diff_refs3922 has no diff ref if new3923 there are several versions3924 builds diff refs based on the first commit and it's for the design3925 there is just one version3926 builds diff refs based on the empty tree if there was only one version3927 #repository3928 is a design repository3929 #note_etag_key3930 returns a correct etag key3931 #user_notes_count3932 returns a count of user-generated notes3933 #after_note_changed3934 calls #delete_cache on DesignUserNotesCountService for non-system notes3935 .for_reference3936 avoids extra queries when calling to_reference3937 #to_reference3938 when nil argument3939 uses the simple format3940 when full is true3941 returns complete path to the issue3942 when full is false3943 returns complete path to the issue3944 when same project argument3945 returns bare reference3946 reference_pattern3947 is nil3948 link_reference_pattern3949 is not nil3950 does not match the designs tab3951 intentionally ignores filenames with any special character3952 ext: "png"3953 matches the URL3954 the file is all upper case3955 extracts the encoded filename3956 ext: "PNG"3957 matches the URL3958 the file is all upper case3959 extracts the encoded filename3960 ext: "jpg"3961 matches the URL3962 the file is all upper case3963 extracts the encoded filename3964 ext: "JPG"3965 matches the URL3966 the file is all upper case3967 extracts the encoded filename3968 ext: "jpeg"3969 matches the URL3970 the file is all upper case3971 extracts the encoded filename3972 ext: "JPEG"3973 matches the URL3974 the file is all upper case3975 extracts the encoded filename3976 ext: "gif"3977 matches the URL3978 the file is all upper case3979 extracts the encoded filename3980 ext: "GIF"3981 matches the URL3982 the file is all upper case3983 extracts the encoded filename3984 ext: "bmp"3985 matches the URL3986 the file is all upper case3987 extracts the encoded filename3988 ext: "BMP"3989 matches the URL3990 the file is all upper case3991 extracts the encoded filename3992 ext: "tiff"3993 matches the URL3994 the file is all upper case3995 extracts the encoded filename3996 ext: "TIFF"3997 matches the URL3998 the file is all upper case3999 extracts the encoded filename4000 ext: "ico"4001 matches the URL4002 the file is all upper case4003 extracts the encoded filename4004 ext: "ICO"4005 matches the URL4006 the file is all upper case4007 extracts the encoded filename4008 ext: "webp"4009 matches the URL4010 the file is all upper case4011 extracts the encoded filename4012 ext: "WEBP"4013 matches the URL4014 the file is all upper case4015 extracts the encoded filename4016 ext: "svg"4017 matches the URL4018 the file is all upper case4019 extracts the encoded filename4020 ext: "SVG"4021 matches the URL4022 the file is all upper case4023 extracts the encoded filename4024 .by_issue_id_and_filename4025 behaves like a where_composite scope4026 we pass an empty array4027 returns a null relation4028 we pass nil4029 returns a null relation4030 we pass a singleton composite id4031 finds the first result4032 we pass group of ids4033 finds all the results4034 performance4035 is not O(N)4036Gitlab::Auth::OAuth::User4037 .find_by_uid_and_provider4038 retrieves the correct user4039 #persisted?4040 finds an existing user based on uid and provider (facebook)4041 returns false if user is not found in database4042 #save4043 when account exists on server4044 does not mark the user as external4045 signup4046 marks user as having password_automatically_set4047 when signup is disabled4048 creates the user4049 does not repeat the default user password4050 has the password length within specified range4051 when user confirmation email is enabled4052 creates and confirms the user anyway4053 when the current minimum password length is different from the default minimum password length4054 creates the user4055 terms of service4056 when terms are enforced4057 when feature flag update_oauth_registration_flow is enabled4058 creates the user with accepted terms4059 when feature flag update_oauth_registration_flow is disabled4060 creates the user without accepted terms4061 when terms are not enforced4062 creates the user without accepted terms4063 with auto_link_user disabled (default)4064 provider is marked as external4065 marks user as external4066 provider was external, now has been removed4067 does not mark external user as internal4068 provider is not external4069 when adding a new OAuth identity4070 does not promote an external user to internal4071 with new allow_single_sign_on enabled syntax4072 creates a user from Omniauth4073 with old allow_single_sign_on enabled syntax4074 creates a user from Omniauth4075 with new allow_single_sign_on disabled syntax4076 throws an error4077 with old allow_single_sign_on disabled (Default)4078 throws an error4079 with auto_link_user enabled for a different provider4080 and a current GitLab user with a matching email4081 adds the OmniAuth identity to the GitLab user account4082 and no current GitLab user with a matching email4083 provider is marked as external4084 marks user as external4085 provider was external, now has been removed4086 does not mark external user as internal4087 provider is not external4088 when adding a new OAuth identity4089 does not promote an external user to internal4090 with new allow_single_sign_on enabled syntax4091 creates a user from Omniauth4092 with old allow_single_sign_on enabled syntax4093 creates a user from Omniauth4094 with new allow_single_sign_on disabled syntax4095 throws an error4096 with old allow_single_sign_on disabled (Default)4097 throws an error4098 with auto_link_user enabled for the correct provider4099 and a current GitLab user with a matching email4100 adds the OmniAuth identity to the GitLab user account4101 and no current GitLab user with a matching email4102 provider is marked as external4103 marks user as external4104 provider was external, now has been removed4105 does not mark external user as internal4106 provider is not external4107 when adding a new OAuth identity4108 does not promote an external user to internal4109 with new allow_single_sign_on enabled syntax4110 creates a user from Omniauth4111 with old allow_single_sign_on enabled syntax4112 creates a user from Omniauth4113 with new allow_single_sign_on disabled syntax4114 throws an error4115 with old allow_single_sign_on disabled (Default)4116 throws an error4117 with auto_link_user enabled for all providers4118 and a current GitLab user with a matching email4119 adds the OmniAuth identity to the GitLab user account4120 and no current GitLab user with a matching email4121 provider is marked as external4122 marks user as external4123 provider was external, now has been removed4124 does not mark external user as internal4125 provider is not external4126 when adding a new OAuth identity4127 does not promote an external user to internal4128 with new allow_single_sign_on enabled syntax4129 creates a user from Omniauth4130 with old allow_single_sign_on enabled syntax4131 creates a user from Omniauth4132 with new allow_single_sign_on disabled syntax4133 throws an error4134 with old allow_single_sign_on disabled (Default)4135 throws an error4136 with auto_link_ldap_user disabled (default)4137 provider is marked as external4138 marks user as external4139 provider was external, now has been removed4140 does not mark external user as internal4141 provider is not external4142 when adding a new OAuth identity4143 does not promote an external user to internal4144 with new allow_single_sign_on enabled syntax4145 creates a user from Omniauth4146 with old allow_single_sign_on enabled syntax4147 creates a user from Omniauth4148 with new allow_single_sign_on disabled syntax4149 throws an error4150 with old allow_single_sign_on disabled (Default)4151 throws an error4152 with auto_link_ldap_user enabled4153 and no LDAP provider defined4154 provider is marked as external4155Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4156Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4157 marks user as external4158 provider was external, now has been removed4159Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4160Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4161 does not mark external user as internal4162 provider is not external4163 when adding a new OAuth identity4164Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4165Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4166 does not promote an external user to internal4167 with new allow_single_sign_on enabled syntax4168Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4169Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4170 creates a user from Omniauth4171 with old allow_single_sign_on enabled syntax4172Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4173Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4174 creates a user from Omniauth4175 with new allow_single_sign_on disabled syntax4176Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4177Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4178 throws an error4179 with old allow_single_sign_on disabled (Default)4180Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4181Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4182 throws an error4183 and at least one LDAP provider is defined4184 and a corresponding LDAP person4185 and no account for the LDAP user4186 when the LDAP user is found by UID4187 does not repeat the default user password4188 creates a user with dual LDAP and omniauth identities4189 has name and email set as synced4190 has name and email set as read-only4191 has synced attributes provider set to ldapmain4192 when the LDAP user is found by email address4193 creates the LDAP identity4194 and LDAP user has an account already4195 adds the omniauth identity to the LDAP account4196 when an LDAP person is not found by uid4197 tries to find an LDAP person by email and adds the omniauth identity to the user4198 when also not found by email4199 tries to find an LDAP person by DN and adds the omniauth identity to the user4200 when there is an LDAP connection error4201 does not save the identity4202 and a corresponding LDAP person with a non-default username4203 and no account for the LDAP user4204 creates a user favoring the LDAP username and strips email domain4205 and no corresponding LDAP person4206 provider is marked as external4207Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4208Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4209 marks user as external4210 provider was external, now has been removed4211Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4212Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4213 does not mark external user as internal4214 provider is not external4215 when adding a new OAuth identity4216Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4217Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4218 does not promote an external user to internal4219 with new allow_single_sign_on enabled syntax4220Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4221Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4222 creates a user from Omniauth4223 with old allow_single_sign_on enabled syntax4224Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4225Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4226 creates a user from Omniauth4227 with new allow_single_sign_on disabled syntax4228Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4229Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4230 throws an error4231 with old allow_single_sign_on disabled (Default)4232Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4233Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.4234 throws an error4235 with both auto_link_user and auto_link_ldap_user enabled4236 and at least one LDAP provider is defined4237 and a corresponding LDAP person4238 and no account for the LDAP user4239 creates a user with dual LDAP and omniauth identities4240 has name and email set as synced4241 has name and email set as read-only4242 has synced attributes provider set to ldapmain4243 and LDAP user has an account already4244 adds the omniauth identity to the LDAP account4245 blocking4246 signup with SAML4247 does not repeat the default user password4248 behaves like being blocked on creation4249 when blocking on creation4250 creates a blocked user4251 when a sign up user cap has been set up but has not been reached yet4252 still creates a blocked user4253 behaves like not being blocked on creation4254 when not blocking on creation4255 creates a non-blocked user4256 signup with omniauth only4257 behaves like being blocked on creation4258 when blocking on creation4259 creates a blocked user4260 when a sign up user cap has been set up but has not been reached yet4261 still creates a blocked user4262 behaves like not being blocked on creation4263 when not blocking on creation4264 creates a non-blocked user4265 signup with linked omniauth and LDAP account4266 and no account for the LDAP user4267 behaves like being blocked on creation4268 when blocking on creation4269 creates a blocked user4270 when a sign up user cap has been set up but has not been reached yet4271 still creates a blocked user4272 behaves like not being blocked on creation4273 when not blocking on creation4274 creates a non-blocked user4275 and LDAP user has an account already4276 behaves like not being blocked on creation4277 when not blocking on creation4278 creates a non-blocked user4279 behaves like not being blocked on creation4280 when not blocking on creation4281 creates a non-blocked user4282 sign-in4283 behaves like not being blocked on creation4284 when not blocking on creation4285 creates a non-blocked user4286 behaves like not being blocked on creation4287 when not blocking on creation4288 creates a non-blocked user4289 behaves like not being blocked on creation4290 when not blocking on creation4291 creates a non-blocked user4292 behaves like not being blocked on creation4293 when not blocking on creation4294 creates a non-blocked user4295 ensure backwards compatibility with sync email from provider option4296 when provider sets an email4297 updates the user email4298 has email set as synced4299 has email set as read-only4300 has synced attributes provider set to my-provider4301 when provider doesn't set an email4302 does not update the user email4303 has email set as not synced4304 does not have email set as read-only4305 generating username4306 when no collision with existing user4307 generates the username with no counter4308 when collision with existing user4309 generates the username with a counter4310 when username is a reserved word4311 generates the username with a counter4312 updating email with sync profile4313 when provider sets an email4314 updates the user email4315 has email set as synced4316 has email set as read-only4317 has synced attributes provider set to my-provider4318 when provider doesn't set an email4319 does not update the user email4320 has email set as not synced4321 does not have email set as read-only4322 updating name4323 when provider sets a name4324 updates the user name4325 when provider doesn't set a name4326 does not update the user name4327 updating location4328 when provider sets a location4329 updates the user location4330 when provider doesn't set a location4331 does not update the user location4332 updating user info4333 update all info4334 updates the user email4335 updates the user name4336 updates the user location4337 sets my-provider as the attributes provider4338 update only requested info4339 updates the user name4340 updates the user location4341 does not update the user email4342 update default_scope4343 updates the user email4344 update no info when profile sync is nil4345 does not have sync_attribute4346 does not update the user email4347 does not update the user name4348 does not update the user location4349 does not create associated user synced attributes metadata4350 when gl_user is nil4351 does not raise NoMethodError4352 ._uid_and_provider4353 normalizes extern_uid4354 #find_ldap_person4355 when LDAP connection fails4356 returns nil4357 #bypass_two_factor?4358 when with allow_bypass_two_factor disabled (Default)4359 when with allow_bypass_two_factor enabled4360 when provider in allow_bypass_two_factor array4361 when provider not in allow_bypass_two_factor array4362 #protocol_name4363 is OAuth4364WikiPage4365 #front_matter4366 the wiki page has front matter4367 has front-matter4368 strips the front matter from the content4369 the wiki page does not have front matter4370 behaves like a page without front-matter4371 is expected to have attributes {:content => "My actual content", :front_matter => {}}4372 the wiki page has fenced blocks, but nothing in them4373 behaves like a page without front-matter4374 is expected to have attributes {:content => "---\n---\n\nMy actual content\n", :front_matter => {}}4375 the wiki page has invalid YAML type in fenced blocks4376 behaves like a page without front-matter4377 is expected to have attributes {:content => "---\nthis isn't YAML\n---\n\nMy actual content\n", :front_matter => {}}4378 the wiki page has a disallowed class in fenced block4379 behaves like a page without front-matter4380 is expected to have attributes {:content => "---\ndate: 2010-02-11 11:02:57\n---\n\nMy actual content\n", :front_matter => {}}4381 the wiki page has invalid YAML in fenced block4382 behaves like a page without front-matter4383 is expected to have attributes {:content => "---\ninvalid-use-of-reserved-indicator: @text\n---\n\nMy actual content\n", :front_matter => {}}4384 .unhyphenize4385 removes hyphens from a name4386 #initialize4387 when initialized with an existing page4388 sets the slug attribute4389 sets the title attribute4390 sets the formatted content attribute4391 sets the format attribute4392 sets the message attribute4393 sets the version attribute4394 validations4395 validates presence of title4396 does not validate presence of content4397 #validate_content_size_limit4398 with a new page4399 accepts content below the limit4400 rejects content exceeding the limit4401 counts content size in bytes rather than characters4402 with an existing page exceeding the limit4403 accepts content when it has not changed4404 rejects content when it has changed4405 #validate_path_limits4406 character: "a"4407 accepts page titles below the limit4408 accepts directories below the limit4409 accepts a path with page title and directory below the limit4410 rejects page titles exceeding the limit4411 rejects directories exceeding the limit4412 rejects a page with both title and directory exceeding the limit4413 character: "ä"4414 accepts page titles below the limit4415 accepts directories below the limit4416 accepts a path with page title and directory below the limit4417 rejects page titles exceeding the limit4418 rejects directories exceeding the limit4419 rejects a page with both title and directory exceeding the limit4420 character: "🙈"4421 accepts page titles below the limit4422 accepts directories below the limit4423 accepts a path with page title and directory below the limit4424 rejects page titles exceeding the limit4425 rejects directories exceeding the limit4426 rejects a page with both title and directory exceeding the limit4427 with an existing page title exceeding the limit4428 accepts the exceeding title length when unchanged4429 rejects the exceeding title length when changed4430 #create4431 with valid attributes4432 saves the wiki page4433 returns true4434 saves the wiki page with message4435 if the title is preceded by a / it is removed4436 with invalid attributes4437 does not create the page4438 dot in the title4439 #create4440 saves the wiki page and returns true4441 #update4442 updates the content of the page and returns true4443 #update4444 with valid attributes4445 updates the content of the page4446 updates the title of the page4447 returns true4448 updating front_matter4449 updates the wiki-page front-matter and content together4450 behaves like able to update front-matter4451 updates the wiki-page front-matter4452 the front matter is too long4453 raises an error4454 with same last commit sha4455 returns true4456 with different last commit sha4457 raises exception4458 in subdir4459 keeps the page in the same dir when the content is updated4460 when renaming a page4461 raises an error if the page already exists4462 updates the content and rename the file4463 when moving a page4464 raises an error if the page already exists4465 updates the content and moves the file4466 in subdir4467 moves the page to the root folder if the title is preceded by /4468 does nothing if it has the same title4469 in root dir4470 does nothing if the title is preceded by /4471 with invalid attributes4472 aborts update if title blank4473 #delete4474 deletes the page and returns true4475 #versions4476 returns an array of all commits for the page4477 #title_changed?4478 page: :untitled_page, title: nil, changed: false4479 returns the expected value4480 page: :untitled_page, title: "new title", changed: true4481 returns the expected value4482 page: :unsaved_page, title: nil, changed: true4483 returns the expected value4484 page: :unsaved_page, title: "test page", changed: true4485 returns the expected value4486 page: :unsaved_page, title: "test-page", changed: true4487 returns the expected value4488 page: :unsaved_page, title: "test+page", changed: true4489 returns the expected value4490 page: :unsaved_page, title: "new title", changed: true4491 returns the expected value4492 page: :existing_page, title: nil, changed: false4493 returns the expected value4494 page: :existing_page, title: "test page", changed: false4495 returns the expected value4496 page: :existing_page, title: "test-page", changed: false4497 returns the expected value4498 page: :existing_page, title: "/test page", changed: false4499 returns the expected value4500 page: :existing_page, title: "/test-page", changed: false4501 returns the expected value4502 page: :existing_page, title: "test+page", changed: true4503 returns the expected value4504 page: :existing_page, title: " test page ", changed: true4505 returns the expected value4506 page: :existing_page, title: "new title", changed: true4507 returns the expected value4508 page: :existing_page, title: "new-title", changed: true4509 returns the expected value4510 page: :directory_page, title: nil, changed: false4511 returns the expected value4512 page: :directory_page, title: "parent directory/child page", changed: false4513 returns the expected value4514 page: :directory_page, title: "parent-directory/child page", changed: false4515 returns the expected value4516 page: :directory_page, title: "parent-directory/child-page", changed: false4517 returns the expected value4518 page: :directory_page, title: "child page", changed: false4519 returns the expected value4520 page: :directory_page, title: "child-page", changed: false4521 returns the expected value4522 page: :directory_page, title: "/child page", changed: true4523 returns the expected value4524 page: :directory_page, title: "parent directory/other", changed: true4525 returns the expected value4526 page: :directory_page, title: "parent-directory/other", changed: true4527 returns the expected value4528 page: :directory_page, title: "parent-directory / child-page", changed: true4529 returns the expected value4530 page: :directory_page, title: "other directory/child page", changed: true4531 returns the expected value4532 page: :directory_page, title: "other-directory/child page", changed: true4533 returns the expected value4534 page: :page_with_special_characters, title: nil, changed: false4535 returns the expected value4536 page: :page_with_special_characters, title: "test+page", changed: false4537 returns the expected value4538 page: :page_with_special_characters, title: "test-page", changed: true4539 returns the expected value4540 page: :page_with_special_characters, title: "test page", changed: true4541 returns the expected value4542 #content_changed?4543 with a new page4544 returns true if content is set4545 returns false if content is blank4546 with an existing page4547 returns false4548 returns false if content is set to the same value4549 returns true if content is changed4550 returns true if content is changed to a blank string4551 returns false if only the newline format has changed4552 #path4553 returns the path when persisted4554 returns nil when not persisted4555 #directory4556 when the page is at the root directory4557 returns an empty string4558 when the page is inside an actual directory4559 returns the full directory hierarchy4560 #historical?4561 returns true when requesting an old version4562 returns false when requesting latest version4563 returns false when version is nil4564 returns false when the last version is nil4565 returns false when the version is nil4566 #persisted?4567 returns true for a persisted page4568 returns false for an unpersisted page4569 #to_partial_path4570 returns the relative path to the partial to be used4571 #==4572 returns true for identical wiki page4573 returns true for updated wiki page4574 returns false for a completely different wiki page4575 returns false for page with different slug on same container4576 returns false for page with the same slug on a different container4577 #last_commit_sha4578 returns commit sha4579 is changed after page updated4580 #hook_attrs4581 adds absolute urls for images in the content4582 #version_commit_timestamp4583 for a new page4584 returns nil4585 for page that exists4586 returns the timestamp of the commit4587 #diffs4588 returns a diff instance4589Boards::Issues::MoveService4590 #execute4591 when parent is a project4592 behaves like issues move service4593 when moving an issue between lists4594 delegates the label changes to Issues::UpdateService4595 removes the label from the list it came from and adds the label of the list it goes to4596 behaves like updating timestamps4597 updates updated_at4598 when moving to closed4599 delegates the close proceedings to Issues::CloseService4600 removes all list-labels from boards and close the issue4601 behaves like updating timestamps4602 updates updated_at4603 when moving to backlog4604 keeps labels and milestone4605 behaves like updating timestamps4606 updates updated_at4607 when moving from closed4608 delegates the re-open proceedings to Issues::ReopenService4609 adds the label of the list it goes to and reopen the issue4610 behaves like updating timestamps4611 updates updated_at4612 when moving to same list4613 returns nil4614 keeps issues labels4615 keeps issues assignees4616 sorts issues4617 does not update updated_at4618 when parent is a group4619 behaves like issues move service4620 when moving an issue between lists4621 delegates the label changes to Issues::UpdateService4622 removes the label from the list it came from and adds the label of the list it goes to4623 behaves like updating timestamps4624 updates updated_at4625 when moving to closed4626 delegates the close proceedings to Issues::CloseService4627 removes all list-labels from boards and close the issue4628 behaves like updating timestamps4629 updates updated_at4630 when moving to backlog4631 keeps labels and milestone4632 behaves like updating timestamps4633 updates updated_at4634 when moving from closed4635 delegates the re-open proceedings to Issues::ReopenService4636 adds the label of the list it goes to and reopen the issue4637 behaves like updating timestamps4638 updates updated_at4639 when moving to same list4640 returns nil4641 keeps issues labels4642 keeps issues assignees4643 sorts issues4644 does not update updated_at4645 #execute_multiple4646 returns the expected result if list of issues is empty4647 moving multiple issues4648 moves multiple issues from one list to another4649 moving a single issue4650 moves one issue4651 moving issues visually after an existing issue4652 moves one issue4653 moving issues visually before an existing issue4654 moves one issue4655Boards::Lists::MoveService4656 #execute4657 when board parent is a project4658 behaves like lists move service4659 keeps position of lists when list type is closed4660 when list type is set to label4661 keeps position of lists when new position is nil4662 keeps position of lists when new position is equal to old position4663 keeps position of lists when new position is negative4664 keeps position of lists when new position is equal to number of labels lists4665 keeps position of lists when new position is greater than number of labels lists4666 increments position of intermediate lists when new position is equal to first position4667 decrements position of intermediate lists when new position is equal to last position4668 decrements position of intermediate lists when new position is greater than old position4669 increments position of intermediate lists when new position is lower than old position4670 when board parent is a group4671 behaves like lists move service4672 keeps position of lists when list type is closed4673 when list type is set to label4674 keeps position of lists when new position is nil4675 keeps position of lists when new position is equal to old position4676 keeps position of lists when new position is negative4677 keeps position of lists when new position is equal to number of labels lists4678 keeps position of lists when new position is greater than number of labels lists4679 increments position of intermediate lists when new position is equal to first position4680 decrements position of intermediate lists when new position is equal to last position4681 decrements position of intermediate lists when new position is greater than old position4682 increments position of intermediate lists when new position is lower than old position4683Packages::Maven::Metadata::SyncWorker4684 #perform4685 with a jar4686 with a valid package name4687 logs the message from the service4688 behaves like an idempotent worker4689 is labeled as idempotent4690 performs multiple times sequentially without raising an exception4691 creates the updated metadata files4692 not in the passed project4693 does not create the updated metadata files4694 with a user with not enough permissions4695 does not create the updated metadata files4696 with a maven plugin4697 with a valid package name4698 logs the message from the service4699 behaves like an idempotent worker4700 is labeled as idempotent4701 performs multiple times sequentially without raising an exception4702 creates the updated metadata files4703 not in the passed project4704 does not create the updated metadata files4705 with a user with not enough permissions4706 does not create the updated metadata files4707 with no package name4708 does not run4709 with no user id4710 does not run4711 with no project id4712 does not run4713Integrations::WebexTeams4714 behaves like chat integration4715 Associations4716 is expected to belong to project required: false4717 is expected to have one service_hook4718 Validations4719 when integration is active4720 is expected to validate that :webhook cannot be empty/falsy4721 behaves like issue tracker integration URL attribute4722 is expected to allow :webhook to be ‹"https://example.com"›4723 is expected not to allow :webhook to be ‹"example.com"›4724 is expected not to allow :webhook to be ‹"ftp://example.com"›4725 is expected not to allow :webhook to be ‹"herp-and-derp"›4726 when integration is inactive4727 is expected not to validate that :webhook cannot be empty/falsy4728 .supported_events4729 does not support deployment_events4730 #execute4731 with push events4732 behaves like triggered Webex Teams integration4733 calls Webex Teams API4734 with default branch4735 when only default branch are to be notified4736 behaves like triggered Webex Teams integration4737 calls Webex Teams API4738 when only protected branches are to be notified4739 behaves like untriggered Webex Teams integration4740 does not call Webex Teams API4741 when default and protected branches are to be notified4742 behaves like triggered Webex Teams integration4743 calls Webex Teams API4744 when all branches are to be notified4745 behaves like triggered Webex Teams integration4746 calls Webex Teams API4747 with protected branch4748 when only default branch are to be notified4749 behaves like untriggered Webex Teams integration4750 does not call Webex Teams API4751 when only protected branches are to be notified4752 behaves like triggered Webex Teams integration4753 calls Webex Teams API4754 when default and protected branches are to be notified4755 behaves like triggered Webex Teams integration4756 calls Webex Teams API4757 when all branches are to be notified4758 behaves like triggered Webex Teams integration4759 calls Webex Teams API4760 with neither default nor protected branch4761 when only default branch are to be notified4762 behaves like untriggered Webex Teams integration4763 does not call Webex Teams API4764 when only protected branches are to be notified4765 behaves like untriggered Webex Teams integration4766 does not call Webex Teams API4767 when default and protected branches are to be notified4768 behaves like untriggered Webex Teams integration4769 does not call Webex Teams API4770 when all branches are to be notified4771 behaves like triggered Webex Teams integration4772 calls Webex Teams API4773 with issue events4774 behaves like triggered Webex Teams integration4775 calls Webex Teams API4776 with merge events4777 behaves like triggered Webex Teams integration4778 calls Webex Teams API4779 with wiki page events4780 behaves like triggered Webex Teams integration4781 calls Webex Teams API4782 with note events4783 with commit comment4784 behaves like triggered Webex Teams integration4785 calls Webex Teams API4786 with merge request comment4787 behaves like triggered Webex Teams integration4788 calls Webex Teams API4789 with issue comment4790 behaves like triggered Webex Teams integration4791 calls Webex Teams API4792 with snippet comment4793 behaves like triggered Webex Teams integration4794 calls Webex Teams API4795 with pipeline events4796 with failed pipeline4797 behaves like triggered Webex Teams integration4798 calls Webex Teams API4799 with succeeded pipeline4800 with default notify_only_broken_pipelines4801 does not call Webex Teams API4802 when notify_only_broken_pipelines is false4803 behaves like triggered Webex Teams integration4804 calls Webex Teams API4805 with default branch4806 when only default branch are to be notified4807 behaves like triggered Webex Teams integration4808 calls Webex Teams API4809 when only protected branches are to be notified4810 behaves like untriggered Webex Teams integration4811 does not call Webex Teams API4812 when default and protected branches are to be notified4813 behaves like triggered Webex Teams integration4814 calls Webex Teams API4815 when all branches are to be notified4816 behaves like triggered Webex Teams integration4817 calls Webex Teams API4818 with protected branch4819 when only default branch are to be notified4820 behaves like untriggered Webex Teams integration4821 does not call Webex Teams API4822 when only protected branches are to be notified4823 behaves like triggered Webex Teams integration4824 calls Webex Teams API4825 when default and protected branches are to be notified4826 behaves like triggered Webex Teams integration4827 calls Webex Teams API4828 when all branches are to be notified4829 behaves like triggered Webex Teams integration4830 calls Webex Teams API4831 with neither default nor protected branch4832 when only default branch are to be notified4833 behaves like untriggered Webex Teams integration4834 does not call Webex Teams API4835 when only protected branches are to be notified4836 behaves like untriggered Webex Teams integration4837 does not call Webex Teams API4838 when default and protected branches are to be notified4839 behaves like untriggered Webex Teams integration4840 does not call Webex Teams API4841 when all branches are to be notified4842 behaves like triggered Webex Teams integration4843 calls Webex Teams API4844 deployment events4845 behaves like untriggered Webex Teams integration4846 does not call Webex Teams API4847Integrations::Teamcity4848 accessors4849 is expected to respond to #enable_ssl_verification4850 is expected to respond to #enable_ssl_verification?4851 #initialize_properties4852 enables the setting by default4853 does not enable the setting if the record is already persisted4854 does not enable the setting if a custom value was set4855 #fields4856 inserts the checkbox field after the first URL field, or at the end4857 does not insert the field repeatedly4858 #enable_ssl_verification4859 returns true for a known hostname4860 returns true for new records4861 returns false for an unknown hostname4862 returns false for a HTTP URL4863 returns false for an invalid URL4864 returns the persisted value if present4865 Validations4866 when integration is active4867 is expected to validate that :build_type cannot be empty/falsy4868 is expected to validate that :teamcity_url cannot be empty/falsy4869 behaves like issue tracker integration URL attribute4870 is expected to allow :teamcity_url to be ‹"https://example.com"›4871 is expected not to allow :teamcity_url to be ‹"example.com"›4872 is expected not to allow :teamcity_url to be ‹"ftp://example.com"›4873 is expected not to allow :teamcity_url to be ‹"herp-and-derp"›4874 #username4875 does not validate the presence of username if password is nil4876 validates the presence of username if password is present4877 #password4878 does not validate the presence of password if username is nil4879 validates the presence of password if username is present4880 when integration is inactive4881 is expected not to validate that :build_type cannot be empty/falsy4882 is expected not to validate that :teamcity_url cannot be empty/falsy4883 is expected not to validate that :username cannot be empty/falsy4884 is expected not to validate that :password cannot be empty/falsy4885 Callbacks4886 before_validation :reset_password4887 saves password if new url is set together with password when no password was previously set4888 when a password was previously set4889 resets password if url changed4890 does not reset password if username changed4891 does not reset password if new url is set together with password, even if it's the same password4892 #build_page4893 returns the contents of the reactive cache4894 #commit_status4895 returns the contents of the reactive cache4896 #calculate_reactive_cache4897 build_page4898 returns a specific URL when status is 5004899 returns a build URL when teamcity_url has no trailing slash4900 returns the teamcity_url when teamcity is unreachable4901 teamcity_url has trailing slash4902 returns a build URL4903 commit_status4904 sets commit status to :error when status is 5004905 sets commit status to "pending" when status is 4044906 sets commit status to "success" when build status contains SUCCESS4907 sets commit status to "failed" when build status contains FAILURE4908 sets commit status to "pending" when build status contains Pending4909 sets commit status to :error when build status is unknown4910 sets commit status to :error when teamcity is unreachable4911 #execute4912 returns nil when event is not supported4913 when push4914 handles push request correctly4915 returns nil when ref is blank4916 returns nil when there is no content4917 returns nil when a merge request is opened for the same ref4918 when merge_request4919 handles merge request correctly4920 returns nil when merge request is not opened4921 returns nil unless merge request is marked as unchecked4922API::Helpers4923 #current_user4924 handles sticking when a user could be found4925 does not handle sticking if no user could be found4926 returns the user if one could be found4927 #find_project4928 when ID is used as an argument4929 behaves like project finder4930 when project exists4931 returns requested project4932 returns nil4933 when project id is not provided4934 returns nil4935 when PATH is used as an argument4936 behaves like project finder4937 when project exists4938 returns requested project4939 returns nil4940 when project id is not provided4941 returns nil4942 with an invalid PATH4943 does not hit the database4944 behaves like project finder4945 when project exists4946 returns requested project4947 returns nil4948 when project id is not provided4949 returns nil4950 when project is pending delete4951 does not return the project pending delete4952 when project is hidden4953 does not return the hidden project4954 #find_project!4955 when user is authenticated4956 public project4957 returns requested project4958 private project4959 behaves like private project without access4960 returns not found4961 when user is not authenticated4962 public project4963 returns requested project4964 private project4965 behaves like private project without access4966 returns not found4967 support for IDs and paths as argument4968 when ID is used as an argument4969 behaves like project finder4970 when project exists4971 returns requested project4972 returns nil4973 when PATH is used as an argument4974 behaves like project finder4975 when project exists4976 returns requested project4977 returns nil4978 with an invalid PATH4979 does not hit the database4980 behaves like project finder4981 when project exists4982 returns requested project4983 returns nil4984 #find_group!4985 when user is authenticated4986 public group4987 returns requested group4988 private group4989 behaves like private group without access4990 returns not found4991 when user is not authenticated4992 public group4993 returns requested group4994 private group4995 behaves like private group without access4996 returns not found4997 support for IDs and paths as arguments4998 when ID is used as an argument4999 behaves like group finder5000 when group exists5001 returns requested group5002 returns nil5003 when PATH is used as an argument5004 behaves like group finder5005 when group exists5006 returns requested group5007 returns nil5008 #find_group_by_full_path!5009 when user is authenticated5010 public group5011 returns requested group5012 private group5013 behaves like private group without access5014 returns not found5015 with access5016 returns requested group with access5017 when user is not authenticated5018 public group5019 returns requested group5020 private group5021 behaves like private group without access5022 returns not found5023 #find_namespace5024 when ID is used as an argument5025 behaves like namespace finder5026 when namespace exists5027 returns requested namespace5028 when namespace doesn't exists5029 returns nil5030 when PATH is used as an argument5031 behaves like namespace finder5032 when namespace exists5033 returns requested namespace5034 when namespace doesn't exists5035 returns nil5036 #find_namespace!5037 behaves like user namespace finder5038 when namespace is group5039 when user has access to group5040 returns requested namespace5041 when user doesn't have access to group5042 raises not found error5043 when namespace is user's personal namespace5044 when user owns the namespace5045 returns requested namespace5046 when user doesn't own the namespace5047 raises not found error5048 #authorized_project_scope?5049 job_token_authentication: false, route_setting: false, feature_flag: false, same_job_project: false, expected_result: true5050 returns the expected result5051 job_token_authentication: false, route_setting: false, feature_flag: false, same_job_project: true, expected_result: true5052 returns the expected result5053 job_token_authentication: false, route_setting: false, feature_flag: true, same_job_project: false, expected_result: true5054 returns the expected result5055 job_token_authentication: false, route_setting: false, feature_flag: true, same_job_project: true, expected_result: true5056 returns the expected result5057 job_token_authentication: false, route_setting: true, feature_flag: false, same_job_project: false, expected_result: true5058 returns the expected result5059 job_token_authentication: false, route_setting: true, feature_flag: false, same_job_project: true, expected_result: true5060 returns the expected result5061 job_token_authentication: false, route_setting: true, feature_flag: true, same_job_project: false, expected_result: true5062 returns the expected result5063 job_token_authentication: false, route_setting: true, feature_flag: true, same_job_project: true, expected_result: true5064 returns the expected result5065 job_token_authentication: true, route_setting: false, feature_flag: false, same_job_project: false, expected_result: true5066 returns the expected result5067 job_token_authentication: true, route_setting: false, feature_flag: false, same_job_project: true, expected_result: true5068 returns the expected result5069 job_token_authentication: true, route_setting: false, feature_flag: true, same_job_project: false, expected_result: true5070 returns the expected result5071 job_token_authentication: true, route_setting: false, feature_flag: true, same_job_project: true, expected_result: true5072 returns the expected result5073 job_token_authentication: true, route_setting: true, feature_flag: false, same_job_project: false, expected_result: false5074 returns the expected result5075 job_token_authentication: true, route_setting: true, feature_flag: false, same_job_project: true, expected_result: false5076 returns the expected result5077 job_token_authentication: true, route_setting: true, feature_flag: true, same_job_project: false, expected_result: false5078 returns the expected result5079 job_token_authentication: true, route_setting: true, feature_flag: true, same_job_project: true, expected_result: true5080 returns the expected result5081 #send_git_blob5082 sets Gitlab::Workhorse::DETECT_HEADER header5083 content disposition5084 when blob name is null5085 returns only the disposition5086 when blob name is not null5087 returns disposition with the blob name5088 #increment_unique_values5089 tracks redis hll event5090 logs an exception for unknown event5091 does not track event for nil values5092 #order_options_with_tie_breaker5093 with non-id order given5094 with ascending order5095 adds id based ordering with same direction as primary order5096 with descending order5097 adds id based ordering with same direction as primary order5098 with non-id order but no direction given5099 adds ID ASC order5100 with id order given5101 does not add an additional order5102 with created_at order given5103 converts to id5104 #destroy_conditionally!5105 when unmodified check passes5106 destroys given project5107 when unmodified check fails5108 does not destroy given project5109 #check_unmodified_since!5110 when last modified is later than header value5111 renders error5112 when last modified is earlier than header value5113 does not render error5114 when last modified is equal to header value5115 does not render error5116 when there is no header value present5117 does not render error5118 when header value is not a valid time value5119 does not render error5120 #present_disk_file!5121 with X-Sendfile supported5122 sends the file using X-Sendfile5123 without X-Sendfile supported5124 sends the file5125 #order_by_similarity?5126 params: {}, allow_unauthorized: false, current_user_set: false, expected: false5127 returns the expected result5128 params: {}, allow_unauthorized: true, current_user_set: false, expected: false5129 returns the expected result5130 params: {}, allow_unauthorized: false, current_user_set: true, expected: false5131 returns the expected result5132 params: {}, allow_unauthorized: true, current_user_set: true, expected: false5133 returns the expected result5134 params: {:order_by=>"similarity"}, allow_unauthorized: false, current_user_set: false, expected: false5135 returns the expected result5136 params: {:order_by=>"similarity"}, allow_unauthorized: true, current_user_set: false, expected: false5137 returns the expected result5138 params: {:order_by=>"similarity"}, allow_unauthorized: true, current_user_set: true, expected: false5139 returns the expected result5140 params: {:order_by=>"similarity"}, allow_unauthorized: false, current_user_set: true, expected: false5141 returns the expected result5142 params: {:search=>"test"}, allow_unauthorized: false, current_user_set: false, expected: false5143 returns the expected result5144 params: {:search=>"test"}, allow_unauthorized: true, current_user_set: false, expected: false5145 returns the expected result5146 params: {:search=>"test"}, allow_unauthorized: true, current_user_set: true, expected: false5147 returns the expected result5148 params: {:search=>"test"}, allow_unauthorized: false, current_user_set: true, expected: false5149 returns the expected result5150 params: {:order_by=>"similarity", :search=>"test"}, allow_unauthorized: false, current_user_set: false, expected: false5151 returns the expected result5152 params: {:order_by=>"similarity", :search=>"test"}, allow_unauthorized: true, current_user_set: false, expected: true5153 returns the expected result5154 params: {:order_by=>"similarity", :search=>"test"}, allow_unauthorized: true, current_user_set: true, expected: true5155 returns the expected result5156 params: {:order_by=>"similarity", :search=>"test"}, allow_unauthorized: false, current_user_set: true, expected: true5157 returns the expected result5158 #render_api_error_with_reason!5159 renders error with code5160 #unauthorized!5161 renders 4015162 renders 401 with a reason5163 #forbidden!5164 renders 4015165 renders 401 with a reason5166 #bad_request!5167 renders 4005168 renders 401 with a reason5169MergeRequestPresenter5170 #mergeable_discussions_state5171 when change_response_code_merge_status is enabled5172 returns the mergeable_discussions_state5173 when change_response_code_merge_status is disabled5174 when it is not mergeable5175 returns false5176 when it is mergeable5177 returns the mergeable_discussions_state5178 #ci_status5179 when no head pipeline5180 return status from Ci integration5181 when head pipeline present5182 success with warnings5183 returns "success-with-warnings"5184 pipeline HAS status AND its not success with warnings5185 returns pipeline status5186 pipeline has NO status AND its not success with warnings5187 returns "preparing"5188 #conflict_resolution_path5189 when MR cannot be resolved in UI5190 does not return conflict resolution path5191 when conflicts cannot be resolved by user5192 does not return conflict resolution path5193 when able to access conflict resolution UI5194 does return conflict resolution path5195 issues links5196 #closing_issues_links5197 presents closing issues links5198 does not present related issues links5199 appends status when closing issue is already closed5200 #mentioned_issues_links5201 presents related issues links5202 does not present closing issues links5203 appends status when mentioned issue is already closed5204 #assign_to_closing_issues_path5205 is expected to match "user872/project1403/-/merge_requests/1/assign_related_issues"5206 #assign_to_closing_issues_count5207 single closing issue5208 returns correct count5209 multiple closing issues5210 returns correct count5211 no closing issue5212 returns correct count5213 #cancel_auto_merge_path5214 when can cancel mwps5215 returns path5216 when cannot cancel mwps5217 returns nil5218 #merge_path5219 when can be merged by user5220 returns path5221 when cannot be merged by user5222 returns nil5223 #create_issue_to_resolve_discussions_path5224 when can create issue and issues enabled5225 returns path5226 when cannot create issue5227 returns nil5228 when issues disabled5229 returns nil5230 #remove_wip_path5231 when merge request enabled and has permission5232 has remove_wip_path5233 when has no permission5234 returns nil5235 #target_branch_commits_path5236 when target branch exists5237 returns path5238 when target branch does not exist5239 returns nil5240 #source_branch_commits_path5241 when source branch exists5242 returns path5243 when source branch does not exist5244 returns nil5245 #target_branch_tree_path5246 when target branch exists5247 returns path5248 when target branch does not exist5249 returns nil5250 #source_branch_path5251 when source branch exists5252 returns path5253 when source branch does not exist5254 returns nil5255 #target_branch_path5256 when target branch exists5257 returns path5258 when target branch does not exist5259 returns nil5260 #source_branch_link5261 when source branch exists5262 returns link5263 when source branch does not exist5264 returns text5265 #target_branch_link5266 when target branch exists5267 returns link5268 when target branch does not exist5269 returns text5270 #source_branch_with_namespace_link5271 returns link5272 escapes html, when source_branch does not exist5273 #rebase_path5274 when can rebase5275 returns path5276 when cannot rebase5277 when rebase in progress5278 returns nil5279 when user cannot merge5280 returns nil5281 should not be rebased5282 returns nil5283 #can_push_to_source_branch5284 when source branch exists AND user can push to source branch5285 returns true5286 when source branch does not exists5287 returns false5288 when user cannot push to source branch5289 returns false5290 #api_approvals_path5291 is expected to eq "/api/v4/projects/1220/merge_requests/1/approvals"5292 #api_approve_path5293 is expected to eq "/api/v4/projects/1220/merge_requests/1/approve"5294 #api_unapprove_path5295 is expected to eq "/api/v4/projects/1220/merge_requests/1/unapprove"5296 #pipeline_coverage_delta5297 when merge request has pipeline coverage delta5298 formats coverage into 2 decimal points5299 when merge request does not have pipeline coverage delta5300 returns nil5301Types::ProjectType5302 is expected to expose permissions using Types::PermissionTypes::Project5303 is expected to eq "Project"5304 is expected to require graphql authorizations :read_project5305 has the expected fields5306 count5307 returns valid projects count5308 container_registry_enabled5309 with `enabled` visibility5310 with non member user5311 returns true5312 with `private` visibility5313 with reporter user5314 returns true5315 with guest user5316 returns false5317 sast_ci_configuration5318 returns the project's sast configuration for global variables5319 returns the project's sast configuration for pipeline variables5320 returns the project's sast configuration for analyzer variables5321 with guest user5322 when project is private5323 returns no configuration5324 when project is public5325 when repository is accessible by everyone5326 returns the project's sast configuration for global variables5327 with non-member user5328 when project is private5329 returns no configuration5330 when project is public5331 when repository is accessible by everyone5332 returns the project's sast configuration for global variables5333 when repository is accessible only by team members5334 returns no configuration5335 issue field5336 is expected to have graphql type Types::IssueType5337 is expected to have graphql resolver #<Class:0x00007f9a4c5ac420>5338 issues field5339 is expected to have graphql type Types::IssueConnection5340 is expected to have graphql resolver Resolvers::IssuesResolver5341 merge_request field5342 is expected to have graphql type Types::MergeRequestType5343 is expected to have graphql resolver Resolvers::MergeRequestResolver5344 is expected to have graphql arguments :iid5345 merge_requests field5346 is expected to have graphql type #<Class:0x00007f9a4d4c49a8>5347 is expected to have graphql resolver Resolvers::ProjectMergeRequestsResolver5348 is expected to have graphql arguments :iids, :source_branches, :target_branches, :state, :draft, :labels, :before, :after, :first, :last, :merged_after, :merged_before, :created_after, :created_before, :updated_after, :updated_before, :author_username, :assignee_username, :reviewer_username, :milestone_title, :not, and :sort5349 pipelineCounts field5350 is expected to have graphql type Types::Ci::PipelineCountsType5351 is expected to have graphql resolver Resolvers::Ci::ProjectPipelineCountsResolver5352 snippets field5353 is expected to have graphql type #<Class:0x00007f9a4c859e48>5354 is expected to have graphql resolver Resolvers::Projects::SnippetsResolver5355 grafana_integration field5356 is expected to have graphql type Types::GrafanaIntegrationType5357 is expected to have graphql resolver Resolvers::Projects::GrafanaIntegrationResolver5358 environments field5359 is expected to have graphql type #<Class:0x00007f9a4c5ef270>5360 is expected to have graphql resolver Resolvers::EnvironmentsResolver5361 environment field5362 is expected to have graphql type Types::EnvironmentType5363 is expected to have graphql resolver #<Class:0x00007f9a4c5adf78>5364 members field5365 is expected to have graphql type #<Class:0x00007f9a4d2cf4e0>5366 is expected to have graphql resolver Resolvers::ProjectMembersResolver5367 boards field5368 is expected to have graphql type #<Class:0x00007f9a4d2ed8a0>5369 jira_imports field5370 is expected to have graphql type #<Class:0x00007f9a4c4125b0>5371 services field5372 is expected to have graphql type #<Class:0x00007f9a4c2313b8>5373 releases field5374 is expected to have graphql type Types::ReleaseType5375 is expected to have graphql resolver Resolvers::ReleaseResolver5376 release field5377 is expected to have graphql type #<Class:0x00007f9a4dd0a1d0>5378 is expected to have graphql resolver Resolvers::ReleasesResolver5379 container expiration policy field5380 is expected to have graphql type Types::ContainerExpirationPolicyType5381 packages cleanup policy field5382 is expected to have graphql type Types::Packages::Cleanup::PolicyType5383 terraform state field5384 is expected to have graphql type Types::Terraform::StateType5385 is expected to have graphql resolver #<Class:0x00007f9a4c166730>5386 terraform states field5387 is expected to have graphql type #<Class:0x00007f9a4c167630>5388 is expected to have graphql resolver Resolvers::Terraform::StatesResolver5389 timelogs field5390 finds timelogs for project5391 behaves like a GraphQL type with labels5392 has label fields5393 label field5394 is expected to have graphql type Types::LabelType5395 is expected to have graphql arguments :title5396 labels field5397 is expected to have graphql type #<Class:0x00007f9a4de44208>5398 is expected to have graphql arguments :search_term and :includeAncestorGroups5399 jira_imports5400 when project has Jira imports5401 retrieves the imports5402 when project does not have Jira imports5403 returns an empty result5404 pipeline_analytics field5405 is expected to have graphql type Types::Ci::AnalyticsType5406 is expected to have graphql resolver Resolvers::ProjectPipelineStatisticsResolver5407 jobs field5408 is expected to have graphql type #<Class:0x00007f9a44ce35c0>5409 is expected to have graphql arguments :statuses5410 ci_template field5411 is expected to have graphql type Types::Ci::TemplateType5412 is expected to have graphql arguments :name5413 ci_job_token_scope field5414 is expected to have graphql type Types::Ci::JobTokenScopeType5415 is expected to have graphql resolver Resolvers::Ci::JobTokenScopeResolver5416 agent_configurations5417 returns configured agents5418 cluster_agents5419 returns associated cluster agents5420 returns count of cluster agents5421 cluster_agent5422 returns associated cluster agents5423 returns count of agent tokens5424 service_desk_address5425 when a user can admin issues5426 is present5427 when a user can not admin issues5428 is empty5429Banzai::ColorParser5430 .parse5431 HEX format5432 parses the valid hex color #abc5433 parses the valid hex color #ABC5434 parses the valid hex color #d2d2d25435 parses the valid hex color #D2D2D25436 parses the valid hex color #123a5437 parses the valid hex color #123A5438 parses the valid hex color #123456aa5439 parses the valid hex color #123456AA5440 does not parse the invalid hex color #5441 does not parse the invalid hex color #15442 does not parse the invalid hex color #125443 does not parse the invalid hex color #12g5444 does not parse the invalid hex color #12G5445 does not parse the invalid hex color #123455446 does not parse the invalid hex color #r2r2r25447 does not parse the invalid hex color #R2R2R25448 does not parse the invalid hex color #12345675449 does not parse the invalid hex color # 1235450 does not parse the invalid hex color # 12345451 does not parse the invalid hex color # 1234565452 does not parse the invalid hex color # 123456785453 does not parse the invalid hex color #1 2 35454 does not parse the invalid hex color #123 45455 does not parse the invalid hex color #12 34 565456 does not parse the invalid hex color #123456 785457 RGB format5458 parses the valid rgb color rgb(0,0,0)5459 parses the valid rgb color rgb(255,255,255)5460 parses the valid rgb color rgb(0, 0, 0)5461 parses the valid rgb color RGB(0,0,0)5462 parses the valid rgb color rgb(0,0,0,0)5463 parses the valid rgb color rgb(0,0,0,0.0)5464 parses the valid rgb color rgb(0,0,0,.0)5465 parses the valid rgb color rgb(0,0,0, 0)5466 parses the valid rgb color rgb(0,0,0, 0.0)5467 parses the valid rgb color rgb(0,0,0, .0)5468 parses the valid rgb color rgb(0,0,0,1)5469 parses the valid rgb color rgb(0,0,0,1.0)5470 parses the valid rgb color rgba(0,0,0)5471 parses the valid rgb color rgba(0,0,0,0)5472 parses the valid rgb color RGBA(0,0,0)5473 parses the valid rgb color rgb(0%,0%,0%)5474 parses the valid rgb color rgba(0%,0%,0%,0%)5475 does not parse the invalid rgb color FOOrgb(0,0,0)5476 does not parse the invalid rgb color rgb(0,0,0)BAR5477 does not parse the invalid rgb color rgb(0,0,-1)5478 does not parse the invalid rgb color rgb(0,0,-0)5479 does not parse the invalid rgb color rgb(0,0,256)5480 does not parse the invalid rgb color rgb(0,0,0,-0.1)5481 does not parse the invalid rgb color rgb(0,0,0,-0.0)5482 does not parse the invalid rgb color rgb(0,0,0,-.1)5483 does not parse the invalid rgb color rgb(0,0,0,1.1)5484 does not parse the invalid rgb color rgb(0,0,0,2)5485 does not parse the invalid rgb color rgba(0,0,0,)5486 does not parse the invalid rgb color rgba(0,0,0,0.)5487 does not parse the invalid rgb color rgba(0,0,0,1.)5488 does not parse the invalid rgb color rgb(0,0,0%)5489 does not parse the invalid rgb color rgb(101%,0%,0%)5490 HSL format5491 parses the valid hsl color hsl(0,0%,0%)5492 parses the valid hsl color hsl(0,100%,100%)5493 parses the valid hsl color hsl(540,0%,0%)5494 parses the valid hsl color hsl(-720,0%,0%)5495 parses the valid hsl color hsl(0deg,0%,0%)5496 parses the valid hsl color hsl(0DEG,0%,0%)5497 parses the valid hsl color hsl(0, 0%, 0%)5498 parses the valid hsl color HSL(0,0%,0%)5499 parses the valid hsl color hsl(0,0%,0%,0)5500 parses the valid hsl color hsl(0,0%,0%,0.0)5501 parses the valid hsl color hsl(0,0%,0%,.0)5502 parses the valid hsl color hsl(0,0%,0%, 0)5503 parses the valid hsl color hsl(0,0%,0%, 0.0)5504 parses the valid hsl color hsl(0,0%,0%, .0)5505 parses the valid hsl color hsl(0,0%,0%,1)5506 parses the valid hsl color hsl(0,0%,0%,1.0)5507 parses the valid hsl color hsla(0,0%,0%)5508 parses the valid hsl color hsla(0,0%,0%,0)5509 parses the valid hsl color HSLA(0,0%,0%)5510 parses the valid hsl color hsl(1rad,0%,0%)5511 parses the valid hsl color hsl(1.1rad,0%,0%)5512 parses the valid hsl color hsl(.1rad,0%,0%)5513 parses the valid hsl color hsl(-1rad,0%,0%)5514 parses the valid hsl color hsl(1RAD,0%,0%)5515 does not parse the invalid hsl color hsl(+0,0%,0%)5516 does not parse the invalid hsl color hsl(0,0,0%)5517 does not parse the invalid hsl color hsl(0,0%,0)5518 does not parse the invalid hsl color hsl(0 deg,0%,0%)5519 does not parse the invalid hsl color hsl(0,-0%,0%)5520 does not parse the invalid hsl color hsl(0,101%,0%)5521 does not parse the invalid hsl color hsl(0,-1%,0%)5522 does not parse the invalid hsl color hsl(0,0%,0%,-0.1)5523 does not parse the invalid hsl color hsl(0,0%,0%,-.1)5524 does not parse the invalid hsl color hsl(0,0%,0%,1.1)5525 does not parse the invalid hsl color hsl(0,0%,0%,2)5526 does not parse the invalid hsl color hsl(0,0%,0%,)5527 does not parse the invalid hsl color hsl(0,0%,0%,0.)5528 does not parse the invalid hsl color hsl(0,0%,0%,1.)5529 does not parse the invalid hsl color hsl(deg,0%,0%)5530 does not parse the invalid hsl color hsl(rad,0%,0%)5531Gitlab::Database::BackgroundMigration::BatchedMigrationRunner5532 #run_migration_job5533 when the migration has no previous jobs5534 when the migration has batches to process5535 runs the job for the first batch5536 optimizes the migration after executing the job5537 when the batch maximum exceeds the migration maximum5538 clamps the batch maximum to the migration maximum5539 when the migration has no batches to process5540 behaves like it has completed the migration5541 does not create and run a migration job5542 marks the migration as finished5543 when the migration should stop5544 changes the status to failure5545 when the migration has previous jobs5546 when the migration has no batches remaining5547 behaves like it has completed the migration5548 does not create and run a migration job5549 marks the migration as finished5550 when the migration has batches to process5551 runs the migration job for the next batch5552 when the batch minimum exceeds the migration maximum5553 behaves like it has completed the migration5554 does not create and run a migration job5555 marks the migration as finished5556 when migration has failed jobs5557 retries the failed job5558 when failed job has reached the maximum number of attempts5559 marks the migration as failed5560 when migration has stuck jobs5561 retries the stuck job5562 when migration has possible stuck jobs5563 keeps the migration active5564 when the migration has batches to process and failed jobs5565 runs next batch then retries the failed job5566 #run_entire_migration5567 when not in a development or test environment5568 raises an error5569 when the given migration is not active5570 does not create and run migration jobs5571 when the given migration is active5572 runs all jobs inline until finishing the migration5573 #finalize5574 when the migration is not yet completed5575-- drop_table(:_test_batched_migrations_test_table, {:if_exists=>true})5576 -> 0.0014s5577-- create_table(:_test_batched_migrations_test_table, {:id=>false})5578 -> 0.0341s5579-- execute("INSERT INTO _test_batched_migrations_test_table VALUES (1, 1), (2, 2), (3, NULL), (4, NULL), (5, NULL), (6, NULL), (7, NULL), (8, NULL)")5580 -> 0.0016s5581-- execute("SELECT * FROM _test_batched_migrations_test_table WHERE some_id_convert_to_bigint IS NULL")5582 -> 0.0015s5583-- drop_table(:_test_batched_migrations_test_table, {:if_exists=>true})5584 -> 0.0033s5585 completes the migration5586 when migration fails to complete5587-- drop_table(:_test_batched_migrations_test_table, {:if_exists=>true})5588 -> 0.0014s5589-- create_table(:_test_batched_migrations_test_table, {:id=>false})5590 -> 0.0031s5591-- execute("INSERT INTO _test_batched_migrations_test_table VALUES (1, 1), (2, 2), (3, NULL), (4, NULL), (5, NULL), (6, NULL), (7, NULL), (8, NULL)")5592 -> 0.0016s5593-- drop_table(:_test_batched_migrations_test_table, {:if_exists=>true})5594 -> 0.0019s5595 raises an error5596 when the migration is already finished5597-- drop_table(:_test_batched_migrations_test_table, {:if_exists=>true})5598 -> 0.0016s5599-- create_table(:_test_batched_migrations_test_table, {:id=>false})5600 -> 0.0034s5601-- execute("INSERT INTO _test_batched_migrations_test_table VALUES (1, 1), (2, 2), (3, NULL), (4, NULL), (5, NULL), (6, NULL), (7, NULL), (8, NULL)")5602 -> 0.0019s5603-- drop_table(:_test_batched_migrations_test_table, {:if_exists=>true})5604 -> 0.0032s5605 is a no-op5606 when the migration does not exist5607-- drop_table(:_test_batched_migrations_test_table, {:if_exists=>true})5608 -> 0.0017s5609-- create_table(:_test_batched_migrations_test_table, {:id=>false})5610 -> 0.0034s5611-- execute("INSERT INTO _test_batched_migrations_test_table VALUES (1, 1), (2, 2), (3, NULL), (4, NULL), (5, NULL), (6, NULL), (7, NULL), (8, NULL)")5612 -> 0.0019s5613-- drop_table(:_test_batched_migrations_test_table, {:if_exists=>true})5614 -> 0.0023s5615 is a no-op5616 .finalize5617 when the connection is passed5618 initializes the object with the given connection5619GroupDescendantsFinder5620 #has_children?5621 is true when there are projects5622 when there are subgroups5623 is true when there are projects5624 #execute5625 includes projects5626 does not include archived projects5627 does not include projects aimed for deletion5628 sorts elements by name as default5629 does not include projects shared with the group5630 when archived is `true`5631 includes archived projects5632 when archived is `only`5633 includes only archived projects5634 with a filter5635 includes only projects matching the filter5636 sorting by name5637 sorts elements by name5638 with nested groups5639 sorts elements by name5640 with shared groups5641 without common ancestor5642 is expected to be empty5643 with common ancestor5644 querying under the common ancestor5645 is expected to be empty5646 querying the common ancestor5647 contains shared subgroups5648 with nested groups5649 #execute5650 contains projects and subgroups5651 does not include subgroups the user does not have access to5652 only includes public groups when no user is given5653 when archived is `true`5654 includes archived projects in the count of subgroups5655 with a filter5656 behaves like filter examples5657 contains only matching projects and subgroups5658 does not include subgroups the user does not have access to5659 with matching children5660 includes a group that has a subgroup matching the query and its parent5661 includes the parent of a matching project5662 does not include the parent itself5663 with a small page size5664 contains all the ancestors of a matching subgroup regardless the page size5665 when feature flag :linear_group_descendants_finder_upto is disabled5666 behaves like filter examples5667 contains only matching projects and subgroups5668 does not include subgroups the user does not have access to5669 with matching children5670 includes a group that has a subgroup matching the query and its parent5671 includes the parent of a matching project5672 does not include the parent itself5673 with a small page size5674 contains all the ancestors of a matching subgroup regardless the page size5675Git::ProcessRefChangesService5676 branch changes5677 behaves like service for processing ref changes5678 calls Git::BranchPushService5679 changes exceed push_event_hooks_limit5680 calls Git::BranchPushService with execute_project_hooks set to false5681 changes exceed push_event_activities_limit per action5682 calls Git::BranchPushService with create_push_event set to false5683 creates events per action5684 pipeline creation5685 with valid .gitlab-ci.yml5686 when git_push_create_all_pipelines is disabled5687 creates pipeline for branches and tags5688 creates exactly 4 pipelines5689 when git_push_create_all_pipelines is enabled5690 creates all pipelines5691 with invalid .gitlab-ci.yml5692 does not create a pipeline5693 housekeeping5694 does not perform housekeeping when not needed5695 increments the push counter5696 when housekeeping is needed5697 performs housekeeping5698 does not raise an exception5699 when there are merge requests associated with branches5700 schedules job for existing merge requests5701 tag changes5702 behaves like service for processing ref changes5703 calls Git::TagPushService5704 changes exceed push_event_hooks_limit5705 calls Git::TagPushService with execute_project_hooks set to false5706 changes exceed push_event_activities_limit per action5707 calls Git::TagPushService with create_push_event set to false5708 creates events per action5709 pipeline creation5710 with valid .gitlab-ci.yml5711 when git_push_create_all_pipelines is disabled5712 creates pipeline for branches and tags5713 creates exactly 4 pipelines5714 when git_push_create_all_pipelines is enabled5715 creates all pipelines5716 with invalid .gitlab-ci.yml5717 does not create a pipeline5718 housekeeping5719 does not perform housekeeping when not needed5720 increments the push counter5721 when housekeeping is needed5722 performs housekeeping5723 does not raise an exception5724Gitlab::Ci::Status::Stage::Factory5725 when stage has a core status5726 when core status is created5727 fabricates a core status created5728 extends core status with common stage methods5729 when core status is waiting_for_resource5730 fabricates a core status waiting_for_resource5731 extends core status with common stage methods5732 when core status is preparing5733 fabricates a core status preparing5734 extends core status with common stage methods5735 when core status is pending5736 fabricates a core status pending5737 extends core status with common stage methods5738 when core status is running5739 fabricates a core status running5740 extends core status with common stage methods5741 when core status is success5742 fabricates a core status success5743 extends core status with common stage methods5744 when core status is failed5745 fabricates a core status failed5746 extends core status with common stage methods5747 when core status is canceled5748 fabricates a core status canceled5749 extends core status with common stage methods5750 when stage has warnings5751 fabricates extended "success with warnings" status5752 extends core status with common stage method5753 when stage has manual builds5754 when status is manual5755 fabricates a play manual status5756 when status is scheduled5757 fabricates a play manual status5758 when status is skipped5759 fabricates a play manual status5760Gitlab::Usage::MetricDefinition5761 has all definitons valid5762 not_removed5763 includes metrics that are not removed5764 #with_instrumentation_class5765 includes definitions with instrumentation_class5766 with removed metric5767 excludes removed definitions5768 #key5769 returns a symbol from name5770 #validate5771 attribute: :description, value: nil5772 raise exception5773 with skip_validation5774 raise exception if skip_validation: false5775 does not raise exception if has skip_validation: true5776 attribute: :value_type, value: nil5777 raise exception5778 with skip_validation5779 raise exception if skip_validation: false5780 does not raise exception if has skip_validation: true5781 attribute: :value_type, value: "test"5782 raise exception5783 with skip_validation5784 raise exception if skip_validation: false5785 does not raise exception if has skip_validation: true5786 attribute: :status, value: nil5787 raise exception5788 with skip_validation5789 raise exception if skip_validation: false5790 does not raise exception if has skip_validation: true5791 attribute: :milestone, value: nil5792 raise exception5793 with skip_validation5794 raise exception if skip_validation: false5795 does not raise exception if has skip_validation: true5796 attribute: :data_category, value: nil5797 raise exception5798 with skip_validation5799 raise exception if skip_validation: false5800 does not raise exception if has skip_validation: true5801 attribute: :key_path, value: nil5802 raise exception5803 with skip_validation5804 raise exception if skip_validation: false5805 does not raise exception if has skip_validation: true5806 attribute: :product_group, value: nil5807 raise exception5808 with skip_validation5809 raise exception if skip_validation: false5810 does not raise exception if has skip_validation: true5811 attribute: :time_frame, value: nil5812 raise exception5813 with skip_validation5814 raise exception if skip_validation: false5815 does not raise exception if has skip_validation: true5816 attribute: :time_frame, value: "29d"5817 raise exception5818 with skip_validation5819 raise exception if skip_validation: false5820 does not raise exception if has skip_validation: true5821 attribute: :data_source, value: "other"5822 raise exception5823 with skip_validation5824 raise exception if skip_validation: false5825 does not raise exception if has skip_validation: true5826 attribute: :data_source, value: nil5827 raise exception5828 with skip_validation5829 raise exception if skip_validation: false5830 does not raise exception if has skip_validation: true5831 attribute: :distribution, value: nil5832 raise exception5833 with skip_validation5834 raise exception if skip_validation: false5835 does not raise exception if has skip_validation: true5836 attribute: :distribution, value: "test"5837 raise exception5838 with skip_validation5839 raise exception if skip_validation: false5840 does not raise exception if has skip_validation: true5841 attribute: :tier, value: ["test", "ee"]5842 raise exception5843 with skip_validation5844 raise exception if skip_validation: false5845 does not raise exception if has skip_validation: true5846 attribute: :name, value: "count_<adjective_describing>_boards"5847 raise exception5848 with skip_validation5849 raise exception if skip_validation: false5850 does not raise exception if has skip_validation: true5851 attribute: :repair_issue_url, value: nil5852 raise exception5853 with skip_validation5854 raise exception if skip_validation: false5855 does not raise exception if has skip_validation: true5856 attribute: :removed_by_url, value: 15857 raise exception5858 with skip_validation5859 raise exception if skip_validation: false5860 does not raise exception if has skip_validation: true5861 attribute: :instrumentation_class, value: "Metric_Class"5862 raise exception5863 with skip_validation5864 raise exception if skip_validation: false5865 does not raise exception if has skip_validation: true5866 attribute: :instrumentation_class, value: "metricClass"5867 raise exception5868 with skip_validation5869 raise exception if skip_validation: false5870 does not raise exception if has skip_validation: true5871 conditional validations5872 when metric has broken status5873 has to have repair issue url provided5874 #valid_service_ping_status?5875 when metric has active status5876 has to return true5877 when metric has removed status5878 has to return false5879 statuses5880 status: "deprecated", skip_validation?: true5881 returns true/false for skip_validation5882 status: "removed", skip_validation?: true5883 returns true/false for skip_validation5884 status: "active", skip_validation?: false5885 returns true/false for skip_validation5886 .load_all!5887 has empty list when there are no definition files5888 has one metric when there is one file5889 when the same metric is defined multiple times raises exception5890 dump_metrics_yaml5891 returns a YAML with both metrics in a sequence5892Ci::BuildPresenter5893 inherits from Gitlab::View::Presenter::Delegated5894 #initialize5895 takes a build and optional params5896 exposes build5897 forwards missing methods to build5898 #erased_by_user?5899 takes a build and optional params5900 #erased_by_name5901 when build is not erased5902 returns nil5903 when build is erased5904 returns the name of the eraser5905 #status_title5906 when build is auto-canceled5907 shows that the build is auto-canceled5908 when build failed5909 returns the reason of failure5910 when build has failed && retried5911 does not include retried title5912 when build has failed and is allowed to5913 returns the reason of failure5914 For any other build5915 returns the status5916 quack like a Ci::Build permission-wise5917 user is not allowed5918 returns false5919 user is allowed5920 returns true5921 #trigger_variables5922 when variable is stored in ci_pipeline_variables5923 when pipeline is triggered by trigger API5924 returns variables5925 when pipeline is not triggered by trigger API5926 does not return variables5927 when variable is stored in ci_trigger_requests.variables5928 returns variables5929 #tooltip_message5930 When build has failed5931 returns the reason of failure5932 When build has failed and retried5933 includes the reason of failure and the retried title5934 When build has failed and is allowed to5935 includes the reason of failure5936 For any other build (no retried)5937 includes build name and status5938 For any other build (retried)5939 includes build name and status5940 #execute_in5941 when build is scheduled5942 when schedule is not expired5943 returns execution time5944 when schedule is expired5945 returns execution time5946 when build is not delayed5947 does not return execution time5948 #callout_failure_message5949 returns a verbose failure reason5950Packages::Debian::DistributionReleaseFileUploader5951 Packages::Debian::ProjectDistribution5952 behaves like builds correct paths5953 #store_dir5954 behaves like matches the method pattern5955 is expected to match /^\h{2}\/\h{2}\/\h{64}\/debian_project_distribution\/\d+$/5956 #cache_dir5957 behaves like matches the method pattern5958 is expected to match /\/packages\/tmp\/cache$/5959 #work_dir5960 behaves like matches the method pattern5961 is expected to match /\/packages\/tmp\/work$/5962 #upload_path5963 behaves like matches the method pattern5964 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)5965 #relative_path5966 is relative (PENDING: Path not set, skipping.)5967 .absolute_path5968 behaves like matches the method pattern5969 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)5970 .base_dir5971 behaves like matches the method pattern5972 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)5973 path traversal exploits5974 throws an exception5975 object store is remote5976 behaves like builds correct paths5977 #store_dir5978 behaves like matches the method pattern5979 is expected to match /^\h{2}\/\h{2}\/\h{64}\/debian_project_distribution\/\d+$/5980 #cache_dir5981 behaves like matches the method pattern5982 is expected to match /\/packages\/tmp\/cache$/5983 #work_dir5984 behaves like matches the method pattern5985 is expected to match /\/packages\/tmp\/work$/5986 #upload_path5987 behaves like matches the method pattern5988 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)5989 #relative_path5990 is relative (PENDING: Path not set, skipping.)5991 .absolute_path5992 behaves like matches the method pattern5993 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)5994 .base_dir5995 behaves like matches the method pattern5996 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)5997 path traversal exploits5998 throws an exception5999 remote file6000 with object storage enabled6001 can store file remotely6002 #filename6003 is expected to eq "Release"6004 with signed_file6005 is expected to eq "InRelease"6006 Packages::Debian::GroupDistribution6007 behaves like builds correct paths6008 #store_dir6009 behaves like matches the method pattern6010 is expected to match /^\h{2}\/\h{2}\/\h{64}\/debian_group_distribution\/\d+$/6011 #cache_dir6012 behaves like matches the method pattern6013 is expected to match /\/packages\/tmp\/cache$/6014 #work_dir6015 behaves like matches the method pattern6016 is expected to match /\/packages\/tmp\/work$/6017 #upload_path6018 behaves like matches the method pattern6019 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6020 #relative_path6021 is relative (PENDING: Path not set, skipping.)6022 .absolute_path6023 behaves like matches the method pattern6024 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6025 .base_dir6026 behaves like matches the method pattern6027 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6028 path traversal exploits6029 throws an exception6030 object store is remote6031 behaves like builds correct paths6032 #store_dir6033 behaves like matches the method pattern6034 is expected to match /^\h{2}\/\h{2}\/\h{64}\/debian_group_distribution\/\d+$/6035 #cache_dir6036 behaves like matches the method pattern6037 is expected to match /\/packages\/tmp\/cache$/6038 #work_dir6039 behaves like matches the method pattern6040 is expected to match /\/packages\/tmp\/work$/6041 #upload_path6042 behaves like matches the method pattern6043 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6044 #relative_path6045 is relative (PENDING: Path not set, skipping.)6046 .absolute_path6047 behaves like matches the method pattern6048 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6049 .base_dir6050 behaves like matches the method pattern6051 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6052 path traversal exploits6053 throws an exception6054 remote file6055 with object storage enabled6056 can store file remotely6057 #filename6058 is expected to eq "Release"6059 with signed_file6060 is expected to eq "InRelease"6061Projects::UpdateRepositoryStorageService6062 #execute6063 without wiki and design repository6064 when the move succeeds6065 moves the repository to the new storage and unmarks the repository as read-only6066 when the filesystems are the same6067 updates the database without trying to move the repostory6068 when the move fails6069 unmarks the repository as read-only without updating the repository storage6070 when the cleanup fails6071 sets the correct state6072 when the checksum does not match6073 unmarks the repository as read-only without updating the repository storage6074 when a object pool was joined6075 leaves the pool6076 when the repository move is finished6077 is idempotent6078 when the repository move is failed6079 is idempotent6080 project with no repositories6081 updates the database6082 with wiki repository6083 when the move succeeds6084 moves the project and its wiki repository to the new storage and unmarks the repository as read-only6085 :repack_after_shard_migration feature flag disabled6086 does not enqueue a GC run6087 :repack_after_shard_migration feature flag enabled6088 does not enqueue a GC run if housekeeping is disabled6089 enqueues a GC run6090 when the filesystems are the same6091 updates the database without trying to move the repostory6092 when the move of the wiki repository fails6093 unmarks the repository as read-only without updating the repository storage6094 when the cleanup of the wiki repository fails6095 sets the correct state6096 when the checksum of the wiki repository does not match6097 unmarks the repository as read-only without updating the repository storage6098 with design repository6099 when the move succeeds6100 moves the project and its design repository to the new storage and unmarks the repository as read-only6101 :repack_after_shard_migration feature flag disabled6102 does not enqueue a GC run6103 :repack_after_shard_migration feature flag enabled6104 does not enqueue a GC run if housekeeping is disabled6105 enqueues a GC run6106 when the filesystems are the same6107 updates the database without trying to move the repostory6108 when the move of the design repository fails6109 unmarks the repository as read-only without updating the repository storage6110 when the cleanup of the design repository fails6111 sets the correct state6112 when the checksum of the design repository does not match6113 unmarks the repository as read-only without updating the repository storage6114Gitlab::Ci::Pipeline::Expression::Lexeme::NotEquals6115 .build6116 with non-evaluable operands6117 creates a new instance of the token6118 with evaluable operands6119 creates a new instance of the token6120 .type6121 is an operator6122 .precedence6123 has a precedence6124 #evaluate6125 when left and right are equal6126 left_value: "string", right_value: "string"6127 is expected to eq false6128 left_value: 1, right_value: 16129 is expected to eq false6130 left_value: "", right_value: ""6131 is expected to eq false6132 left_value: nil, right_value: nil6133 is expected to eq false6134 when left and right are not equal6135 left_value: "one string", right_value: "two string"6136 is expected to eq true6137 left_value: "one string", right_value: 16138 is expected to eq true6139 left_value: "one string", right_value: 26140 is expected to eq true6141 left_value: "one string", right_value: ""6142 is expected to eq true6143 left_value: "one string", right_value: nil6144 is expected to eq true6145 left_value: "one string", right_value: false6146 is expected to eq true6147 left_value: "one string", right_value: true6148 is expected to eq true6149 left_value: "two string", right_value: "one string"6150 is expected to eq true6151 left_value: "two string", right_value: 16152 is expected to eq true6153 left_value: "two string", right_value: 26154 is expected to eq true6155 left_value: "two string", right_value: ""6156 is expected to eq true6157 left_value: "two string", right_value: nil6158 is expected to eq true6159 left_value: "two string", right_value: false6160 is expected to eq true6161 left_value: "two string", right_value: true6162 is expected to eq true6163 left_value: 1, right_value: "one string"6164 is expected to eq true6165 left_value: 1, right_value: "two string"6166 is expected to eq true6167 left_value: 1, right_value: 26168 is expected to eq true6169 left_value: 1, right_value: ""6170 is expected to eq true6171 left_value: 1, right_value: nil6172 is expected to eq true6173 left_value: 1, right_value: false6174 is expected to eq true6175 left_value: 1, right_value: true6176 is expected to eq true6177 left_value: 2, right_value: "one string"6178 is expected to eq true6179 left_value: 2, right_value: "two string"6180 is expected to eq true6181 left_value: 2, right_value: 16182 is expected to eq true6183 left_value: 2, right_value: ""6184 is expected to eq true6185 left_value: 2, right_value: nil6186 is expected to eq true6187 left_value: 2, right_value: false6188 is expected to eq true6189 left_value: 2, right_value: true6190 is expected to eq true6191 left_value: "", right_value: "one string"6192 is expected to eq true6193 left_value: "", right_value: "two string"6194 is expected to eq true6195 left_value: "", right_value: 16196 is expected to eq true6197 left_value: "", right_value: 26198 is expected to eq true6199 left_value: "", right_value: nil6200 is expected to eq true6201 left_value: "", right_value: false6202 is expected to eq true6203 left_value: "", right_value: true6204 is expected to eq true6205 left_value: nil, right_value: "one string"6206 is expected to eq true6207 left_value: nil, right_value: "two string"6208 is expected to eq true6209 left_value: nil, right_value: 16210 is expected to eq true6211 left_value: nil, right_value: 26212 is expected to eq true6213 left_value: nil, right_value: ""6214 is expected to eq true6215 left_value: nil, right_value: false6216 is expected to eq true6217 left_value: nil, right_value: true6218 is expected to eq true6219 left_value: false, right_value: "one string"6220 is expected to eq true6221 left_value: false, right_value: "two string"6222 is expected to eq true6223 left_value: false, right_value: 16224 is expected to eq true6225 left_value: false, right_value: 26226 is expected to eq true6227 left_value: false, right_value: ""6228 is expected to eq true6229 left_value: false, right_value: nil6230 is expected to eq true6231 left_value: false, right_value: true6232 is expected to eq true6233 left_value: true, right_value: "one string"6234 is expected to eq true6235 left_value: true, right_value: "two string"6236 is expected to eq true6237 left_value: true, right_value: 16238 is expected to eq true6239 left_value: true, right_value: 26240 is expected to eq true6241 left_value: true, right_value: ""6242 is expected to eq true6243 left_value: true, right_value: nil6244 is expected to eq true6245 left_value: true, right_value: false6246 is expected to eq true6247Route6248 relationships6249 is expected to belong to source required: false6250 is expected to belong to namespace required: false6251 validations6252 is expected to validate that :source cannot be empty/falsy6253 is expected to validate that :path cannot be empty/falsy6254 is expected to validate that :path is case-insensitively unique6255 callbacks6256 after update6257 calls #create_redirect_for_old_path6258 calls #delete_conflicting_redirects6259 after create6260 calls #delete_conflicting_redirects6261 .inside_path6262 returns correct routes6263 .for_routable_type6264 returns correct routes6265 #rename_descendants6266 path update6267 when route name is set6268 updates children routes with new path6269 when route name is nil6270 does not fail6271 when conflicting redirects exist6272 deletes the conflicting redirects6273 name update6274 updates children routes with new path6275 handles a rename from nil6276 #create_redirect_for_old_path6277 if the path changed6278 creates a RedirectRoute for the old path6279 #create_redirect6280 creates a RedirectRoute with the same source6281 when the source is a Project6282 creates a RedirectRoute6283 when the source is not a project6284 creates a RedirectRoute6285 #delete_conflicting_redirects6286 deletes the redirect6287 when a redirect route with the same path exists6288 when the redirect route has matching case6289 deletes the redirect6290 when redirect routes with paths descending from the route path exists6291 deletes all redirects with paths that descend from the route path6292 when the redirect route is differently cased6293 deletes the redirect6294 #conflicting_redirects6295 returns an ActiveRecord::Relation6296 returns the redirect routes6297 when a redirect route with the same path exists6298 when the redirect route has matching case6299 returns the redirect route6300 when redirect routes with paths descending from the route path exists6301 returns the redirect routes6302 when the redirect route is differently cased6303 returns the redirect route6304 conflicting routes validation6305 when there is a conflicting route6306 fails validation6307 when deleting the conflicting route6308 does not delete the original route6309 when there are no conflicting routes6310 passes validation6311Autocomplete::UsersFinder6312 #execute6313 is expected to contain exactly #<User id:1752 @johndoe>, #<User id:1754 @user975>, #<User id:1755 @user976>, and #<User id:1756 @user977>6314 preloads the status association6315 when current_user not passed or nil6316 is expected to contain exactly6317 when project passed6318 is expected to contain exactly #<User id:1758 @namespace780>6319 when author_id passed6320 and author is active6321 is expected to contain exactly #<User id:1758 @namespace780> and #<User id:1752 @johndoe>6322 and author is blocked6323 is expected to contain exactly #<User id:1758 @namespace780>6324 searching with less than 3 characters6325 allows partial matches6326 when group passed and project not passed6327 is expected to contain exactly #<User id:1752 @johndoe>6328 searching with less than 3 characters6329 allows partial matches6330 when passed a subgroup6331 includes users from parent groups as well6332 when filtered by search6333 is expected to contain exactly #<User id:1752 @johndoe>6334 searching with less than 3 characters6335 does not allow partial matches6336 when filtered by skip_users6337 is expected to contain exactly #<User id:1752 @johndoe> and #<User id:1754 @user975>6338 when todos exist6339 when filtered by todo_filter without todo_state_filter6340 is expected to contain exactly6341 when filtered by todo_filter with pending todo_state_filter6342 is expected to contain exactly #<User id:1752 @johndoe>6343 when filtered by todo_filter with done todo_state_filter6344 is expected to contain exactly #<User id:1754 @user975>6345 when filtered by current_user6346 is expected to contain exactly #<User id:1753 @notsorandom>, #<User id:1752 @johndoe>, #<User id:1754 @user975>, and #<User id:1755 @user976>6347 when filtered by author_id6348 is expected to contain exactly #<User id:1752 @johndoe>, #<User id:1754 @user975>, #<User id:1755 @user976>, and #<User id:1799 @user995>6349AuthHelper6350 button_based_providers6351 returns all enabled providers from devise6352 does not return ldap provider6353 returns empty array6354 providers_for_base_controller6355 returns all enabled providers from devise6356 excludes ldap providers6357 form_based_providers6358 includes LDAP providers6359 includes crowd provider6360 form_based_auth_provider_has_active_class?6361 selects main LDAP server6362 any_form_based_providers_enabled?6363 detects form-based providers6364 ignores ldap providers when ldap web sign in is disabled6365 enabled_button_based_providers6366 all providers are enabled to sign in6367 returns all the enabled providers from settings in expected order6368 puts google and github in the beginning6369 GitHub OAuth sign in is disabled from application setting6370 doesn't return github as provider6371 popular_enabled_button_based_providers6372 returns the intersection set of popular & enabled providers6373 button_based_providers_enabled?6374 button based providers enabled6375 returns true6376 all the button based providers are disabled via application_setting6377 returns false6378 #link_provider_allowed?6379 delegates to identity provider policy6380 #unlink_provider_allowed?6381 delegates to identity provider policy6382 #provider_has_icon?6383 returns true for defined providers6384 returns false for undefined providers6385 when provider is defined by config6386 returns true6387 when provider is not defined by config6388 returns true6389 #allow_admin_mode_password_authentication_for_web?6390 is expected to equal true6391 when password authentication for web is disabled6392 is expected to equal false6393 when current_user is an ldap user6394 is expected to equal false6395 when user got password automatically set6396 is expected to equal false6397 #auth_active?6398 for atlassian_oauth2 provider6399 returns true when present6400 returns false when not present6401 for other omniauth providers6402 returns true when present6403 returns false when not present6404 #google_tag_manager_enabled?6405 when not on gitlab.com6406 is expected to eq false6407 regular and nonce versions6408 gtm_nonce_enabled: false, gtm_key: "google_tag_manager_id"6409 on gitlab.com and a key set without a current user6410 is expected to be truthy6411 when no key is set6412 is expected to eq false6413 gtm_nonce_enabled: true, gtm_key: "google_tag_manager_nonce_id"6414 on gitlab.com and a key set without a current user6415 is expected to be truthy6416 when no key is set6417 is expected to eq false6418 #google_tag_manager_id6419 when google tag manager is disabled6420 is expected to be falsey6421 when google tag manager is enabled6422 when nonce feature flag is enabled6423 is expected to eq "nonce"6424 when nonce feature flag is disabled6425 is expected to eq "gtm"6426 #auth_app_owner_text6427 when owner is a user6428 behaves like generates text with the correct info6429 includes the name of the application owner6430 when owner is a group6431 behaves like generates text with the correct info6432 includes the name of the application owner6433 when the user is missing6434 returns nil6435 #auth_strategy_class6436 when configuration specifies no provider6437 returns false6438 when configuration specifies a provider with args but without strategy_class6439 returns false6440 when configuration specifies a provider with args and strategy_class6441 returns the class6442 when configuration specifies another provider with args and another strategy_class6443 returns false6444 #saml_providers6445 when SAML is enabled without specifying a strategy class6446 returns the saml provider6447 when configuration specifies no provider6448 returns an empty list6449 when configuration specifies a provider with a SAML strategy_class6450 returns the provider6451 when configuration specifies two providers with a SAML strategy_class6452 returns the provider6453 when configuration specifies a provider with a non-SAML strategy_class6454 returns an empty list6455 when configuration specifies four providers but only two with SAML strategy_class6456 returns the provider6457Issues::SetCrmContactsService6458 #execute6459 when the user has no permission6460 returns expected error response6461 when user has permission6462 but the crm setting is disabled6463 returns expected error response6464 when the contact does not exist6465 returns expected error response6466 when the contact belongs to a different group6467 returns expected error response6468 replace6469 behaves like setting contacts6470 updates the issue with correct contacts6471 behaves like adds system note6472 calls SystemNoteService.change_issuable_contacts with correct counts6473 add6474 behaves like setting contacts6475 updates the issue with correct contacts6476 behaves like adds system note6477 calls SystemNoteService.change_issuable_contacts with correct counts6478 add by email6479 with pure emails in params6480 behaves like setting contacts6481 updates the issue with correct contacts6482 behaves like adds system note6483 calls SystemNoteService.change_issuable_contacts with correct counts6484 with autocomplete prefix emails in params6485 behaves like setting contacts6486 updates the issue with correct contacts6487 behaves like adds system note6488 calls SystemNoteService.change_issuable_contacts with correct counts6489 remove6490 behaves like setting contacts6491 updates the issue with correct contacts6492 behaves like adds system note6493 calls SystemNoteService.change_issuable_contacts with correct counts6494 remove by email6495 with pure email in params6496 behaves like setting contacts6497 updates the issue with correct contacts6498 behaves like adds system note6499 calls SystemNoteService.change_issuable_contacts with correct counts6500 with autocomplete prefix and suffix email in params6501 behaves like setting contacts6502 updates the issue with correct contacts6503 behaves like adds system note6504 calls SystemNoteService.change_issuable_contacts with correct counts6505 when attempting to add more than 66506 returns expected error message6507 when trying to remove non-existent contact6508 returns expected error message6509 when combining params6510 add and remove6511 with contact ids6512 behaves like setting contacts6513 updates the issue with correct contacts6514 with contact emails6515 behaves like setting contacts6516 updates the issue with correct contacts6517 replace and remove6518 returns expected error response6519 replace and add6520 returns expected error response6521 when trying to add an existing issue contact6522 does not return an error6523 when trying to add the same contact twice6524 does not return an error6525 when trying to remove a contact not attached to the issue6526 does not return an error6527Ci::PipelineEntity6528 #as_json6529 when pipeline is empty6530 contains required fields6531 excludes coverage data when disabled6532 contains details6533 contains flags6534 when default branch not protected6535 when pipeline is retryable6536 does not serialize stage builds6537 user has ability to retry pipeline6538 contains retry path6539 user does not have ability to retry pipeline6540 does not contain retry path6541 when pipeline is cancelable6542 does not serialize stage builds6543 user has ability to cancel pipeline6544 contains cancel path6545 user does not have ability to cancel pipeline6546 does not contain cancel path6547 delete path6548 user has ability to delete pipeline6549 contains delete path6550 user does not have ability to delete pipeline6551 does not contain delete path6552 when pipeline ref is empty6553 does not generate branch path6554 when pipeline has a failure reason set6555 has a correct failure reason6556 when request has a project6557 when pipeline is detached merge request pipeline6558 makes detached flag true6559 does not expose source sha and target sha6560 when user is a developer6561 has merge request information6562 when user is an external user6563 has no merge request information6564 when pipeline is merge request pipeline6565 makes detached flag false6566 makes atached flag true6567 exposes source sha and target sha6568 exposes merge request event type6569 when pipeline has failed builds6570 when the user can retry the pipeline6571 exposes these failed builds6572 when the user cannot retry the pipeline6573 is nil6574 when pipeline has coverage6575 exposes the coverage6576Gitlab6577 delegates root to GitlabEdition6578 delegates extensions to GitlabEdition6579 delegates ee? to GitlabEdition6580 delegates jh? to GitlabEdition6581 delegates ee to GitlabEdition6582 delegates jh to GitlabEdition6583 .revision6584 when a REVISION file exists6585 returns the actual Git revision6586 memoizes the revision6587 when no REVISION file exist6588 when the Git command succeeds6589 returns the actual Git revision6590 when the Git command fails6591 returns "Unknown"6592 .com?6593 is true when GITLAB_SIMULATE_SAAS is true and in development6594 is false when GITLAB_SIMULATE_SAAS is true and in test6595 when not simulating SaaS6596 is true when on https://gitlab.com6597 is true when on https://staging.gitlab.com6598 is true when on other gitlab subdomain6599 is true when on other gitlab subdomain with hyphen6600 is false when not on GitLab.com6601 .com6602 when on GitLab.com6603 is expected to equal true6604 when not on GitLab.com6605 is expected to be nil6606 .staging?6607 is false when on https://gitlab.com6608 is true when on https://staging.gitlab.com6609 is false when not on staging6610 .canary?6611 is true when CANARY env var is set to true6612 is false when CANARY env var is set to false6613 .com_and_canary?6614 is true when on .com and canary6615 is false when on .com but not on canary6616 .com_but_not_canary?6617 is false when on .com and canary6618 is true when on .com but not on canary6619 .org_or_com?6620 is true when on .com6621 is true when org6622 is false when not dev, org or com6623 .simulate_com?6624 when GITLAB_SIMULATE_SAAS is true6625 is false when test env6626 is true when dev env6627 is false when env is not dev6628 when GITLAB_SIMULATE_SAAS is false6629 is false when test env6630 is false when dev env6631 is false when env is not dev or test6632 .dev_or_test_env?6633 is true when test env6634 is true when dev env6635 is false when env is not dev or test6636 .http_proxy_env?6637 returns true when lower case https6638 returns true when upper case https6639 returns true when lower case http6640 returns true when upper case http6641 returns false when not set6642 .maintenance_mode?6643 returns true when maintenance mode is enabled6644 returns false when maintenance mode is disabled6645 returns false when maintenance mode column is not present6646Todos::Destroy::GroupPrivateService6647 #execute6648 when a group set to private6649 removes todos only for users who are not group users6650 with nested groups6651 removes todos only for users who are not group users6652 when group is not private6653 does not remove any todos6654CommitCollection6655 #each6656 yields every commit6657 .committers6658 returns a relation of users when users are found6659 returns empty array when committers cannot be found6660 excludes authors of merge commits6661 #without_merge_commits6662 returns all commits except merge commits6663 #with_latest_pipeline6664 sets the latest pipeline for every commit so no additional queries are necessary6665 performs a single query to fetch pipeline warnings6666 #with_markdown_cache6667 preloads commits cache markdown6668 enrichment methods6669 #unenriched6670 returns all commits that are not backed by gitaly data6671 #fully_enriched?6672 returns true when all commits are backed by gitaly data6673 returns false when any commits are not backed by gitaly data6674 returns true when the collection is empty6675 #enrich!6676 replaces commits in the collection with those backed by gitaly data6677 maintains the original order of the commits6678 fetches data if there are unenriched commits6679 does not fetch data if all commits are enriched6680 returns the original commit if the commit could not be lazy loaded6681 #respond_to_missing?6682 returns true when the underlying Array responds to the message6683 returns false when the underlying Array does not respond to the message6684 #method_missing6685 delegates undefined methods to the underlying Array6686Pages::DeploymentUploader6687 behaves like builds correct paths6688 #store_dir6689 behaves like matches the method pattern6690 is expected to match /\/\h{2}\/\h{2}\/\h{64}\/pages_deployments\/\d+/6691 #cache_dir6692 behaves like matches the method pattern6693 is expected to match /pages\/@hashed\/tmp\/cache/6694 #work_dir6695 behaves like matches the method pattern6696 is expected to match /pages\/@hashed\/tmp\/work/6697 #upload_path6698 behaves like matches the method pattern6699 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6700 #relative_path6701 is relative (PENDING: Path not set, skipping.)6702 .absolute_path6703 behaves like matches the method pattern6704 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6705 .base_dir6706 behaves like matches the method pattern6707 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6708 path traversal exploits6709 throws an exception6710 when object store is REMOTE6711 preserves original file when stores it6712 behaves like builds correct paths6713 #store_dir6714 behaves like matches the method pattern6715 is expected to match /\A\h{2}\/\h{2}\/\h{64}\/pages_deployments\/\d+\z/6716 #cache_dir6717 behaves like matches the method pattern6718 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6719 #work_dir6720 behaves like matches the method pattern6721 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6722 #upload_path6723 behaves like matches the method pattern6724 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6725 #relative_path6726 is relative (PENDING: Path not set, skipping.)6727 .absolute_path6728 behaves like matches the method pattern6729 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6730 .base_dir6731 behaves like matches the method pattern6732 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)6733 path traversal exploits6734 throws an exception6735 when file is stored in valid local_path6736 is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/pages\/@hashed\/\h{2}\/\h{2}\/\h{64}\/pages_deployments\/25\/pages.zip/6737 preserves original file when stores it6738 .default_store6739 returns local store when object storage is not enabled6740 returns remote store when object storage is enabled6741CommitRange6742 raises ArgumentError when given an invalid range string6743 modules6744 is expected to includes the Referable module6745 #initialize6746 does not modify strings in-place6747 #to_s6748 is correct for three-dot syntax6749 is correct for two-dot syntax6750 #to_reference6751 returns a String reference to the object6752 returns a String reference to the object6753 supports a cross-project reference6754 #reference_link_text6755 returns a String reference to the object6756 returns a String reference to the object6757 supports a cross-project reference6758 #to_param6759 includes the correct keys6760 includes the correct values for a three-dot range6761 includes the correct values for a two-dot range6762 #exclude_start?6763 is false for three-dot ranges6764 is true for two-dot ranges6765 #valid_commits?6766 with a valid repo6767 is false when `sha_from` is invalid6768 is false when `sha_to` is invalid6769 is true when both `sha_from` and `sha_to` are valid6770 without a valid repo6771 returns false6772PipelineDetailsEntity6773 inherits from PipelineEntity6774 #as_json6775 when pipeline is empty6776 contains details6777 contains flags6778 when pipeline is retryable6779 user has ability to retry pipeline6780 retryable flag is true6781 user does not have ability to retry pipeline6782 retryable flag is false6783 when pipeline is cancelable6784 user has ability to cancel pipeline6785 cancelable flag is true6786 user does not have ability to cancel pipeline6787 cancelable flag is false6788 when pipeline has commit statuses6789 contains stages6790 when pipeline has YAML errors6791 contains information about error6792 contains flag that indicates there are errors6793 when pipeline does not have YAML errors6794 does not contain field that normally holds an error6795 contains flag that indicates there are no errors6796 when pipeline is triggered by other pipeline6797 contains an information about depedent pipeline6798 when pipeline triggered other pipeline6799 contains an information about dependent pipeline6800Banzai::ReferenceParser::CommitParser6801 #nodes_visible_to_user6802 when the link has a data-issue attribute6803 behaves like referenced feature visibility6804 when feature is disabled6805 does not create reference6806 when feature is enabled only for team members6807 does not create reference for non member6808 creates reference for member6809 when feature is enabled6810 creates reference6811 #referenced_by6812 when the link has a data-project attribute6813 when the link has a data-commit attribute6814 returns an Array of commits6815 returns an empty Array when the commit could not be found6816 skips projects without valid repositories6817 when the link does not have a data-commit attribute6818 returns an empty Array6819 when the link does not have a data-project attribute6820 returns an empty Array6821 #commit_ids_per_project6822 returns a Hash containing commit IDs per project6823 does not add a project when the data-commit attribute is empty6824 #find_commits6825 returns an Array of commit objects6826 skips commit IDs for which no commit could be found6827 when checking commits on another projects6828 behaves like no project N+1 queries6829 avoids N+1 queries in #nodes_visible_to_user6830Labels::PromoteService6831 #execute6832 without a group6833 fails on project without group6834 with a group6835 fails on group label6836 when there is an existing identical group label6837 uses the existing group label6838 does not create a new group label clone6839 behaves like promoting a project label to a group label6840 is truthy on success6841 removes all project labels with that title within the group6842 keeps users' subscriptions6843 recreates priorities6844 does not touch project out of promoted group6845 does not touch out of group priority6846 relinks issue with the promoted label6847 does not remove untouched labels from issue6848 does not relink untouched label in issue6849 relinks issues with merged labels6850 does not relink issues from other group6851 updates merge request6852 updates board lists6853 relinks all relations6854 when there is no existing identical group label6855 recreates the label as a group label6856 copies title, description and color to cloned group label6857 behaves like promoting a project label to a group label6858 is truthy on success6859 removes all project labels with that title within the group6860 keeps users' subscriptions6861 recreates priorities6862 does not touch project out of promoted group6863 does not touch out of group priority6864 relinks issue with the promoted label6865 does not remove untouched labels from issue6866 does not relink untouched label in issue6867 relinks issues with merged labels6868 does not relink issues from other group6869 updates merge request6870 updates board lists6871 relinks all relations6872Banzai::Filter::References::DesignReferenceFilter6873 does not error when we add redaction to the pipeline6874 .call6875 requires project context6876 #call6877 feature flags6878 design management is not enabled6879 behaves like a no-op filter6880 does nothing6881 wrapped in a <pre/>6882 behaves like a no-op filter6883 does nothing6884 wrapped in a <code/>6885 behaves like a no-op filter6886 does nothing6887 wrapped in a <a/>6888 behaves like a no-op filter6889 does nothing6890 wrapped in a <style/>6891 behaves like a no-op filter6892 does nothing6893 .identifier6894 filename: "simple.png"6895 can parse the reference6896 filename: "SIMPLE.PNG"6897 can parse the reference6898 filename: "has-hyphen.jpg"6899 can parse the reference6900 filename: "snake_case.svg"6901 can parse the reference6902 static properties6903 is expected to eq :design6904 #data_attributes_for6905 is expected to include {:issue => 116, :original => "Added http://localhost/namespace943/project1777/-/issues/10/designs/homescreen-444.jpg", :project => 1604, :design => 428}6906 internal reference6907 behaves like a reference containing an element node6908 does not escape inner html6909 behaves like a good link reference6910 produces a good link6911 the filename contains invalid characters6912 filename: "with some spaces.png"6913 behaves like a no-op filter6914 does nothing6915 filename: "with <script>console.log(\"pwded\")<%2Fscript>.png"6916 behaves like a no-op filter6917 does nothing6918 filename: "foo\"bar.png"6919 behaves like a no-op filter6920 does nothing6921 filename: "A \"very\" good file.png"6922 behaves like a no-op filter6923 does nothing6924 the reference is to a non-existant design6925 behaves like a no-op filter6926 does nothing6927 design management is disabled for the referenced project6928 behaves like a no-op filter6929 does nothing6930 link pattern6931 matches6932 cross-project / cross-namespace complete reference6933 links to a valid reference6934 link has valid text6935 includes default classes6936 behaves like a reference containing an element node6937 does not escape inner html6938 behaves like a good link reference6939 produces a good link6940 design management is disabled for that project6941 behaves like a no-op filter6942 does nothing6943 the reference is invalid6944 behaves like a no-op filter6945 does nothing6946 performance6947 is linear in the number of projects with design management enabled each design refers to6948Gitlab::Issues::Rebalancing::State6949 rebalancing issues in namespace6950 is expected to eq 16951 behaves like issues rebalance caching6952 #track_new_running_rebalance6953 caches a project id to track caching in progress6954 #set and get current_index6955 returns zero as current index when index not cached6956 returns cached current index6957 #set and get current_project6958 returns nil if there is no project_id cached6959 returns cached current project_id6960 #rebalance_in_progress?6961 return zero if no re-balances are running6962 return false if no re-balances are running6963 return true a re-balance for given project/namespace is running6964 caching issue ids6965 with no issue ids cached6966 returns zero when there are no cached issue ids6967 returns empty array when there are no cached issue ids6968 with cached issue ids6969 returns count of cached issue ids6970 returns array of issue ids6971 limits returned values6972 when caching duplicate issue_ids6973 does not cache duplicate issues6974 returns cached issues with latest scores6975 when setting expiration6976 when tracking new rebalance6977 returns as expired for non existent key6978 has expiration set6979 when setting current index6980 returns as expiring for non existent key6981 has expiration set6982 when setting current project id6983 returns as expired for non existent key6984 has expiration set6985 when setting cached issue ids6986 returns as expired for non existent key6987 has expiration set6988 cleanup cache6989 removes cache keys6990 .fetch_rebalancing_groups_and_projects6991 caches recently finished rebalance key6992 rebalancing issues in a project6993 is expected to eq 26994 behaves like issues rebalance caching6995 #track_new_running_rebalance6996 caches a project id to track caching in progress6997 #set and get current_index6998 returns zero as current index when index not cached6999 returns cached current index7000 #set and get current_project7001 returns nil if there is no project_id cached7002 returns cached current project_id7003 #rebalance_in_progress?7004 return zero if no re-balances are running7005 return false if no re-balances are running7006 return true a re-balance for given project/namespace is running7007 caching issue ids7008 with no issue ids cached7009 returns zero when there are no cached issue ids7010 returns empty array when there are no cached issue ids7011 with cached issue ids7012 returns count of cached issue ids7013 returns array of issue ids7014 limits returned values7015 when caching duplicate issue_ids7016 does not cache duplicate issues7017 returns cached issues with latest scores7018 when setting expiration7019 when tracking new rebalance7020 returns as expired for non existent key7021 has expiration set7022 when setting current index7023 returns as expiring for non existent key7024 has expiration set7025 when setting current project id7026 returns as expired for non existent key7027 has expiration set7028 when setting cached issue ids7029 returns as expired for non existent key7030 has expiration set7031 cleanup cache7032 removes cache keys7033 .fetch_rebalancing_groups_and_projects7034 caches recently finished rebalance key7035Gitlab::Pagination::Keyset::Paginator7036 pagination7037 when per_page is greater than the record count7038 is expected to eq [#<Project id:1610 namespace949/project1784>>, #<Project id:1613 namespace952/project1787>>, #<Projec...t1786>>, #<Project id:1611 namespace950/project1785>>, #<Project id:1614 namespace953/project1788>>]7039 is expected not to have next page7040 is expected not to have previous page7041 has no next and previous cursor values7042 when 0 records are returned7043 is expected to be empty7044 is expected not to have next page7045 is expected not to have previous page7046 when page size is smaller than the record count7047 is expected to eq [#<Project id:1610 namespace949/project1784>>, #<Project id:1613 namespace952/project1787>>]7048 is expected to have next page7049 is expected not to have previous page7050 has next page cursor7051 does not have previous page cursor7052 when on the second page7053 is expected to eq [#<Project id:1612 namespace951/project1786>>, #<Project id:1611 namespace950/project1785>>]7054 is expected to have next page7055 is expected to have previous page7056 and then going back to the first page7057 is expected to eq [#<Project id:1610 namespace949/project1784>>, #<Project id:1613 namespace952/project1787>>]7058 is expected to have next page7059 is expected not to have previous page7060 when jumping to the last page7061 is expected to eq [#<Project id:1611 namespace950/project1785>>, #<Project id:1614 namespace953/project1788>>]7062 is expected not to have next page7063 is expected to have previous page7064 when paginating backwards7065 is expected to eq [#<Project id:1613 namespace952/project1787>>, #<Project id:1612 namespace951/project1786>>]7066 is expected to have next page7067 is expected to have previous page7068 when jumping to the first page7069 is expected to eq [#<Project id:1610 namespace949/project1784>>, #<Project id:1613 namespace952/project1787>>]7070 is expected to have next page7071 is expected not to have previous page7072 default keyset direction parameter7073 exposes the direction parameter in the cursor7074 when unsupported order is given7075 raises error7076 when use_union_optimization option is true and ordering by two columns7077 uses UNION queries7078MembersHelper7079 #remove_member_message7080 is expected to eq "Are you sure you want to remove Sidney Jones1867 from the Sidney Jones1866 / project1789 project?"7081 is expected to eq "Are you sure you want to revoke the invitation for to join the Sidney Jones1869 / project1791 project?"7082 is expected to eq "Are you sure you want to deny Sidney Jones1873's request to join the Sidney Jones1872 / project1793 project?"7083 is expected to eq "Are you sure you want to withdraw your access request for the Sidney Jones1874 / project1794 project?"7084 is expected to eq "Are you sure you want to remove Sidney Jones1876 from the group336 group and any subresources?"7085 is expected to eq "Are you sure you want to revoke the invitation for to join the group338 group?"7086 is expected to eq "Are you sure you want to deny Sidney Jones1878's request to join the group340 group?"7087 is expected to eq "Are you sure you want to withdraw your access request for the group341 group?"7088 an accepted user invitation with no user associated7089 logs an exception and shows orphaned status7090 a pending member invitation with no user associated7091 does not error when there is an invitation for the requestor7092 #remove_member_title7093 is expected to eq "Remove user from project"7094 is expected to eq "Deny access request from project"7095 is expected to eq "Remove user from group and any subresources"7096 is expected to eq "Deny access request from group"7097 #leave_confirmation_message7098 is expected to eq "Are you sure you want to leave the \"Sidney Jones1891 / project1800\" project?"7099 is expected to eq "Are you sure you want to leave the \"group347\" group?"7100 #localized_tasks_to_be_done_choices7101 has a translation for all `TASKS_TO_BE_DONE` keys7102Gitlab::Changelog::Config7103 .from_git7104 retrieves the configuration from Git7105 returns the default configuration when no YAML file exists in Git7106 when changelog is empty7107 returns the default configuration7108 .from_hash7109 sets the configuration according to a Hash7110 raises Error when the categories are not a Hash7111 raises a Gitlab::Changelog::Error when the template is invalid7112 #contributor?7113 when user is a member of project7114 is expected to eq false7115 when user has at least one merge request merged into default_branch7116 is expected to eq true7117 is expected to eq false7118 #category7119 returns the name of a category7120 returns the raw category name when no alternative name is configured7121 #format_date7122 formats a date according to the configured date format7123 #always_credit_author?7124 when include_groups is defined7125 when user generating changelog has access to group7126 returns whether author should always be credited7127 when user generating changelog has no access to group7128 always returns false7129 when include_groups is not defined7130 always returns false7131Gitlab::Ci::Config::External::Mapper7132 #process7133 when single 'include' keyword is defined7134 when the string is a local file7135 returns File instances7136 behaves like logging config file fetch7137 propagates the pipeline logger7138 when the key is a local file hash7139 returns File instances7140 when the string is a remote file7141 returns File instances7142 behaves like logging config file fetch7143 propagates the pipeline logger7144 when the key is a remote file hash7145 returns File instances7146 when the key is a template file hash7147 returns File instances7148 behaves like logging config file fetch7149 propagates the pipeline logger7150 when the key is a hash of file and remote7151 returns ambigious specification error7152 when the key is a project's file7153 returns File instances7154 behaves like logging config file fetch7155 propagates the pipeline logger7156 when the key is project's files7157 returns two File instances7158 behaves like logging config file fetch7159 propagates the pipeline logger7160 when 'include' is defined as an array7161 returns Files instances7162 when 'include' is defined as an array of hashes7163 returns Files instances7164 when it has ambigious match7165 returns ambigious specification error7166 when 'include' is not defined7167 returns an empty array7168 when duplicate 'include's are defined7169 does not raise an exception7170 has expanset with one7171 when passing max number of files7172 does not raise an exception7173 when too many 'includes' are defined7174 raises an exception7175 when including multiple files from a project7176 raises an exception7177 when 'include' section uses project variable7178 when local file is included as a single string7179 expands the variable7180 when remote file is included as a single string7181 expands the variable7182 defined as an array7183 expands the variable7184 defined as an array of hashes7185 expands the variable7186 local file hash7187 expands the variable7188 project name7189 expands the variable7190 with multiple files7191 expands the variable7192 when include variable has an unsupported type for variable expansion7193 does not invoke expansion for the variable7194 when local file path has wildcard7195 includes the matched local files7196 when 'include' has rules7197 when the rules matches7198 includes the file7199 when the rules does not match7200 does not include the file7201 when locations are same after masking variables7202 has expanset with two7203Gitlab::Ci::Badge::Release::Metadata7204 behaves like badge metadata7205 #to_html7206 points to link7207 contains clickable image7208 #to_markdown7209 is expected to include "http://localhost/namespace985/project1822/-/badges/release.svg"7210 is expected to include "http://localhost/namespace986/project1823/-/releases"7211 #to_asciidoc7212 is expected to include "http://localhost/namespace987/project1824/-/badges/release.svg"7213 is expected to include "http://localhost/namespace988/project1825/-/releases"7214 is expected to include "image:"7215 is expected to include "link="7216 is expected to include "title="7217 #title7218 returns latest release title7219 #image_url7220 returns valid url7221 #link_url7222 returns valid link7223Banzai::Filter::SanitizationFilter7224 behaves like default allowlist7225 sanitizes tags that are not allowed7226 sanitizes tag attributes7227 sanitizes javascript in attributes7228 sanitizes mixed-cased javascript in attributes7229 allows whitelisted HTML tags from the user7230 sanitizes `class` attribute on any element7231 sanitizes `id` attribute on any element7232 custom allowlist7233 customizes the allowlist only once7234 customizes the allowlist only once for different instances7235 sanitizes `class` attribute from all elements7236 sanitizes `class` attribute from non-highlight spans7237 allows `text-align` property in `style` attribute on table elements7238 disallows other properties in `style` attribute on table elements7239 disallows `text-align` property in `style` attribute on other elements7240 allows `span` elements7241 allows `abbr` elements7242 disallows the `name` attribute globally, allows on `a`7243 allows `summary` elements7244 allows `details` elements7245 allows `rel=license` in links7246 allows `data-math-style` attribute on `code` and `pre` elements7247 allows the `data-sourcepos` attribute globally7248 behaves like XSS prevention7249 disallows protocol-based JS injection: simple, no spaces7250 disallows protocol-based JS injection: simple, spaces before7251 disallows protocol-based JS injection: simple, spaces after7252 disallows protocol-based JS injection: simple, spaces before and after7253 disallows protocol-based JS injection: preceding colon7254 disallows protocol-based JS injection: UTF-8 encoding7255 disallows protocol-based JS injection: long UTF-8 encoding7256 disallows protocol-based JS injection: long UTF-8 encoding without semicolons7257 disallows protocol-based JS injection: hex encoding7258 disallows protocol-based JS injection: long hex encoding7259 disallows protocol-based JS injection: hex encoding without semicolons7260 disallows protocol-based JS injection: null char7261 disallows protocol-based JS injection: invalid URL char7262 disallows protocol-based JS injection: Unicode7263 disallows protocol-based JS injection: spaces and entities7264 disallows protocol whitespace7265 disallows data links7266 disallows vbscript links7267 behaves like sanitize link7268 removes `rel` attribute from `a` elements7269 disallows invalid URIs7270 allows non-standard anchor schemes7271 allows relative links7272 footnotes7273 allows correct footnote id property on links7274 allows correct footnote id property on li element7275 removes invalid id for footnote links7276 removes invalid id for footnote li7277Import::GithubController routing7278 to #personal_access_token7279 behaves like importer routing7280 to #create7281 to #new7282 to #status7283 to #callback7284 to #jobs7285 to #realtime_changes7286Import::GiteaController routing7287 to #personal_access_token7288 behaves like importer routing7289 to #create7290 to #new7291 to #status7292 to #callback7293 to #jobs7294 to #realtime_changes7295Import::GitlabController routing7296 behaves like importer routing7297 to #create7298 to #new7299 to #status7300 to #callback7301 to #jobs7302 to #realtime_changes7303Import::BitbucketController routing7304 behaves like importer routing7305 to #create7306 to #new7307 to #status7308 to #callback7309 to #jobs7310 to #realtime_changes7311Import::BitbucketServerController routing7312 behaves like importer routing7313 to #create7314 to #new7315 to #status7316 to #callback7317 to #jobs7318 to #realtime_changes7319Import::FogbugzController routing7320 to #callback7321 to #new_user_map7322 to #create_user_map7323 behaves like importer routing7324 to #create7325 to #new7326 to #status7327 to #callback7328 to #jobs7329 to #realtime_changes7330Import::GitlabProjectsController routing7331 to #create7332 to #new7333Import::PhabricatorController routing7334 to #create7335 to #new7336Import::GithubService7337 when remove_legacy_github_client feature flag is enabled7338 raises an exception for unknown error causes7339 do not raise an exception on input error7340 logs the original error7341 returns an error with message and code7342 repository size validation7343 when there is no repository size limit defined7344 skips the check and succeeds7345 when the target namespace repository size limit is defined7346 succeeds when the repository is smaller than the limit7347 returns error when the repository is larger than the limit7348 when target namespace repository limit is not defined7349 when application size limit is defined7350 succeeds when the repository is smaller than the limit7351 returns error when the repository is larger than the limit7352 when import source is disabled7353 returns forbidden7354 when a blocked/local URL is used as github_hostname7355 url: "https://localhost"7356 returns and logs an error7357 url: "https://10.0.0.1"7358 returns and logs an error7359 when remove_legacy_github_client feature flag is enabled7360 raises an exception for unknown error causes7361 do not raise an exception on input error7362 logs the original error7363 returns an error with message and code7364 repository size validation7365 when there is no repository size limit defined7366 skips the check and succeeds7367 when the target namespace repository size limit is defined7368 succeeds when the repository is smaller than the limit7369 returns error when the repository is larger than the limit7370 when target namespace repository limit is not defined7371 when application size limit is defined7372 succeeds when the repository is smaller than the limit7373 returns error when the repository is larger than the limit7374 when import source is disabled7375 returns forbidden7376 when a blocked/local URL is used as github_hostname7377 url: "https://localhost"7378 returns and logs an error7379 url: "https://10.0.0.1"7380 returns and logs an error7381Gitlab::Diff::PositionTracer::ImageStrategy7382 #trace7383 diff scenarios7384 when the file was created in the old diff7385 when the file is unchanged between the old and the new diff7386 returns the new position7387 when the file was updated between the old and the new diff7388 returns the position of the change7389 when the file was renamed in between the old and the new diff7390 returns the position of the change7391 when the file was removed in between the old and the new diff7392 returns the position of the change7393 when the file is unchanged in the new diff7394 returns the position of the change7395 when the file was changed in the old diff7396 when the file is unchanged in between the old and the new diff7397 returns the new position7398 when the file was updated in between the old and the new diff7399 returns the position of the change7400 when the file was renamed in between the old and the new diff7401 returns the position of the change7402 when the file was removed in between the old and the new diff7403 returns the position of the change7404 when the file is unchanged in the new diff7405 returns the position of the change7406Gitlab::Redis::DuplicateJobs7407 .config_file_name7408 when there is no config file anywhere7409 is expected to be nil7410 but resque.yml exists7411 is expected to eq "/tmp/redis_shared_examples20220629-464-12yxhnf/config/resque.yml"7412 returns a path that exists7413 and there is a global env override7414 is expected to eq "global override"7415 and there is an instance specific config file7416 is expected to eq "/tmp/redis_shared_examples20220629-464-1h2yomw/config/redis.shared_state.yml"7417 returns a path that exists7418 and there is a specific env override7419 is expected to eq "instance specific override"7420 .store7421 with old format7422 behaves like redis store7423 instantiates Redis::Store7424 with the namespace7425 uses specified namespace7426 with new format7427 behaves like redis store7428 instantiates Redis::Store7429 with the namespace7430 uses specified namespace7431 .params7432 withstands mutation7433 when url contains unix socket reference7434 with old format7435 returns path key instead7436 with new format7437 returns path key instead7438 when url is host based7439 with old format7440 returns hash with host, port, db, and password7441 with new format7442 rails_env: "development", host: "development-host"7443 returns hash with host, port, db, and password7444 rails_env: "test", host: "test-host"7445 returns hash with host, port, db, and password7446 rails_env: "production", host: "production-host"7447 returns hash with host, port, db, and password7448 .url7449 withstands mutation7450 when yml file with env variable7451 reads redis url from env variable7452 .version7453 returns a version7454 ._raw_config7455 is frozen7456 returns false when the file does not exist7457 returns false when the filename can't be determined7458 .with7459 when running on single-threaded runtime7460 instantiates a connection pool with size 57461 when running on multi-threaded runtime7462 instantiates a connection pool with a size based on the concurrency of the worker7463 when there is no config at all7464 can run an empty block7465 #db7466 with old format7467 returns the correct db7468 with new format7469 returns the correct db7470 #sentinels7471 when sentinels are defined7472 rails_env: "development", hosts: ["development-replica1", "development-replica2"]7473 returns an array of hashes with host and port keys7474 rails_env: "test", hosts: ["test-replica1", "test-replica2"]7475 returns an array of hashes with host and port keys7476 rails_env: "production", hosts: ["production-replica1", "production-replica2"]7477 returns an array of hashes with host and port keys7478 when sentinels are not defined7479 returns nil7480 #sentinels?7481 when sentinels are defined7482 returns true7483 when sentinels are not defined7484 returns false7485 #raw_config_hash7486 returns old-style single url config in a hash7487 #fetch_config7488 returns false when no config file is present7489 returns false when config file is present but has invalid YAML7490 has a value for the legacy default URL7491 #pool7492 store connection settings7493 instantiates an instance of MultiStore7494 key namespaces7495 writes keys to SharedState with no prefix, and to Queues with the "resque:gitlab:" prefix7496 behaves like multi store feature flags7497 with feature flag :use_primary_and_secondary_stores_for_duplicate_jobs is enabled7498 multi store is enabled7499 with feature flag :use_primary_and_secondary_stores_for_duplicate_jobs is disabled7500 multi store is disabled7501 with feature flag :use_primary_store_as_default_for_duplicate_jobs is enabled7502 primary store is enabled7503 with feature flag :use_primary_store_as_default_for_duplicate_jobs is disabled7504 primary store is disabled7505 #raw_config_hash7506 has a legacy default URL7507 #store_name7508 returns the name of the SharedState store7509Gitlab::MarkdownCache::ActiveRecord::Extension7510 an unchanged markdown field7511 is expected to eq "`Foo`"7512 is expected to eq "<p data-sourcepos=\"1:1-1:5\" dir=\"auto\"><code>Foo</code></p>"7513 is expected not to be truthy7514 is expected to eq 20316167515 a changed markdown field7516 is expected to eq "<p data-sourcepos=\"1:1-1:5\" dir=\"auto\"><code>Bar</code></p>"7517 is expected to eq 20316167518 when a markdown field is set repeatedly to an empty string7519 is expected to receive refresh_markdown_cache(*(any args)) 1 time7520 when a markdown field is set repeatedly to a string which renders as empty html7521 is expected to receive refresh_markdown_cache(*(any args)) 1 time7522 a non-markdown field changed7523 is expected to eq 27524 is expected to eq "`Foo`"7525 is expected to eq "<p data-sourcepos=\"1:1-1:5\" dir=\"auto\"><code>Foo</code></p>"7526 is expected to eq 20316167527 version is out of date7528 is expected to eq "<p data-sourcepos=\"1:1-1:5\" dir=\"auto\"><code>Bar</code></p>"7529 is expected to eq 20316167530 when an invalidating field is changed7531 invalidates the cache when project changes7532 invalidates the cache when author changes7533 .attributes7534 excludes cache attributes that is blacklisted by default7535 #cached_html_up_to_date?7536 returns false if markdown has been changed but html has not7537 returns true if markdown has not been changed but html has7538 returns true if markdown and html have both been changed7539 returns false if the markdown field is set but the html is not7540 #refresh_markdown_cache!7541 skips saving if not persisted7542 saves the changes7543 with note7544 calls store_mentions!7545 during import7546 does not call store_mentions!7547 when persisted cache is newer than current version7548 does not save the generated HTML7549 when persisted cache is nil7550 does not save the generated HTML7551Gitlab::Checks::SingleChangeAccess7552 #validate!7553 without failed checks7554 doesn't raise an error7555 calls pushes checks7556 calls branches checks7557 calls tags checks7558 calls diff checks7559 when time limit was reached7560 raises a TimeoutError7561 #commits7562 with provided commits7563 behaves like #commits7564 returns expected commits7565 returns expected commits on repeated calls7566 without provided commits7567 behaves like #commits7568 returns expected commits7569 returns expected commits on repeated calls7570Gitlab::Ci::Config::External::Context7571 attributes7572 with values7573 is expected to have attributes {:project => #<Double "Project">, :sha => "12345", :user => #<Double "User">, :variables => #<Gitlab::Ci::Var...{:key => "a", :value => "b", :public => true, :file => false, :masked => false, :raw => false}>]}, @errors=nil>}7574 is expected to eq #<Set: {}>7575 is expected to eq 07576 is expected to be an instance of Gitlab::Ci::Variables::Collection7577 is expected to be an instance of ActiveSupport::HashWithIndifferentAccess7578 is expected to include {"a" => "b"}7579 without values7580 is expected to have attributes {:project => nil, :sha => nil, :user => nil}7581 is expected to eq #<Set: {}>7582 is expected to eq 07583 is expected to be an instance of Gitlab::Ci::Variables::Collection7584 is expected to be an instance of ActiveSupport::HashWithIndifferentAccess7585 #set_deadline7586 with a float value7587 updates execution_deadline7588 with nil as a value7589 updates execution_deadline7590 #check_execution_time!7591 when execution is expired7592 raises an error7593 when execution is not expired7594 does not raises any errors7595 without setting a deadline7596 does not raises any errors7597 #mutate7598 with attributes7599 behaves like a mutated context7600 is expected not to eq #<Gitlab::Ci::Config::External::Context:0x00007f9a0a634448 @project=#<Double "Project">, @sha="12345"...=nil>, @expandset=#<Set: {:a_file}>, @execution_deadline=8063.924694482, @logger=#<Double "logger">>7601 is expected to be a kind of Gitlab::Ci::Config::External::Context7602 is expected to have attributes {:project => #<Double (anonymous)>, :sha => "56789", :user => #<Double (anonymous)>}7603 is expected to eq #<Set: {:a_file}>7604 is expected to eq 8064.1030195017605 is expected to eq #<Double "logger">7606 without attributes7607 behaves like a mutated context7608 is expected not to eq #<Gitlab::Ci::Config::External::Context:0x00007f9a0967ff70 @project=#<Double "Project">, @sha="12345"...=nil>, @expandset=#<Set: {:a_file}>, @execution_deadline=8064.175504652, @logger=#<Double "logger">>7609 is expected to be a kind of Gitlab::Ci::Config::External::Context7610 is expected to have attributes {}7611 is expected to eq #<Set: {:a_file}>7612 is expected to eq 8064.3073220477613 is expected to eq #<Double "logger">7614 #sentry_payload7615 is expected to match (a hash including :project and :user)7616Gitlab::Database::Migrations::TestBatchedBackgroundRunner7617 running a real background migration7618 runs sampled jobs from the batched background migration7619 with jobs to run7620 samples jobs7621 with multiple jobs to run7622 runs all jobs created within the last 48 hours7623Projects::OpenIssuesCountService7624 behaves like a counter caching service7625 #count7626 caches the count7627 #refresh_cache7628 refreshes the cache7629 #delete_cache7630 removes the cache7631 #uncached_count7632 does not cache the count7633 #count7634 when user is nil7635 does not include confidential issues in the issue count7636 when user is provided7637 when user can read confidential issues7638 returns the right count with confidential issues7639 uses total_open_issues_count cache key7640 when user cannot read confidential issues7641 does not include confidential issues7642 uses public_open_issues_count cache key7643 #refresh_cache7644 when cache is empty7645 refreshes cache keys correctly7646 when cache is outdated7647 refreshes cache keys correctly7648ErrorTracking::Error7649 relationships7650 is expected to belong to project required: false7651 is expected to have many events7652 validations7653 is expected to validate that :name cannot be empty/falsy7654 is expected to validate that the length of :name is at most 2557655 is expected to validate that :description cannot be empty/falsy7656 is expected to validate that the length of :description is at most 10247657 is expected to validate that :actor cannot be empty/falsy7658 is expected to validate that the length of :actor is at most 2557659 is expected to validate that the length of :platform is at most 2557660 .report_error7661 updates existing record with a new timestamp7662 .sort_by_attribute7663 id desc by default7664 is expected to eq [#<ErrorTracking::Error id: 3, project_id: 1674, name: "ActionView::MissingTemplate", description: [F...6 +0000", updated_at: "2022-06-29 20:26:07.300466786 +0000", events_count: 0, status: "unresolved">]7665 first_seen7666 is expected to eq [#<ErrorTracking::Error id: 1, project_id: 1672, name: "ActionView::MissingTemplate", description: [F...2 +0000", updated_at: "2022-06-29 20:26:09.497995512 +0000", events_count: 0, status: "unresolved">]7667 last_seen7668 is expected to eq [#<ErrorTracking::Error id: 1, project_id: 1672, name: "ActionView::MissingTemplate", description: [F...8 +0000", updated_at: "2022-06-29 20:26:10.028085888 +0000", events_count: 0, status: "unresolved">]7669 frequency7670 is expected to eq [#<ErrorTracking::Error id: 8, project_id: 1679, name: "ActionView::MissingTemplate", description: [F...6 +0000", updated_at: "2022-06-29 20:26:07.300466786 +0000", events_count: 0, status: "unresolved">]7671 #title7672 is expected to eq "ActionView::MissingTemplate Missing template posts/edit"7673 #to_sentry_error7674 is expected to be a kind of Gitlab::ErrorTracking::Error7675 #to_sentry_detailed_error7676 is expected to be a kind of Gitlab::ErrorTracking::DetailedError7677 is expected to be truthy7678 is expected to eq "db853d7"7679 is expected to eq "db853d7"7680MergeRequests::UpdateHeadPipelineWorker7681 behaves like subscribes to event7682 consumes the published event7683 behaves like an idempotent worker7684 is labeled as idempotent7685 performs multiple times sequentially without raising an exception7686 when merge requests already exist for this source branch7687 when the head pipeline sha equals merge request sha7688 updates head pipeline of each merge request7689 when the merge request is not open7690 only updates the open merge requests7691 when the head pipeline sha does not equal merge request sha7692 does not update the head piepeline of MRs7693 when there is no pipeline for source branch7694 does not update merge request head pipeline7695 when merge request target project is different from source project7696 updates head pipeline for merge request7697 when the pipeline is not the latest for the branch7698 does not update merge request head pipeline7699 when pipeline has errors7700 updates merge request head pipeline reference7701Gitlab::FileFinder7702 #find7703 does not cause N+1 query7704 behaves like file finder7705 finds by path7706 finds by content7707 with inclusive filters7708 filters by filename7709 filters by path7710 filters by extension7711 with exclusive filters7712 filters by filename7713 filters by path7714 filters by extension7715 with white space in the path7716 filters by path correctly7717PrometheusAlertEvent7718 associations7719 is expected to belong to prometheus_alert required: true7720 validations7721 is expected to be valid7722 is expected to validate that :prometheus_alert cannot be empty/falsy, producing a custom validation error on failure7723 is expected to validate that :payload_key is case-sensitively unique within the scope of :prometheus_alert_id7724 is expected to validate that :started_at cannot be empty/falsy7725 payload_key & ended_at7726 absent if firing?7727 is expected to validate that :payload_key cannot be empty/falsy7728 is expected not to validate that :ended_at cannot be empty/falsy7729 present if resolved?7730 is expected not to validate that :payload_key cannot be empty/falsy7731 is expected to validate that :ended_at cannot be empty/falsy7732 #title7733 delegates to alert7734 prometheus_metric_id7735 delegates to alert7736 transaction7737 fire7738 when status is none7739 fires an event7740 when firing7741 cannot fire again7742 resolve7743 when firing7744 resolves an event7745 when resolved7746 cannot resolve again7747CustomerRelations::IssueContact7748 is expected to be valid7749 associations7750 is expected to belong to issue required: true7751 is expected to belong to contact required: true7752 factory7753 for root groups7754 uses objects from the same group7755 for subgroups7756 builds using the root ancestor7757 validation7758 fails when the contact group is unrelated to the issue group7759 succeeds when the contact belongs to a root group and is the same as the issue group7760 succeeds when the contact belongs to a root group and it is an ancestor of the issue group7761 #self.find_contact_ids_by_emails7762 returns ids of contacts from issue7763 does not return ids of contacts from other issues7764 raises ArgumentError when called with too many emails7765 .delete_for_project7766 destroys all issue_contacts for project7767 .delete_for_group7768 destroys all issue_contacts for projects in group and subgroups7769Clusters::Applications::UninstallService#execute7770 when there are no errors7771 make the application to be uninstalling7772 schedule async installation status check7773 when k8s cluster communication fails7774 logs into kubernetes.log and Sentry7775 make the application errored7776 a non kubernetes error happens7777 logs into kubernetes.log and Sentry7778 make the application errored7779layouts/nav/sidebar/_admin7780 on home page7781 behaves like page has active tab7782 activates Overview tab7783 behaves like has nav sidebar7784 has collapsed nav sidebar on mobile7785 on projects7786 behaves like page has active tab7787 activates Overview tab7788 behaves like page has active sub tab7789 activates Projects sub tab7790 on groups7791 behaves like page has active tab7792 activates Overview tab7793 behaves like page has active sub tab7794 activates Groups sub tab7795 on users7796 behaves like page has active tab7797 activates Overview tab7798 behaves like page has active sub tab7799 activates Users sub tab7800 on topics7801 behaves like page has active tab7802 activates Overview tab7803 behaves like page has active sub tab7804 activates Topics sub tab7805 on messages7806 behaves like page has active tab7807 activates Messages tab7808 on analytics7809 behaves like page has active tab7810 activates Analytics tab7811 on hooks7812 behaves like page has active tab7813 activates Hooks tab7814 on background jobs7815 behaves like page has active tab7816 activates Monitoring tab7817 behaves like page has active sub tab7818 activates Background Jobs sub tab7819 on settings7820 includes General link7821 when GitLab.com7822 does not include Integrations link7823 when not GitLab.com7824 includes Integrations link7825 when GitLab FOSS7826 does not include Templates link7827Upload7828 associations7829 is expected to belong to model required: false7830 validations7831 is expected to validate that :size cannot be empty/falsy7832 is expected to validate that :path cannot be empty/falsy7833 is expected to validate that :model cannot be empty/falsy7834 is expected to validate that :uploader cannot be empty/falsy7835 callbacks7836 for a file above the checksum threshold7837 schedules checksum calculation7838 for a file at or below the checksum threshold7839 calculates checksum immediately before save7840 after_destroy7841 uploader is FileUploader-based7842 calls delete_file!7843 #absolute_path7844 returns the path directly when already absolute7845 delegates to the uploader's absolute_path method7846 #relative_path7847 delegates to the uploader's relative_path method7848 #calculate_checksum!7849 sets `checksum` to SHA256 sum of the file7850 sets `checksum` to nil for a non-existent file7851 #build_uploader7852 returns a uploader object with current upload associated with it7853 #retrieve_uploader7854 returns a uploader object with current uploader associated with and cache retrieved7855 when upload has mount_point nil7856 when an upload belongs to a note7857 mounts it as attachment7858 when an upload does not belong to a note7859 does not mount it as attachment7860 #needs_checksum?7861 with local storage7862 returns true when no checksum exists7863 returns false when checksum is already present7864 with remote storage7865 returns false7866 #exist?7867 returns true when the file exists7868 when the file does not exist7869 returns false7870 when the record is persisted7871 sends a message to Sentry7872 increments a metric counter to signal a problem7873 when the record is not persisted7874 does not send a message to Sentry7875 does not increment a metric counter7876 #uploader_context7877 is expected to match (a hash including {:secret => "secret", :identifier => "file.txt"})7878 #update_project_statistics7879 updates project statistics when upload is added7880 updates project statistics when upload is removed7881WebIdeTerminal7882 returns the show_path of the build7883 returns the retry_path of the build7884 returns the cancel_path of the build7885 returns the terminal_path of the build7886 returns the proxy_websocket_path of the build7887 services7888 when image does not have an alias7889 returns services aliases7890 when both image and services have aliases7891 returns all aliases7892 when image and services does not have any alias7893 returns an empty array7894 when no image nor services7895 returns an empty array7896Projects::ImportExport::ProjectExportPresenter7897 #description7898 override_description not provided7899 keeps original description7900 override_description provided7901 overrides description7902 #as_json7903 override_description not provided7904 keeps original description7905 override_description provided7906 overrides description7907 #protected_branches7908 returns the project exported protected branches7909 #project_members7910 does not export group members if it has no permission7911 does not export group members as maintainer7912 exports group members as group owner7913 as admin7914 when admin mode is enabled7915 exports group members as admin7916 exports group members as project members7917 when admin mode is disabled7918 does not export group members7919Gitlab::Template::IssueTemplate7920 .all7921 strips the md suffix7922 combines the globals and rest7923 .find7924 returns nil if the file does not exist7925 returns the issue object of a valid file7926 .by_category7927 return array of templates7928 when repo is bare or empty7929 returns empty array7930 #content7931 loads the full file7932 raises error when file is not found7933 when repo is empty7934 raises file not found7935Packages::UpdatePackageFileService7936 #execute7937 with object storage disabled7938 behaves like updating package file with valid parameters7939 with both parameters set7940 updates the package file accordingly7941 with only file_name set7942 updates the package file accordingly7943 with only package_id set7944 updates the package file accordingly7945 behaves like not updating package with invalid parameters7946 with blank parameters7947 raise an argument error7948 with non persisted package file7949 raise an argument error7950 with object storage enabled7951 behaves like updating package file with valid parameters7952 with both parameters set7953 updates the package file accordingly7954 with only file_name set7955 updates the package file accordingly7956 with only package_id set7957 updates the package file accordingly7958 behaves like not updating package with invalid parameters7959 with blank parameters7960 raise an argument error7961 with non persisted package file7962 raise an argument error7963FeatureFlags::UpdateService7964 #execute7965 returns success status7966 creates audit event with correct message7967 when Jira Connect subscription does not exist7968 does not sync the feature flag to Jira7969 when Jira Connect subscription exists7970 syncs the feature flag to Jira7971 with invalid params7972 returns error status7973 returns error messages7974 does not create audit event7975 does not sync the feature flag to Jira7976 when user is reporter7977 returns error status7978 when nothing is changed7979 returns success status7980 does not create audit event7981 description is being changed7982 creates audit event with changed description7983 when flag active state is changed7984 creates audit event about changing active state7985 executes hooks7986ReleasesHelper7987 #illustration7988 returns the correct image path7989 #releases_help_page_path7990 returns the correct link to the help page7991 url helpers7992 #data_for_releases_page7993 includes the required data for displaying release blocks7994 when the user is allowed to create a new release7995 includes new_release_path7996 points new_release_path to the "New Release" page7997 #data_for_edit_release_page7998 has the needed data to display the "edit release" page7999 #data_for_new_release_page8000 has the needed data to display the "new release" page8001 #data_for_show_page8002 has the needed data to display the individual "release" page8003 startup queries8004 use_startup_query_for_index_page?8005 allows startup queries for non-paginated requests8006 disallows startup queries for requests paginated with a "before" cursor8007 disallows startup queries for requests paginated with an "after" cursor8008 #index_page_startup_query_variables8009 returns the correct GraphQL variables for the startup query8010NamespaceSetting8011 is expected to define :jobs_to_be_done as an enum backed by an integer with values ‹[:basics, :move_repository, :code_storage, :exploring, :ci, :other]›, suffix: true8012 is expected to define :enabled_git_access_protocol as an enum backed by an integer with values ‹[:all, :ssh, :http]›, suffix: true8013 behaves like sanitizable8014 includes Sanitizable8015 #default_branch_name8016 when input includes javascript tags8017 gets sanitized8018 #default_branch_name validation8019 when input contains pre-escaped html entities8020 is not valid8021 Associations8022 is expected to belong to namespace required: false8023 validations8024 #default_branch_name_content8025 when not set8026 behaves like doesn't return an error8027 doesn't return an error8028 when set8029 behaves like doesn't return an error8030 doesn't return an error8031 when an empty string8032 behaves like doesn't return an error8033 doesn't return an error8034 #allow_mfa_for_group8035 group is top-level group8036 is valid8037 group is a subgroup8038 is invalid8039 #allow_resource_access_token_creation_for_group8040 group is top-level group8041 is valid8042 group is a subgroup8043 is invalid when resource access token creation is not enabled8044 is valid when resource access tokens are enabled8045 #prevent_sharing_groups_outside_hierarchy8046 when this namespace is a root ancestor8047 returns the actual stored value8048 when this namespace is a descendant8049 returns the value stored for the parent settings8050Users::UpdateService8051 #execute8052 updates time preferences8053 returns an error result when record cannot be updated8054 includes namespace error messages8055 updates the status if status params were given8056 does not delete the status if no status param was passed8057 includes status error messages8058 updates user detail with provided attributes8059 updating canonical email8060 if email was changed8061 calls canonicalize_email8062 when check_password is true8063 returns error if no password confirmation was passed8064 returns error if wrong password confirmation was passed8065 does not require password if it was automatically set8066 does not require a password if the attribute changed does not require it8067 when check_password is left to false8068 does not require a password check8069 if email was NOT changed8070 skips update canonicalize email service call8071 #execute!8072 updates the name8073 raises an error when record cannot be updated8074 fires system hooks when a new user is saved8075Gitlab::Ci::Pipeline::Chain::Build::Associations8076 sets pipeline variables8077 when a bridge is passed in to the pipeline creation8078 links the pipeline to the upstream bridge job8079 behaves like does not break the chain8080 returns false8081 when a bridge is not passed in to the pipeline creation8082 leaves the source pipeline empty8083 behaves like does not break the chain8084 returns false8085 when project setting restrict_user_defined_variables is enabled8086 when user is developer8087 returns an error on variables_attributes8088 behaves like breaks the chain8089 returns true8090 when variables_attributes is not specified8091 assigns empty variables8092 behaves like does not break the chain8093 returns false8094 when user is maintainer8095 assigns variables_attributes8096 behaves like does not break the chain8097 returns false8098 with duplicate pipeline variables8099 returns an error for variables_attributes8100 behaves like breaks the chain8101 returns true8102Gitlab::Checks::ChangesAccess8103 #validate!8104 without failed checks8105 doesn't raise an error8106 calls lfs checks8107 when time limit was reached8108 raises a TimeoutError8109 #commits8110 calls #new_commits8111 when changes contain empty revisions8112 with oldrev8113 behaves like returns only commits with non empty revisions8114 is expected to contain exactly #<InstanceDouble(Commit) (anonymous)>8115 without oldrev8116 behaves like returns only commits with non empty revisions8117 is expected to contain exactly #<InstanceDouble(Commit) (anonymous)>8118 #commits_for8119 with no commits8120 behaves like a listing of new commits8121 returns expected commits8122 with unrelated commits8123 behaves like a listing of new commits8124 returns expected commits8125 with single related commit8126 behaves like a listing of new commits8127 returns expected commits8128 with single related and unrelated commit8129 behaves like a listing of new commits8130 returns expected commits8131 with multiple related commits8132 behaves like a listing of new commits8133 returns expected commits8134 with merge commits8135 behaves like a listing of new commits8136 returns expected commits8137 with criss-cross merges8138 behaves like a listing of new commits8139 returns expected commits8140 with over-push8141 behaves like a listing of new commits8142 returns expected commits8143 #single_change_accesses8144 with no changes8145 behaves like #single_change_access8146 returns an array of SingleChangeAccess8147 with a single change and no new commits8148 behaves like #single_change_access8149 returns an array of SingleChangeAccess8150 with a single change and new commits8151 behaves like #single_change_access8152 returns an array of SingleChangeAccess8153 with multiple changes8154 behaves like #single_change_access8155 returns an array of SingleChangeAccess8156Projects::LfsPointers::LfsLinkService8157 #execute8158 raises an error when trying to link too many objects at once8159 links existing lfs objects to the project8160 returns linked oids8161 links in batches8162 only queries for the batch that will be processed8163 only queries 3 times8164Types::Terraform::StateVersionType8165 is expected to eq "TerraformStateVersion"8166 is expected to require graphql authorizations :read_terraform_state8167 fields8168 is expected to have graphql fields :id, :created_by_user, :job, :download_path, :serial, :created_at, and :updated_at8169 is expected to be non null8170 is expected not to be non null8171 is expected not to be non null8172 is expected not to be non null8173 is expected not to be non null8174 is expected to be non null8175 is expected to be non null8176 query8177 returns job of the latest version8178 behaves like returning latest version8179 returns latest version of terraform state8180 when user cannot read jobs8181 does not return job of the latest version8182 behaves like returning latest version8183 returns latest version of terraform state8184Gitlab::BlamePresenter8185 precalculates necessary data on init8186 #groups8187 delegates #groups call to the blame8188 #first_line8189 delegates #first_line call to the blame8190 #commit_data8191 has the data necessary to render the view8192 renamed file8193 does not generate link to previous blame on initial commit8194 generates link link to previous blame8195Packages::Debian::FileEntry8196 validations8197 is expected to be valid8198 #filename8199 is expected to validate that :filename cannot be empty/falsy8200 is expected not to allow :filename to be ‹"Hé"›8201 #size8202 is expected to validate that :size cannot be empty/falsy8203 #md5sum8204 is expected to validate that :md5sum cannot be empty/falsy8205 is expected not to allow :md5sum to be ‹"12345678901234567890123456789012"›, producing a custom validation error on failure8206 #section8207 is expected to validate that :section cannot be empty/falsy8208 #priority8209 is expected to validate that :priority cannot be empty/falsy8210 #sha1sum8211 is expected to validate that :sha1sum cannot be empty/falsy8212 is expected not to allow :sha1sum to be ‹"1234567890123456789012345678901234567890"›, producing a custom validation error on failure8213 #sha256sum8214 is expected to validate that :sha256sum cannot be empty/falsy8215 is expected not to allow :sha256sum to be ‹"1234567890123456789012345678901234567890123456789012345678901234"›, producing a custom validation error on failure8216 #package_file8217 is expected to validate that :package_file cannot be empty/falsy8218 #component8219 without section8220 is expected to eq "main"8221 with empty section8222 is expected to eq "main"8223 with ruby section8224 is expected to eq "main"8225 with contrib/ruby section8226 is expected to eq "contrib"8227admin/application_settings/general.html.haml8228 sourcegraph integration8229 when sourcegraph feature is enabled8230 show the form8231 when sourcegraph feature is disabled8232 show the form8233 prompt user about registration features8234 when service ping is enabled8235 behaves like does not render registration features prompt8236 does not render a placeholder input with registration features message8237 with no license and service ping disabled8238 behaves like renders registration features prompt8239 renders a placeholder input with registration features message8240 add license8241 does not show the Add License section8242 jira connect application key8243 shows the jira connect application key section8244 when the jira_connect_oauth feature flag is disabled8245 does not show the jira connect application key section8246 sign-up restrictions8247 renders js-signup-form tag8248Gitlab::Shell8249 is expected to respond to #remove_repository8250 memoized secret_token8251 creates and links the secret token file8252 projects commands8253 #remove_repository8254 returns true when the command succeeds8255 keeps the namespace directory8256 #mv_repository8257 returns true when the command succeeds8258 returns false when the command fails8259 namespace actions8260 #add_namespace8261 creates a namespace8262 #repository_exists?8263 when the repository does not exist8264 returns false8265 when the repository exists8266 returns true8267 #remove8268 removes the namespace8269 #mv_namespace8270 renames the namespace8271Users::UpdateTodoCountCacheService8272 #execute8273 updates the todos_counts for users8274 avoids N+1 queries8275 executes one query per batch of users8276 sets the correct cache expire time8277Gitlab::WebIde::Config::Entry::Global8278 .nodes8279 returns a hash8280 when filtering all the entry/node names8281 contains the expected node names8282 when configuration is valid8283 when some entries defined8284 #compose!8285 creates nodes hash8286 creates node object for each entry8287 creates node object using valid class8288 sets correct description for nodes8289 #leaf?8290 is not leaf8291 when not composed8292 #terminal_value8293 returns nil8294 #leaf?8295 is leaf8296 when composed8297 #errors8298 has no errors8299 #terminal_value8300 returns correct script8301 when configuration is not valid8302 when job does not have valid before script8303 #errors8304 reports errors about missing script8305 when value is not a hash8306 #valid?8307 is not valid8308 #errors8309 returns error about invalid type8310 #specified?8311 is concrete entry that is defined8312 #[]8313 when entry exists8314 returns correct entry8315 when entry does not exist8316 always return unspecified node8317Types::BoardListType8318 is expected to eq "BoardList"8319 has specific fields8320 issues field8321 has a correct extension8322 title8323 preloads the label association8324FeatureFlags::CreateService8325 #execute8326 when feature flag can not be created8327 returns status error8328 returns validation errors8329 does not create audit log8330 does not sync the feature flag to Jira8331 when feature flag is saved correctly8332 returns status success8333 creates feature flag8334 creates audit event8335 when Jira Connect subscription does not exist8336 does not sync the feature flag to Jira8337 when Jira Connect subscription exists8338 syncs the feature flag to Jira8339 when user is reporter8340 returns error status8341Gitlab::WebHooks::RateLimiter8342 #rate_limit!8343 when there is no plan limit8344 hook: project_hook8345 behaves like a hook that is never rate limited8346 is expected to eq false8347 hook: system_hook8348 behaves like a hook that is never rate limited8349 is expected to eq false8350 hook: integration_hook8351 behaves like a hook that is never rate limited8352 is expected to eq false8353 when there is a plan limit8354 hook: project_hook, limitless_hook_type: false8355 rate limits the hook, returning true when rate limited8356 hook: system_hook, limitless_hook_type: true8357 behaves like a hook that is never rate limited8358 is expected to eq false8359 hook: integration_hook, limitless_hook_type: true8360 behaves like a hook that is never rate limited8361 is expected to eq false8362 rate limit scope8363 rate limits all hooks from the same namespace8364 #rate_limited?8365 when no plan limit has been defined8366 hook: project_hook8367 is expected to eq false8368 hook: system_hook8369 is expected to eq false8370 hook: integration_hook8371 is expected to eq false8372 when there is a plan limit8373 when hook is not rate-limited8374 hook: project_hook8375 is expected to eq false8376 hook: system_hook8377 is expected to eq false8378 hook: integration_hook8379 is expected to eq false8380 when hook is rate-limited8381 hook: project_hook, limitless_hook_type: false8382 is expected to eq true8383 hook: system_hook, limitless_hook_type: true8384 is expected to eq false8385 hook: integration_hook, limitless_hook_type: true8386 is expected to eq false8387SpamLog8388 associations8389 is expected to belong to user required: false8390 validations8391 is expected to validate that :user cannot be empty/falsy8392 #remove_user8393 blocks the user8394 when admin mode is enabled8395 removes the user8396 when admin mode is disabled8397 does not allow to remove the user8398 .verify_recaptcha!8399 the record cannot be found8400 updates nothing8401 does not error despite not finding a record8402 the record exists8403 updates recaptcha_verified8404PipelineMetricsWorker8405 #perform8406 when pipeline is running8407 records the build start time8408 clears the build end time8409 records the pipeline8410 when pipeline succeeded8411 records the build end time8412 records the pipeline8413IssueEmailParticipant8414 Associations8415 is expected to belong to issue required: false8416 Validations8417 is expected to validate that :issue cannot be empty/falsy8418 is expected to validate that :email is unique within the scope of :issue_id8419 is invalid if the email is nil8420 behaves like an object with RFC3696 compliant email-formatted attributes8421 specifically its :email attribute8422 with a value of 'info@example.com'8423 is valid8424 with a value of 'info+test@example.com'8425 is valid8426 with a value of 'o'reilly@example.com'8427 is valid8428 with a value of 'foobar'8429 is invalid8430 with a value of 'test@test@example.com'8431 is invalid8432 with a value of 'test.test.@example.com'8433 is invalid8434 with a value of '.test.test@example.com'8435 is invalid8436 with a value of 'mailto:test@example.com'8437 is invalid8438 with a value of 'lol!'+=?><#$%^&*()@gmail.com'8439 is invalid8440Discussions::CaptureDiffNotePositionService8441 image note on diff8442 is note affected by the service8443 when empty paths are passed as a param8444 does not calculate positons8445 when position tracer returned position8446 which is nil8447 does not create diff note position8448 which does not have a corresponding line8449 does not create diff note position8450GroupGroupLink8451 relations8452 is expected to belong to shared_group required: false8453 is expected to belong to shared_with_group required: false8454 scopes8455 .non_guests8456 returns all records which are greater than Guests access8457 .distinct_on_shared_with_group_id_with_group_access8458 returns only one group link per group (with max group access)8459 validation8460 is expected to validate that :shared_group cannot be empty/falsy8461 is expected to validate that :shared_group_id is case-sensitively unique within the scope of :shared_with_group_id, producing a custom validation error on failure8462 is expected to validate that :shared_with_group cannot be empty/falsy8463 is expected to validate that :group_access cannot be empty/falsy8464 is expected to validate that :group_access is either ‹10›, ‹20›, ‹30›, or ‹40›8465 #human_access8466 delegates to Gitlab::Access8467 search by group name8468 is expected to eq [#<GroupGroupLink id: 2, created_at: "2022-06-29 20:28:15.240868874 +0000", updated_at: "2022-06-29 2...68874 +0000", shared_group_id: 4631, shared_with_group_id: 4630, expires_at: nil, group_access: 30>]8469 is expected to be empty8470Gitlab::TaskHelpers8471 #checkout_or_clone_version8472 checkout the version and reset to it8473 accepts clone_opts8474 target_dir doesn't exist8475 clones the repo8476 target_dir exists8477 doesn't clone the repository8478 #clone_repo8479 clones the repo in the target dir8480 accepts clone_opts8481 #checkout_version8482 clones the repo in the target dir8483 #run_command8484 runs command and return the output8485 returns empty string when command doesnt exist8486 #run_command!8487 runs command and return the output8488 returns and exception when command exit with non zero code8489 #get_version8490 version: "1.1.1", result: "v1.1.1"8491 is expected to eq "v1.1.1"8492 version: "master", result: "master"8493 is expected to eq "master"8494 version: "12.4.0-rc7", result: "v12.4.0-rc7"8495 is expected to eq "v12.4.0-rc7"8496 version: "594c3ea3e0e5540e5915bd1c49713a0381459dd6", result: "594c3ea3e0e5540e5915bd1c49713a0381459dd6"8497 is expected to eq "594c3ea3e0e5540e5915bd1c49713a0381459dd6"8498AuthorizedProjectUpdate::ProjectRecalculateWorker8499 is labeled as high urgency8500 is labeled as idempotent8501 performs multiple times sequentially without raising an exception8502 does not change authorizations when run twice8503 #perform8504 does not fail if the project does not exist8505 calls AuthorizedProjectUpdate::ProjectRecalculateService8506 exclusive lease8507 when exclusive lease has not been taken8508 obtains a new exclusive lease8509 when exclusive lease has already been taken8510 raises an error8511Gitlab::Ci::Config::Entry::Port8512 when configuration is a string8513 #valid?8514 is valid8515 #value8516 returns valid hash8517 #number8518 returns port number8519 #protocol8520 is nil8521 #name8522 is nil8523 when configuration is a hash8524 with the complete hash8525 #valid?8526 is valid8527 #value8528 returns valid hash8529 #number8530 returns port number8531 #protocol8532 returns port protocol8533 #name8534 returns port name8535 with only the port number8536 #valid?8537 is valid8538 #value8539 returns valid hash8540 #number8541 returns port number8542 #protocol8543 is nil8544 #name8545 is nil8546 without the number8547 #valid?8548 is not valid8549 when configuration is invalid8550 #valid?8551 is valid8552 when protocol8553 is http8554 #valid?8555 is valid8556 is https8557 #valid?8558 is valid8559 is neither http nor https8560 #valid?8561 is invalid8562Projects::Prometheus::AlertsFinder8563 with params8564 #execute8565 with project8566 is expected to eq [#<PrometheusAlert id: 4, created_at: "2022-06-29 20:28:20.799926645 +0000", updated_at: "2022-06-29 ...0, operator: "gt", environment_id: 18, project_id: 1809, prometheus_metric_id: 6, runbook_url: nil>]8567 with matching metric8568 is expected to eq [#<PrometheusAlert id: 4, created_at: "2022-06-29 20:28:20.799926645 +0000", updated_at: "2022-06-29 ...0, operator: "gt", environment_id: 17, project_id: 1809, prometheus_metric_id: 4, runbook_url: nil>]8569 with matching metric id8570 is expected to eq [#<PrometheusAlert id: 4, created_at: "2022-06-29 20:28:20.799926645 +0000", updated_at: "2022-06-29 ...0, operator: "gt", environment_id: 17, project_id: 1809, prometheus_metric_id: 4, runbook_url: nil>]8571 with project non-specific metric8572 is expected to be empty8573 with environment8574 is expected to eq [#<PrometheusAlert id: 4, created_at: "2022-06-29 20:28:20.799926645 +0000", updated_at: "2022-06-29 ...0, operator: "gt", environment_id: 17, project_id: 1809, prometheus_metric_id: 5, runbook_url: nil>]8575 with matching metric8576 is expected to eq [#<PrometheusAlert id: 4, created_at: "2022-06-29 20:28:20.799926645 +0000", updated_at: "2022-06-29 ...0, operator: "gt", environment_id: 17, project_id: 1809, prometheus_metric_id: 4, runbook_url: nil>]8577 with environment non-specific metric8578 is expected to be empty8579 with matching project and environment8580 is expected to eq [#<PrometheusAlert id: 4, created_at: "2022-06-29 20:28:20.799926645 +0000", updated_at: "2022-06-29 ...0, operator: "gt", environment_id: 17, project_id: 1809, prometheus_metric_id: 5, runbook_url: nil>]8581 with matching metric8582 is expected to eq [#<PrometheusAlert id: 4, created_at: "2022-06-29 20:28:20.799926645 +0000", updated_at: "2022-06-29 ...0, operator: "gt", environment_id: 17, project_id: 1809, prometheus_metric_id: 4, runbook_url: nil>]8583 with environment non-specific metric8584 is expected to be empty8585 with matching id8586 is expected to eq [#<PrometheusAlert id: 4, created_at: "2022-06-29 20:28:20.799926645 +0000", updated_at: "2022-06-29 ...0, operator: "gt", environment_id: 17, project_id: 1809, prometheus_metric_id: 4, runbook_url: nil>]8587 with a nil id8588 is expected to eq [#<PrometheusAlert id: 4, created_at: "2022-06-29 20:28:20.799926645 +0000", updated_at: "2022-06-29 ...0, operator: "gt", environment_id: 17, project_id: 1809, prometheus_metric_id: 5, runbook_url: nil>]8589 with non-matching project-environment pair8590 is expected to be empty8591 with id8592 is expected to eq [#<PrometheusAlert id: 4, created_at: "2022-06-29 20:28:20.799926645 +0000", updated_at: "2022-06-29 ...0, operator: "gt", environment_id: 17, project_id: 1809, prometheus_metric_id: 4, runbook_url: nil>]8593 with multiple ids8594 is expected to eq [#<PrometheusAlert id: 4, created_at: "2022-06-29 20:28:20.799926645 +0000", updated_at: "2022-06-29 ...0, operator: "gt", environment_id: 16, project_id: 1810, prometheus_metric_id: 7, runbook_url: nil>]8595 with non-matching id8596 is expected to be empty8597 without params8598 raises an error8599Gitlab::AlertManagement::Payload::ManagedPrometheus8600 behaves like subclass has expected api8601 defines all public methods in the base class8602 #metric_id8603 is expected to be nil8604 with gitlab_alert_id8605 is expected to eq 128606 #gitlab_prometheus_alert_id8607 is expected to be nil8608 with gitlab_alert_id8609 is expected to eq 128610 #gitlab_alert8611 without alert info in payload8612 is expected to be nil8613 with metric id in payload8614 without matching alert8615 is expected to be nil8616 with matching alert8617 is expected to eq #<PrometheusAlert id: 8, created_at: "2022-06-29 20:28:22.571803772 +0000", updated_at: "2022-06-29 2....0, operator: "gt", environment_id: 19, project_id: 1811, prometheus_metric_id: 8, runbook_url: nil>8618 when unclear which alert applies8619 is expected to be nil8620 with alert id8621 without matching alert8622 is expected to be nil8623 with matching alerts8624 is expected to eq #<PrometheusAlert id: 10, created_at: "2022-06-29 20:28:22.952675016 +0000", updated_at: "2022-06-29 ....0, operator: "gt", environment_id: 21, project_id: 1811, prometheus_metric_id: 9, runbook_url: nil>8625 #full_query8626 is expected to be nil8627 with gitlab alert8628 is expected to eq "avg(metric) > 1.0"8629 with sufficient fallback info8630 is expected to eq "vector(1)"8631 #environment8632 with gitlab alert8633 is expected to eq #<Environment id: 23, project_id: 1811, name: "environment29", created_at: "2022-06-29 20:28:23.35738...l, state: "available", slug: "environment29", auto_stop_at: nil, auto_delete_at: nil, tier: "other">8634 with sufficient fallback info8635 is expected to eq #<Environment id: 24, project_id: 1811, name: "production", created_at: "2022-06-29 20:28:23.52317362... state: "available", slug: "production", auto_stop_at: nil, auto_delete_at: nil, tier: "production">8636 #metrics_dashboard_url8637 without alert8638 is expected to be nil8639 with gitlab alert8640 is expected to eq "http://localhost/namespace1191/project2033/prometheus/alerts/12/metrics_dashboard?embedded=true&end=2018-03-12T09%3A36%3A00Z&environment_id=25&start=2018-03-12T08%3A36%3A00Z"8641Gitlab::Analytics::CycleAnalytics::StageEvents::PlanStageStart8642 filters issues where first_associated_with_milestone_at or first_added_to_board_at is filled8643 behaves like value stream analytics event8644 is expected to be a kind of String8645 is expected to be a kind of Symbol8646 is expected to include ApplicationRecord(abstract)8647 is expected to respond to #timestamp_projection8648 is expected to respond to #html_description8649 is expected to be a kind of Array8650 #apply_query_customization8651 expects an ActiveRecord::Relation object as argument and returns a modified version of it8652 #hash_code8653 returns a hash that uniquely identifies an event8654 does not differ when the same object is built with the same params8655 behaves like LEFT JOIN-able value stream analytics event8656 can use the event as LEFT JOIN8657 when looking at the record with data8658 contains the timestamp expression8659 when looking at the record without data8660 returns nil for the timestamp expression8661Users::CalloutsHelper8662 .show_gke_cluster_integration_callout?8663 when user can create a cluster8664 when user has not dismissed8665 when active_nav_link is in the operations section8666 is expected to equal true8667 when active_nav_link is not in the operations section8668 is expected to equal false8669 when user dismissed8670 is expected to equal false8671 when user can not create a cluster8672 is expected to equal false8673 .render_flash_user_callout8674 renders the flash_user_callout partial8675 .show_feature_flags_new_version?8676 when the feature flags new version info has not been dismissed8677 is expected to be truthy8678 when the feature flags new version has been dismissed8679 is expected to be falsy8680 .show_registration_enabled_user_callout?8681 when on gitlab.com8682 is expected to equal false8683 when `current_user` is not an admin8684 is expected to equal false8685 when signup is disabled8686 is expected to equal false8687 when user has dismissed callout8688 is expected to equal false8689 when controller path is not allowed8690 is expected to equal false8691 when not gitlab.com, `current_user` is an admin, signup is enabled, user has not dismissed callout, and controller path is allowed8692 is expected to equal true8693 .show_unfinished_tag_cleanup_callout?8694 when user has not dismissed8695 is expected to equal true8696 when user dismissed8697 is expected to equal false8698 .show_security_newsletter_user_callout?8699 when `current_user` is not an admin8700 is expected to equal false8701 when user has dismissed callout8702 is expected to equal false8703 when `current_user` is an admin and user has not dismissed callout8704 is expected to equal true8705Mutations::Terraform::State::Unlock8706 is expected to eq "TerraformStateUnlock"8707 is expected to require graphql authorizations :admin_terraform_state8708 #resolve8709 user does not have permission8710 raises an error8711 user has permission8712 unlocks the state8713 state is already unlocked8714 does not modify the state8715 with invalid params8716 raises an error8717WorkItems::CreateFromTaskService8718 #execute8719 when work item params are valid8720 is expected to be success8721 creates a work item and links it to the original work item successfully8722 replaces the original issue markdown description with new work item reference8723 when last operation fails8724 rollbacks all operations8725 is expected to be error8726 returns an error message8727 when work item params are invalid8728 returns work item errors8729 behaves like CreateFromTask service with invalid params8730 is expected to be error8731 does not create a work item or links8732Banzai::Pipeline::DescriptionPipeline8733 uses a limited allowlist8734 removes 'pre' elements8735 removes 'code' elements8736 removes 'img' elements8737 removes 'ol' elements8738 removes 'ul' elements8739 removes 'li' elements8740 still allows 'b' elements8741 still allows 'i' elements8742 still allows 'strong' elements8743 still allows 'em' elements8744 still allows 'a' elements8745 still allows 'ins' elements8746 still allows 'del' elements8747 still allows 'sup' elements8748 still allows 'sub' elements8749 still allows 'p' elements8750Gitlab::ProtocolAccess8751 .allowed?8752 protocol: "web", project: nil, admin_setting: nil, namespace_setting: nil, expected_result: true8753 is expected to equal true8754 protocol: "ssh", project: nil, admin_setting: nil, namespace_setting: nil, expected_result: true8755 is expected to equal true8756 protocol: "http", project: nil, admin_setting: nil, namespace_setting: nil, expected_result: true8757 is expected to equal true8758 protocol: "ssh", project: nil, admin_setting: "", namespace_setting: nil, expected_result: true8759 is expected to equal true8760 protocol: "http", project: nil, admin_setting: "", namespace_setting: nil, expected_result: true8761 is expected to equal true8762 protocol: "ssh", project: nil, admin_setting: "ssh", namespace_setting: nil, expected_result: true8763 is expected to equal true8764 protocol: "http", project: nil, admin_setting: "http", namespace_setting: nil, expected_result: true8765 is expected to equal true8766 protocol: "ssh", project: nil, admin_setting: "http", namespace_setting: nil, expected_result: false8767 is expected to equal false8768 protocol: "http", project: nil, admin_setting: "ssh", namespace_setting: nil, expected_result: false8769 is expected to equal false8770 protocol: "ssh", project: p1, admin_setting: nil, namespace_setting: "all", expected_result: true8771 is expected to equal true8772 protocol: "http", project: p1, admin_setting: nil, namespace_setting: "all", expected_result: true8773 is expected to equal true8774 protocol: "ssh", project: p1, admin_setting: nil, namespace_setting: "ssh", expected_result: true8775 is expected to equal true8776 protocol: "http", project: p1, admin_setting: nil, namespace_setting: "http", expected_result: true8777 is expected to equal true8778 protocol: "ssh", project: p1, admin_setting: nil, namespace_setting: "http", expected_result: false8779 is expected to equal false8780 protocol: "http", project: p1, admin_setting: nil, namespace_setting: "ssh", expected_result: false8781 is expected to equal false8782 protocol: "ssh", project: p1, admin_setting: "", namespace_setting: "all", expected_result: true8783 is expected to equal true8784 protocol: "http", project: p1, admin_setting: "", namespace_setting: "all", expected_result: true8785 is expected to equal true8786 protocol: "ssh", project: p1, admin_setting: "ssh", namespace_setting: "ssh", expected_result: true8787 is expected to equal true8788 protocol: "http", project: p1, admin_setting: "http", namespace_setting: "http", expected_result: true8789 is expected to equal true8790Integrations::PropagateService8791 .propagate8792 with inherited integration8793 calls to PropagateIntegrationProjectWorker8794 with a project without integration8795 calls to PropagateIntegrationProjectWorker8796 with a group without integration8797 calls to PropagateIntegrationProjectWorker8798 for a group-level integration8799 with a project without integration8800 calls to PropagateIntegrationProjectWorker8801 with a subgroup without integration8802 calls to PropagateIntegrationGroupWorker8803 with a subgroup with integration8804 calls to PropagateIntegrationInheritDescendantWorker8805Gitlab::Database::BackgroundMigrationJob8806 is expected to be a kind of Gitlab::Database::SharedModel(abstract)8807 behaves like having unique enum values8808 has unique values in "status"8809 .for_migration_execution8810 returns jobs matching class_name and arguments8811 normalizes class names by removing leading ::8812 .for_partitioning_migration8813 returns jobs matching class_name and the table_name job argument8814 normalizes class names by removing leading ::8815 .mark_all_as_succeeded8816 marks all matching jobs as succeeded8817 normalizes class_names by removing leading ::8818 returns the number of jobs updated8819 when previous matching jobs have already succeeded8820 does not update non-pending jobs8821 #class_name=8822 when the class_name is given without the leading ::8823 sets the class_name to the given value8824 when the class_name is given with the leading ::8825 removes the leading :: when setting the class_name8826 when the value is nil8827 sets the class_name to nil8828 when the values is blank8829 sets the class_name to the given value8830SystemNotes::IncidentsService8831 #add_timeline_event8832 posts the correct text to the system note8833 behaves like a system note8834 has the correct attributes8835 #edit_timeline_event8836 behaves like a system note8837 has the correct attributes8838 when only timeline event's occurred_at was changed8839 posts the correct text to the system note8840 when only timeline event's note was changed8841 posts the correct text to the system note8842 when both timeline events occurred_at and note was changed8843 posts the correct text to the system note8844 when was changed reason is unknown8845 posts the correct text to the system note8846 #delete_timeline_event8847 posts the correct text to the system note8848 behaves like a system note8849 has the correct attributes8850BulkImports::FileTransfer::ProjectConfig8851 portable_tree8852 returns portable tree8853 #export_path8854 returns tmpdir location8855 #portable_relations8856 returns a list of top level exportable relations8857 does not include skipped relations8858 #top_relation_tree8859 returns relation tree of a top level relation8860 #relation_excluded_keys8861 returns excluded keys for relation8862 #tree_relation?8863 when it is a tree relation8864 returns true8865 when it is not a tree relation8866 returns false8867 #file_relation?8868 when it is a file relation8869 returns true8870 when it is not a file relation8871 returns false8872 #tree_relation_definition_for8873 returns relation definition8874 when relation is not tree relation8875 returns8876 #file_relations8877 returns project file relations8878Deployments::CreateService8879 #execute8880 creates a deployment8881 does not change the status if no status is given8882 when the last deployment has the same parameters8883 does not create a new deployment8884 #deployment_attributes8885 only includes attributes that we want to persist8886Gitlab::Usage::Metric8887 #with_value8888 returns key_path metric with the corresponding value8889 #with_instrumentation8890 returns key_path metric with the corresponding generated query8891 #with_suggested_name8892 returns key_path metric with the corresponding generated query8893 unavailable metric8894 #with_value8895 returns an empty hash8896 #with_instrumentation8897 returns an empty hash8898 #with_suggested_name8899 returns an empty hash8900TestHooks::SystemService8901 #execute8902 hook with not implemented test8903 returns error message8904 push_events8905 executes hook8906 tag_push_events8907 executes hook8908 repository_update_events8909 executes hook8910 merge_requests_events8911 returns error message if the user does not have any repository with a merge request8912 executes hook8913Mutations::Todos::MarkDone8914 is expected to require graphql authorizations :update_todo8915 #resolve8916 marks a single todo as done8917 handles a todo which is already done as expected8918 ignores requests for todos which do not belong to the current user8919BulkImports::PipelineWorker8920 behaves like successfully runs the pipeline8921 runs the given pipeline successfully8922 when the pipeline cannot be found8923 logs the error8924 when the pipeline raises an exception8925 logs the error8926 when entity is failed8927 marks tracker as failed and logs the error8928 when network error is raised8929 when error is retriable8930 reenqueues the worker8931 when error is not retriable8932 marks tracker as failed and logs the error8933 when file extraction pipeline8934 runs the pipeline successfully8935 when export status is started8936 reenqueues pipeline worker8937 when export status is empty8938 reenqueues pipeline worker8939 when job reaches timeout8940 marks as failed and logs the error8941 when export status is failed8942 marks as failed and logs the error8943scripts/determine-qa-tests8944 DetermineQATests8945 .execute8946 when a devops label is not specified8947 behaves like determine qa tests8948 when only qa spec files have changed8949 returns only the changed qa specs8950 when qa spec and non spec files have changed8951 does not return any specs8952 when non-qa and feature flag files have changed8953 does not return any specs8954 when qa spec and non-qa files have changed8955 does not return any specs8956 when qa non-spec and non-qa files have changed8957 does not return any specs8958 when only non-qa files have changed8959 does not return any specs8960 when a devops label is specified8961 behaves like determine qa tests8962 when only qa spec files have changed8963 returns only the changed qa specs8964 when qa spec and non spec files have changed8965 does not return any specs8966 when non-qa and feature flag files have changed8967 does not return any specs8968 when qa spec and non-qa files have changed8969 does not return any specs8970 when qa non-spec and non-qa files have changed8971 does not return any specs8972 when only non-qa files have changed8973 returns the specs for the devops label8974ErrorTracking::IssueDetailsService8975 #execute8976 with authorized user8977 when issue_details returns a detailed error8978 returns the detailed error8979 returns the gitlab_issue when the error has a sentry_issue8980 returns the gitlab_issue path from sentry when the error has no sentry_issue8981 when issue_details returns nil8982 result is not ready8983 when issue_details returns error8984 returns the error8985 when issue_details returns error with http_status8986 returns the error with correct http_status8987 with integrated error tracking8988 returns the error in detailed format8989 when error does not exist8990 returns the error in detailed format8991 with unauthorized user8992 returns error8993 with error tracking disabled8994 raises error8995Banzai::ReferenceParser::MilestoneParser8996 #nodes_visible_to_user8997 when the link has a data-issue attribute8998 behaves like referenced feature visibility8999 when feature is disabled9000 does not create reference9001 when feature is enabled only for team members9002 does not create reference for non member9003 creates reference for member9004 when feature is enabled9005 creates reference9006 #referenced_by9007 when the link has a data-milestone attribute9008 using an existing milestone ID9009 returns an Array of milestones9010 using a non-existing milestone ID9011 returns an empty Array9012Gitlab::IssuablesCountForState9013 project given9014 provides the project9015 .declarative_policy_class9016 is expected to eq "IssuablePolicy"9017 #for_state_or_opened9018 returns the number of issuables for the given state9019 returns the number of open issuables when no state is given9020 returns the number of open issuables when a nil value is given9021 #[]9022 returns the number of issuables for the given state9023 casts valid states from Strings to Symbols9024 returns 0 when using an invalid state name as a String9025 fast_fail enabled9026 returns the expected value9027 returns -1 when the database times out9028 when store_in_redis_cache is `true`9029 with Issues9030 returns -1 for the requested state9031 when parent group is not present9032 behaves like calculating counts without caching9033 does not store in redis store9034 when params include search filters9035 behaves like calculating counts without caching9036 does not store in redis store9037 when counts are stored in cache9038 does not call finder count_by_state9039 when cache is empty9040 when state counts are under threshold9041 does not store state counts in cache9042 when state counts are over threshold9043 stores state counts in cache9044 with Merge Requests9045 behaves like calculating counts without caching9046 does not store in redis store9047Resolvers::Ci::ConfigResolver9048 #resolve9049 with a valid .gitlab-ci.yml9050 with a sha9051 behaves like a valid config file9052 lints the ci config file and returns the merged yaml file9053 without a sha9054 behaves like a valid config file9055 lints the ci config file and returns the merged yaml file9056 with an invalid .gitlab-ci.yml9057 responds with errors about invalid syntax9058 with an invalid SHA9059 logs the invalid SHA to Sentry9060JobArtifactReportEntity9061 #as_json9062 exposes file_type9063 exposes file_format9064 exposes size9065 exposes download path9066Gitlab::Ci::Reports::Security::Identifier9067 #initialize9068 when all params are given9069 initializes an instance9070 when attribute external_type is missing9071 raises an error9072 when attribute external_id is missing9073 raises an error9074 when attribute name is missing9075 raises an error9076 #key9077 returns fingerprint9078 #type_identifier?9079 external_type: "cve", expected_result: false9080 is expected to equal false9081 external_type: "foo", expected_result: false9082 is expected to equal false9083 external_type: "cwe", expected_result: true9084 is expected to equal true9085 external_type: "wasc", expected_result: true9086 is expected to equal true9087 external type check methods9088 external_type: "Foo", is_cve?: false, is_cwe?: false, is_wasc?: false9089 returns correct result for the type check method9090 external_type: "Cve", is_cve?: true, is_cwe?: false, is_wasc?: false9091 returns correct result for the type check method9092 external_type: "Cwe", is_cve?: false, is_cwe?: true, is_wasc?: false9093 returns correct result for the type check method9094 external_type: "Wasc", is_cve?: false, is_cwe?: false, is_wasc?: true9095 returns correct result for the type check method9096 #to_hash9097 returns expected hash9098 #==9099 when external_type and external_id are equal9100 returns true9101 when external_type is different9102 returns false9103 when external_id is different9104 returns false9105RuboCop::Cop::RubyInterpolationInTranslation9106 does not add an offense for a regular messages9107 adds the correct offense when using interpolation in a string9108 detects when using a ruby interpolation in the first argument of a pluralized string9109 detects when using a ruby interpolation in the second argument of a pluralized string9110 detects when using interpolation in a namespaced translation9111Atlassian::JiraConnect::Serializers::PullRequestEntity9112 exposes commentCount9113 with user_notes_count option9114 avoids N+1 database queries9115 uses counts from user_notes_count9116 when count is missing for some MRs9117 uses 0 as default when count for the MR is not available9118SnippetsHelper9119 #embedded_raw_snippet_button9120 for Personal Snippets9121 returns view raw button of embedded snippets9122 for Project Snippets9123 returns view raw button of embedded snippets9124 #embedded_snippet_download_button9125 for Personal Snippets9126 returns download button of embedded snippets9127 for Project Snippets9128 returns download button of embedded snippets9129 #embedded_snippet_copy_button9130 for Personal Snippets9131 returns copy button of embedded snippets9132 for Project Snippets9133 returns copy button of embedded snippets9134 #snippet_badge9135 when snippet is private9136 returns the snippet badge9137 when snippet is public9138 does not return anything9139 when snippet is internal9140 does not return anything9141 #snippet_report_abuse_path9142 returns false if the user cannot submit the snippet as spam9143 returns true if the user can submit the snippet as spam9144AuthorizedProjectUpdate::ProjectRecalculatePerUserService#execute9145 returns success9146 when there are no changes to be made9147 does not change authorizations9148 when there are changes to be made9149 when addition is required9150 adds a new authorization record for the specific user9151 does not add a new authorization record for the other user9152 adds a new authorization record with the correct access level for the specific user9153 when removal is required9154 removes the authorization record for the specific user9155 does not remove the authorization record for the other user9156 when an update in access level is required9157 updates the authorization of the specific user to the correct access level9158 does not update the authorization of the other user to the correct access level9159ApplicationCable::Connection9160 when session cookie is set9161 when user is logged in9162 sets current_user9163 with a stale password9164 sets current_user to nil9165 when user is not logged in9166 sets current_user to nil9167 when session cookie is not set9168 sets current_user to nil9169 when session cookie is an empty string9170 sets current_user to nil9171projects/commits/_commit.html.haml9172 with different committer9173DEPRECATION WARNING: Rendering actions with '.' in the name is deprecated: projects/commits/_commit.html.haml (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/views/projects/commits/_commit.html.haml_spec.rb:22)9174DEPRECATION WARNING: Rendering actions with '.' in the name is deprecated: projects/commits/_commit.html.haml (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/views/projects/commits/_commit.html.haml_spec.rb:22)9175 renders committed by user9176 with a signed commit9177 does not display a loading spinner for GPG status9178 with ci status9179 when pipelines are disabled9180 does not display a ci status icon9181 when pipelines are enabled9182 does display a ci status icon when pipelines are enabled9183Gitlab::Seeder9184 Namespace9185OK9186 has not_mass_generated scope9187OK9188 includes NamespaceSeed module9189 .quiet9190OK9191 disables database logging9192OK9193 disables mail deliveries9194OK9195 disables new note notifications9196 .log_message9197 prepends timestamp to the logged message9198Gitlab::Git::User9199 .from_gitaly9200 is expected to eq #<Gitlab::Git::User:0x00007f9a296a5070 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123", @timezone="Asia/Shanghai">9201 .from_gitlab9202 when no commit_email has been set9203 is expected to eq #<Gitlab::Git::User:0x00007f9a28e56770 @username="user1282", @name="Sidney Jones2513", @email="alice@example.com", @gl_id="user-", @timezone="Asia/Shanghai">9204 when commit_email has been set9205 is expected to eq #<Gitlab::Git::User:0x00007f9a288b6f68 @username="user1283", @name="Sidney Jones2514", @email="bob@example.com", @gl_id="user-", @timezone="Asia/Shanghai">9206 #==9207 is expected to eq #<Gitlab::Git::User:0x00007f9a284842d8 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123", @timezone="Asia/Shanghai">9208 is expected not to eq #<Gitlab::Git::User:0x00007f9a280e4c40 @username=nil, @name=nil, @email=nil, @gl_id=nil, @timezone="Asia/Shanghai">9209 is expected not to eq #<Gitlab::Git::User:0x00007f9a27d5f3e0 @username="janedoex", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123", @timezone="Asia/Shanghai">9210 is expected not to eq #<Gitlab::Git::User:0x00007f9a277f8118 @username="janedoe", @name="Jane Doéx", @email="janedoé@example.com", @gl_id="user-123", @timezone="Asia/Shanghai">9211 is expected not to eq #<Gitlab::Git::User:0x00007f9a271fb468 @username="janedoe", @name="Jane Doé", @email="janedoé@example.comx", @gl_id="user-123", @timezone="Asia/Shanghai">9212 is expected not to eq #<Gitlab::Git::User:0x00007f9a26b560e0 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123x", @timezone="Asia/Shanghai">9213 is expected not to eq #<Gitlab::Git::User:0x00007f9a264be3e0 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123", @timezone="Etc/UTC">9214 when add_timezone_to_web_operations is disabled9215 ignores timezone arg and sets Etc/UTC by default9216 #to_gitaly9217 creates a Gitaly::User with the correct data9218Gitlab::Database::Migration9219 .[]9220 version: 1.09221 inherits from ActiveRecord::Migration[6.1]9222 includes migration helpers version 29223 includes LockRetriesConcern9224 unknown version9225 raises an error9226 .current_version9227 includes current ActiveRecord migration class9228 Gitlab::Database::Migration::LockRetriesConcern9229 when not explicitly called9230 does not disable lock retries by default9231 when explicitly disabled9232 does not disable lock retries by default9233Ci::CreatePipelineService9234 #execute9235 when source is a dangling build9236 parameter config content9237 creates a pipeline9238 creates builds with the correct names9239 creates stages with the correct names9240 sets the correct config source9241Banzai::Filter::InlineAlertMetricsFilter9242 behaves like a metrics embed filter9243 when the document has an external link9244 leaves regular non-metrics links unchanged9245 when the document contains an embeddable link9246 leaves the original link unchanged9247 appends a metrics charts placeholder9248 in a paragraph9249 appends a metrics charts placeholder after the enclosing paragraph9250 with query params specified9251 behaves like a metrics embed filter9252 when the document has an external link9253 leaves regular non-metrics links unchanged9254 when the document contains an embeddable link9255 leaves the original link unchanged9256 appends a metrics charts placeholder9257 in a paragraph9258 appends a metrics charts placeholder after the enclosing paragraph9259Gitlab::GithubImport::AdvanceStageWorker9260 #perform9261 when the project no longer exists9262 does not perform any work9263 when there are remaining jobs9264 reschedules itself9265 when there are no remaining jobs9266 schedules the next stage9267 raises KeyError when the stage name is invalid9268 #wait_for_jobs9269 waits for jobs to complete and returns a new pair of keys to wait for9270 #find_import_state9271 returns a ProjectImportState9272 returns nil if the project import is not running9273Packages::Pypi::SimpleIndexPresenter9274 #body9275 for project9276 behaves like pypi package presenter9277 version: ">=2.7", expected_version: ">=2.7"9278 contains links for all packages9279 version: "\"><script>alert(1)</script>", expected_version: ""><script>alert(1)</script>"9280 contains links for all packages9281 version: ">=2.7, !=3.0", expected_version: ">=2.7, !=3.0"9282 contains links for all packages9283 for group9284 behaves like pypi package presenter9285 version: ">=2.7", expected_version: ">=2.7"9286 contains links for all packages9287 version: "\"><script>alert(1)</script>", expected_version: ""><script>alert(1)</script>"9288 contains links for all packages9289 version: ">=2.7, !=3.0", expected_version: ">=2.7, !=3.0"9290 contains links for all packages9291 with package files pending destruction9292 is expected not to include "package_pending_destruction"9293BulkImports::Groups::Pipelines::GroupPipeline9294 #run9295 imports new group into destination group9296 pipeline parts9297 is expected to includes the BulkImports::Pipeline module9298 is expected to includes the BulkImports::Pipeline::Runner module9299 has extractors9300 has transformers9301 has loaders9302X509Helper9303 #x509_subject9304 with uppercase DN9305 returns the attributes on any case search9306 with lowercase DN9307 returns the attributes on any case search9308 with comma within DN9309 returns the attributes on any case search9310 with mal formed DN9311 returns nil on any case search9312 #x509_signature?9313 detects a x509 signed commit9314Gitlab::Database::MigrationHelpers::CascadingNamespaceSettings9315 #add_cascading_namespace_setting9316-- column_exists?(:namespace_settings, :some_setting)9317 -> 0.0047s9318-- column_exists?(:namespace_settings, :lock_some_setting)9319 -> 0.0040s9320-- column_exists?(:application_settings, :some_setting)9321 -> 0.3703s9322-- column_exists?(:application_settings, :lock_some_setting)9323 -> 0.3697s9324 creates the required columns9325 when columns already exist9326-- add_column(:namespace_settings, :cascading_setting, :integer)9327 -> 0.0022s9328-- add_column(:application_settings, :lock_cascading_setting, :boolean)9329 -> 0.0017s9330-- column_exists?(:namespace_settings, :cascading_setting)9331 -> 0.0039s9332-- column_exists?(:namespace_settings, :lock_cascading_setting)9333 -> 0.0037s9334-- column_exists?(:application_settings, :cascading_setting)9335 -> 0.3685s9336-- column_exists?(:application_settings, :lock_cascading_setting)9337 -> 0.3684s9338 raises an error when some columns already exist9339 #remove_cascading_namespace_setting9340 removes the columns9341API::Entities::WikiPage9342 returns the proper encoding for the wiki page content9343 returns the raw wiki page content9344 when render_html param is passed9345 when it is true9346 returns the wiki page content rendered9347 includes the wiki page version in the render context9348 when page is an Ascii document9349 renders the page without errors9350 when content contains a reference9351 expands the reference in the content9352 when it is false9353 returns the raw wiki page content9354Resolvers::Ci::RunnerJobsResolver9355 #resolve9356 with authorized user9357 with statuses argument9358 is expected to contain exactly #<Ci::Build status: "success", finished_at: "2022-06-29 08:53:29.000000000 +0000", trace: nil, create...resource_at: nil, processed: false, scheduling_type: "stage", id: 361, stage_id: 220, tag_list: nil> and #<Ci::Build status: "success", finished_at: "2022-06-29 08:53:29.000000000 +0000", trace: nil, create...resource_at: nil, processed: false, scheduling_type: "stage", id: 362, stage_id: 220, tag_list: nil>9359 without statuses argument9360 is expected to contain exactly #<Ci::Build status: "success", finished_at: "2022-06-29 08:53:29.000000000 +0000", trace: nil, create...resource_at: nil, processed: false, scheduling_type: "stage", id: 365, stage_id: 222, tag_list: nil>, #<Ci::Build status: "success", finished_at: "2022-06-29 08:53:29.000000000 +0000", trace: nil, create...resource_at: nil, processed: false, scheduling_type: "stage", id: 366, stage_id: 222, tag_list: nil>, and #<Ci::Build status: "failed", finished_at: "2022-06-29 08:53:29.000000000 +0000", trace: nil, created...resource_at: nil, processed: false, scheduling_type: "stage", id: 367, stage_id: 222, tag_list: nil>9361 with unauthorized user9362 is expected to be nil9363Gitlab::Serializer::Pagination9364 #paginate9365 when a multiple resources are present in relation9366 correctly paginates the resource9367 appends relevant headers9368 when an invalid resource is about to be paginated9369 raises error9370LfsObjectsProject9371 associations9372 is expected to belong to project required: false9373 is expected to belong to lfs_object required: false9374 validation9375 is expected to validate that :lfs_object_id cannot be empty/falsy9376 is expected to validate that :project_id cannot be empty/falsy9377 validates object id9378 #link_to_project!9379 does not throw error when duplicate exists9380 upserts a new entry and updates the project cache9381 #update_project_statistics9382 updates project statistics when the object is added9383 updates project statistics when the object is removed9384Gitlab::Database::ConnectionTimer9385 .starting_now9386 when the configured interval is positive9387 randomizes the interval of the created timer9388 when the configured interval is not positive9389 sets the interval of the created timer to nil9390 .expired?9391 when the interval is positive9392 when the interval has elapsed9393 returns true9394 when the interval has not elapsed9395 returns false9396 when the interval is not positive9397 when the interval has elapsed9398 returns false9399 when the interval has not elapsed9400 returns false9401 when the interval is nil9402 returns false9403 .reset!9404 updates the timer clock value9405Gitlab::Import::MergeRequestHelpers9406 .create_merge_request_without_hooks9407 when merge request does not exist9408 returns a new object9409 does load all existing objects9410 when merge request does exist9411 returns an existing object9412 when project is deleted9413 returns an existing object9414Gitlab::GithubImport::ReschedulingMethods9415 #perform9416 with a non-existing project9417 does not perform any work9418 notifies any waiters so they do not wait forever9419 with an existing project9420 notifies any waiters upon successfully importing the data9421 reschedules itself if the data could not be imported9422 #try_import9423 returns true when the import succeeds9424 returns false when the import fails due to hitting the GitHub API rate limit9425 #notify_waiter9426 notifies the waiter if a waiter key is specified9427 does not notify any waiters if no waiter key is specified9428Gitlab::Ci::Config::Normalizer::MatrixStrategy9429 .applies_to?9430 with hash that has :matrix key9431 is expected to be truthy9432 with hash that does not have :matrix key9433 is expected to be falsey9434 with a number9435 is expected to be falsey9436 .build_from9437 is expected to eq 49438 has attributes9439 has parallelized name9440Gitlab::ImportExport::UploadsSaver9441 bundle a project Git repo9442 legacy storage9443 saves the uploads successfully9444 copies the uploads to the export path9445 hashed storage9446 saves the uploads successfully9447 copies the uploads to the export path9448Gitlab::Graphql::MountMutation9449 .mount_mutation9450 mounts a mutation9451 .mount_aliased_mutation9452 mounts a mutation9453 has a correct `graphql_name`9454 has a correct type9455 has a correct input argument9456Database::PreventCrossJoins9457 when running in a default scope9458 when only non-CI tables are used9459 does not raise exception9460 when only CI tables are used9461 does not raise exception9462 when CI and non-CI tables are used9463 raises exception9464 when annotation is used9465 does not raise exception9466 when allow_cross_joins_across_databases is used9467 does not raise exception9468 when allow_cross_joins_across_databases is used9469 does not raise exception9470 when there is a parser error9471 does not raise parse PGQuery::ParseError9472Sidebars::Projects::Menus::ProjectInformationMenu9473 #container_html_options9474 is expected to match #<RSpec::Mocks::ArgumentMatchers::HashIncludingMatcher:0x00007f9a097d1180 @expected={:class=>"shortcuts-project-information has-sub-items"}>9475 Menu Items9476 Labels9477 is expected not to be nil9478 when merge requests are disabled9479 is expected not to be nil9480 when issues are disabled9481 is expected not to be nil9482 when merge requests and issues are disabled9483 is expected to be nil9484 Members9485 is expected not to be nil9486 when the user does not have access9487 is expected to be nil9488ErrorTracking::ErrorEvent9489 relationships9490 is expected to belong to error required: false9491 validations9492 is expected to validate that :description cannot be empty/falsy9493 is expected to validate that the length of :description is at most 10249494 is expected to validate that :occurred_at cannot be empty/falsy9495 is expected to validate that the length of :level is at most 2559496 is expected to validate that the length of :environment is at most 2559497 #stacktrace9498 builds a stacktrace9499 #to_sentry_error_event9500 is expected to be a kind of Gitlab::ErrorTracking::ErrorEvent9501Gitlab::RepositorySizeChecker9502 #enabled?9503 when enabled9504 returns true9505 when limit is zero9506 returns false9507 #changes_will_exceed_size_limit?9508 returns true when changes go over9509 returns false when changes do not go over9510 #above_size_limit?9511 returns false when not over the limit9512 when size is above the limit9513 returns true9514 #exceeded_size9515 when no change size provided9516 when current size is below the limit9517 returns zero9518 when current size is equal to the limit9519 returns zero9520 when current size is over the limit9521 returns a positive number9522 when a change size is provided9523 when change size will be over the limit9524 returns a positive number9525 when change size will be at the limit9526 returns zero9527 when change size will be under the limit9528 returns zero9529 #additional_repo_storage_available?9530 returns false9531Metrics::Dashboard::TransientEmbedService9532 .valid_params?9533 is expected to be truthy9534 missing embedded9535 is expected to be falsey9536 not embedded9537 is expected to be falsey9538 missing embed_json9539 is expected to be falsey9540 #get_dashboard9541 caches the unprocessed dashboard for subsequent calls9542 caches unique requests separately9543 behaves like valid embedded dashboard service response9544 behaves like valid dashboard service response for schema9545 returns a json representation of the dashboard9546 behaves like raises error for users with insufficient permissions9547 when the user does not have sufficient access9548 behaves like misconfigured dashboard service response9549 returns an appropriate message and status code9550 when the user is anonymous9551 behaves like misconfigured dashboard service response9552 returns an appropriate message and status code9553 when embed_json cannot be parsed as json9554 behaves like misconfigured dashboard service response9555 returns an appropriate message and status code9556Ide::TerminalConfigService9557 #execute9558 content is not valid9559 returns an error9560 terminal not defined9561 returns success9562 terminal enabled9563 returns success9564 custom terminal enabled9565 returns success9566Gitlab::Database::Migrations::ReestablishedConnectionStack9567 #with_restored_connection_stack9568 main9569 behaves like reconfigures connection stack9570 does restore connection hierarchy9571 does keep original connection handler9572 ci9573 behaves like reconfigures connection stack9574 does restore connection hierarchy9575 does reconfigure connection handler9576Gitlab::IncomingEmail9577 self.enabled?9578 when reply by email is enabled9579 returns true9580 when reply by email is disabled9581 returns false9582 self.supports_wildcard?9583 address contains the wildcard placeholder9584 confirms that wildcard is supported9585 address doesn't contain the wildcard placeholder9586 returns that wildcard is not supported9587 address is not set9588 returns that wildcard is not supported9589 self.unsubscribe_address9590 returns the address with interpolated reply key and unsubscribe suffix9591 self.reply_address9592 returns the address with an interpolated reply key9593 self.key_from_address9594 returns reply key9595 does not match emails with extra bits9596 when a custom wildcard address is used9597 finds key if email matches address pattern9598 self.key_from_fallback_message_id9599 returns reply key9600 self.scan_fallback_references9601 returns reply key9602IssuableLink9603 .inverse_link_type9604 returns the inverse type of link9605 .issuable_type9606 when opposite relation already exists9607 raises NotImplementedError when performing validations9608projects/pipelines/show9609 when pipeline has errors9610 shows errors9611 does not render the pipeline tabs9612 when pipeline is valid9613 does not show errors9614 renders the pipeline tabs9615Gitlab::ImportExport::Json::LegacyWriter9616 #write_attributes9617 writes correct json9618 when invalid path is used9619 raises an exception9620 #write_relation9621 when key is already written9622 raises exception9623 when key is not already written9624 when multiple key value pairs are stored9625 writes correct json9626 when invalid path is used9627 raises an exception9628 #write_relation_array9629 when array is used9630 writes correct json9631 when enumerable is used9632 writes correct json9633 when key is already written9634 raises an exception9635Packages::Nuget::SyncMetadatumService9636 #execute9637 creates a nuget metadatum9638 behaves like saving metadatum attributes9639 saves nuget metadatum9640 with exisiting nuget metadatum9641 does not create a nuget metadatum9642 behaves like saving metadatum attributes9643 saves nuget metadatum9644 with empty metadata9645 destroys the nuget metadatum9646Ci::BuildNeed9647 is expected to belong to build class_name => Ci::Processable required: false9648 is expected to validate that :build cannot be empty/falsy9649 is expected to validate that :name cannot be empty/falsy9650 is expected to validate that the length of :name is at most 1289651 .artifacts9652 is expected to contain exactly #<Ci::BuildNeed id: 1, name: "build_1", artifacts: true, optional: false, build_id: 373>9653 BulkInsertSafe9654 bulk inserts from Ci::Build model9655Resolvers::GroupResolver9656 #resolve9657 batch-resolves groups by full path9658 resolves an unknown full_path to nil9659 treats group full path as case insensitive9660Jobs/SAST-IaC.latest.gitlab-ci.yml9661 the created pipeline9662 on feature branch9663 creates the kics-iac-sast job9664 on merge request9665 has no jobs9666 SAST_DISABLED is set9667 on default branch9668 has no jobs9669 on feature branch9670 has no jobs9671Gitlab::Mailgun::WebhookProcessors::FailureLogger9672 #execute9673 on permanent failure9674 logs the failure immediately9675 on temporary failure9676 when threshold is not exceeded9677 increments counter but does not log the failure9678 when threshold is exceeded9679 increments counter and logs the failure9680 on other events9681 does nothing9682Pajamas::RadioComponent9683 with default options9684 renders unchecked radio9685 does not render help text9686 with custom options9687 renders help text9688 renders checked radio9689 adds CSS class to label9690 with `label` slot9691 renders unchecked radio9692 with `help_text` slot9693 renders unchecked radio9694 renders help text9695 with `label` and `help_text` slots9696 renders unchecked radio9697 renders help text9698Diffs::StatsComponent9699 rendered component9700 is expected to have visible css ".js-diff-stats-dropdown"9701 renders the data attributes9702 #diff_file_path_text9703 returns full path by default9704 returns truncated path9705 returns the path if max is oddly small9706 returns the path if max is oddly large9707Clusters::Cleanup::ServiceAccountWorker9708 #perform9709 when cluster.cleanup_status is cleanup_removing_service_account9710 calls Clusters::Cleanup::ServiceAccountService9711 when cluster.cleanup_status is not cleanup_removing_service_account9712 does not call Clusters::Cleanup::ServiceAccountService9713Gitlab::SidekiqLogging::DeduplicationLogger9714 #log_deduplication9715 logs a deduplication message to the sidekiq logger9716 does not modify the job9717 #rescheduled_log9718 logs a rescheduled message to the sidekiq logger9719 does not modify the job9720Packages::PackageFileFinder9721 #execute9722 behaves like package file finder examples9723 is expected to eq #<Packages::PackageFile id: 309, package_id: 180, created_at: "2022-06-29 20:30:04.891829000 +0000", ...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>9724 with file_name_like9725 is expected to eq #<Packages::PackageFile id: 309, package_id: 180, created_at: "2022-06-29 20:30:04.891829000 +0000", ...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>9726 behaves like not returning pending_destruction package files9727 returns the correct package file9728 with unknown file_name9729 is expected to be nil9730 #execute!9731 behaves like package file finder examples9732 is expected to eq #<Packages::PackageFile id: 309, package_id: 180, created_at: "2022-06-29 20:30:04.891829000 +0000", ...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>9733 with file_name_like9734 is expected to eq #<Packages::PackageFile id: 309, package_id: 180, created_at: "2022-06-29 20:30:04.891829000 +0000", ...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>9735 behaves like not returning pending_destruction package files9736 returns the correct package file9737 with unknown file_name9738 is expected to raise ActiveRecord::RecordNotFound9739BlobViewer::License9740 #license9741 returns the blob project repository license9742 #render_error9743 when there is no license9744 returns :unknown_license9745 when there is a license9746 returns nil9747Evidences::MilestoneEntity9748 exposes the expected fields9749 when there are issues linked to this milestone9750 exposes these issues9751 when the release has no milestone9752 exposes an empty array for milestones9753API::Entities::PersonalAccessTokenWithDetails9754 #as_json9755 returns token data9756Gitlab::Email::Message::InProductMarketing9757 .for9758 when track exists9759 track: :create, expected_class: Gitlab::Email::Message::InProductMarketing::Create9760 is expected to eq Gitlab::Email::Message::InProductMarketing::Create9761 track: :team_short, expected_class: Gitlab::Email::Message::InProductMarketing::TeamShort9762 is expected to eq Gitlab::Email::Message::InProductMarketing::TeamShort9763 track: :trial_short, expected_class: Gitlab::Email::Message::InProductMarketing::TrialShort9764 is expected to eq Gitlab::Email::Message::InProductMarketing::TrialShort9765 track: :admin_verify, expected_class: Gitlab::Email::Message::InProductMarketing::AdminVerify9766 is expected to eq Gitlab::Email::Message::InProductMarketing::AdminVerify9767 track: :verify, expected_class: Gitlab::Email::Message::InProductMarketing::Verify9768 is expected to eq Gitlab::Email::Message::InProductMarketing::Verify9769 track: :trial, expected_class: Gitlab::Email::Message::InProductMarketing::Trial9770 is expected to eq Gitlab::Email::Message::InProductMarketing::Trial9771 track: :team, expected_class: Gitlab::Email::Message::InProductMarketing::Team9772 is expected to eq Gitlab::Email::Message::InProductMarketing::Team9773 track: :experience, expected_class: Gitlab::Email::Message::InProductMarketing::Experience9774 is expected to eq Gitlab::Email::Message::InProductMarketing::Experience9775 when track does not exist9776 raises error9777Gitlab::Pages::Settings9778 #path9779 is expected to eq "the path"9780 when running under a web server outside of test mode9781 logs a DiskAccessDenied error9782 when local_store settings does not exist yet9783 is expected to eq "the path"9784 when local store exists but legacy storage is disabled9785 logs a DiskAccessDenied error9786Gitlab::Ci::Status::SuccessWarning9787 #test9788 is expected to eq "passed"9789 #label9790 is expected to eq "passed with warnings"9791 #icon9792 is expected to eq "status_warning"9793 #group9794 is expected to eq "success-with-warnings"9795 .matches?9796 when matchable subject is successful9797 when matchable subject has warnings9798 is a correct match9799 when matchable subject does not have warnings9800 does not match9801 when matchable subject is not successful9802 when matchable subject has warnings9803 does not match9804 when matchable subject does not have warnings9805 does not match9806Resolvers::RepositoryBranchNamesResolver9807 #resolve9808 with empty search pattern9809 returns nil9810 with a valid search pattern9811 returns matching branches9812 properly offsets and limits branch name results9813FromExcept9814 behaves like from set operator9815 #from_except9816 selects from the results of the EXCEPT9817 returns empty set when passing empty array9818 supports the use of a custom alias for the sub query9819 supports keeping duplicate rows9820FeatureFlags::HookService9821 #execute_hooks9822 calls feature_flag.project.execute_hooks9823 HOOK_NAME9824 is expected to eq :feature_flag_hooks9825Gitlab::AlertManagement::AlertStatusCounts9826 #execute9827 for an unauthorized user9828 returns zero for all statuses9829 for an authorized user9830 returns the correct counts for each status9831 when filtering params are included9832 returns the correct counts for each status9833 when search param is included9834 returns the correct countss9835JiraConnect::GroupEntity9836 contains all necessary elements of the group9837profiles/keys/_form.html.haml9838 when the form partial is used9839 renders the form with the correct action9840 has the key field9841 has the title field9842 has the expires at field9843 has the validation warning9844 has the submit button9845Gitlab::Checks::PushFileCountCheck9846 #validate!9847 initial creation9848 allows creation9849 old: "single-file", new: "edit-file", valid: true, message: nil9850 verifies9851 old: "single-file", new: "multiple-files", valid: false, message: "The repository can contain at most 2 file(s)."9852 verifies9853 old: "single-file", new: "no-files", valid: false, message: "The repository must contain at least 1 file."9854 verifies9855 old: "edit-file", new: "rename-and-edit-file", valid: true, message: nil9856 verifies9857Banzai::Filter::ImageLinkFilter9858 wraps the image with a link to the image src9859 does not wrap a duplicate link9860 works with external images9861 works with inline images9862 keep the data-canonical-src9863 moves the data-diagram* attributes9864 adds no-attachment icon class to the link9865 when :link_replaces_image is true9866 replaces the image with link to image src9867 uses image alt as a link text9868 uses image data-src as a link text9869 adds attachment icon class to the link9870Sidebars::Projects::Menus::InviteTeamMembersMenu9871 when the project is viewed by an owner of the group9872 #render?9873 renders the Invite team members link9874 when the project already has at least 2 members9875 does not render the link9876 #title9877 displays the correct Invite team members text for the link in the side nav9878 when the project is viewed by a guest user without admin permissions9879 #render?9880 does not render9881RuboCop::Cop::Migration::Datetime9882 when in migration9883 registers an offense when the ":datetime" data type is used on create_table9884 registers an offense when the ":timestamp" data type is used on create_table9885 does not register an offense when the ":datetime" data type is not used on create_table9886 does not register an offense when the ":datetime_with_timezone" data type is used on create_table9887 registers an offense when the ":datetime" data type is used on add_column9888 registers an offense when the ":timestamp" data type is used on add_column9889 does not register an offense when the ":datetime" data type is not used on add_column9890 does not register an offense when the ":datetime_with_timezone" data type is used on add_column9891 when outside of migration9892 registers no offense9893RuboCop::Cop::Migration::ReferToIndexByName9894 when in migration9895 when existing indexes are referred to without an explicit name9896 registers an offense9897 when outside migration9898 registers no offenses9899Analytics::UsageTrends::CounterJobWorker9900 is labeled as idempotent9901 performs multiple times sequentially without raising an exception9902 counts a scope and stores the result9903 does not raise error when inserting duplicated measurement9904 does not insert anything when BatchCount returns error9905 when no records are in the database9906 sets 0 as the count9907 when pipelines_succeeded identifier is passed9908 counts successful pipelines9909SmimeSignatureSettings9910 .parse9911 sets correct default values to disabled9912 when providing custom values9913 sets correct default values to disabled9914 enables smime with default key and cert9915 enables smime with custom key and cert9916Ci::JobArtifacts::DestroyAssociationsService9917 #destroy_records9918 removes artifacts without updating statistics9919 when there are no artifacts9920 does not raise error9921 #update_statistics9922 updates project statistics9923 when there are no artifacts9924 does not raise error9925Gitlab::Database::Type::Color9926 serializes by calling #to_s9927 serializes nil to nil9928 casts by calling Color::new9929 accepts colors as arguments to cast9930 allows nil database values9931 tells us what is serializable9932 tells us what is not serializable9933Bitbucket::Connection9934 #get9935 calls OAuth2::AccessToken::get9936 #expired?9937 calls connection.expired?9938 #refresh!9939 calls connection.refresh!99400_log_deprecations9941 for Ruby deprecations9942 when catching deprecations through Kernel#warn9943 also logs them to deprecation logger9944 for other messages from Kernel#warn9945 does not log them to deprecation logger9946 when disabled via environment9947 does not log them to deprecation logger9948 for Rails deprecations9949 logs them to deprecation logger9950 when disabled via environment9951 does not log them to deprecation logger9952Gitlab::FileMarkdownLinkBuilder9953 markdown_link9954 when file name has the character ]9955 escapes the character9956 when file is an image9957 returns preview markdown link9958 when file is video9959 returns preview markdown link9960 when file is audio9961 returns preview markdown link9962 when file is not embeddable9963 returns markdown link9964 when file name is blank9965 returns nil9966 mardown_name9967 when file is an image9968 retrieves the name without the extension9969 when file is video9970 retrieves the name without the extension9971 when file is audio9972 retrieves the name without the extension9973 when file is not embeddable9974 retrieves the name with the extesion9975 when file name is blank9976 returns nil9977Admin::BackgroundMigrationsHelper9978 #batched_migration_status_badge_variant9979 status_name: :active, variant: :info9980 is expected to eq :info9981 status_name: :paused, variant: :warning9982 is expected to eq :warning9983 status_name: :failed, variant: :danger9984 is expected to eq :danger9985 status_name: :finished, variant: :success9986 is expected to eq :success9987 #batched_migration_progress9988 returns completion percentage9989 when migration is finished9990 returns 100 percent9991 when total_tuple_count is nil9992 returns nil9993 when there are no completed rows9994 returns 0 percent9995 when completed rows are greater than total count9996 returns 99 percent9997OauthAccessGrant9998 #delete9999 cascades to oauth_openid_requests10000API::Entities::PlanLimit10001 exposes correct attributes10002 does not expose id and plan_id10003Types::Ci::Config::ConfigType10004 is expected to eq "CiConfig"10005 exposes the expected fields10006IdentityProviderPolicy10007 #rules10008 is expected to be allowed :link10009 is expected to be allowed :unlink10010 when user is anonymous10011 is expected not to be allowed :link10012 is expected not to be allowed :unlink10013 when provider is saml10014 is expected to be allowed :link10015 is expected not to be allowed :unlink10016 when provider is cas310017 is expected to be allowed :link10018 is expected not to be allowed :unlink10019Gitlab::Graphql::Loaders::BatchCommitLoader10020 #find10021 finds a commit by id10022 only queries once10023ProgrammingLanguage10024 is expected to respond to #name10025 is expected to respond to #color10026 is expected to validate that :name cannot be empty/falsy10027 is expected to allow :color to be ‹"#000000"›10028 is expected not to allow :color to be ‹"000000"›10029 is expected not to allow :color to be ‹"#0z0000"›10030 .with_name_case_insensitive scope10031 accepts a single name parameter10032 accepts multiple names10033RuboCop::Cop::Gitlab::ConstGetInheritFalse10034 Object.const_get10035 registers an offense with no 2nd argument and corrects10036 inherit=false10037 does not register an offense10038 inherit=true10039 registers an offense and corrects10040 const_get for a nested class10041 registers an offense on reload usage and corrects10042 inherit=false10043 does not register an offense10044 inherit=true10045 registers an offense if inherit is true and corrects10046Types::Packages::PackageGroupSortEnum10047 exposes all package group sort values10048Gitlab::Analytics::CycleAnalytics::Average10049 #seconds10050 when no results10051 is expected to eq nil10052 returns the average duration in seconds10053 is expected to be within 0.5 of 648000.010054 #days10055 when no results10056 is expected to eq nil10057 returns the average duration in days10058 is expected to be within 0.01 of 7.510059ExploreHelper10060 #explore_nav_links10061 has all the expected links by default10062 #public_visibility_restricted?10063 delegates to Gitlab::VisibilityLevel10064 #projects_filter_items10065 returns correct dropdown items10066 #projects_filter_selected10067 when visibility_level is present10068 returns corresponding item10069 when visibility_level is empty10070 returns corresponding item10071PrometheusAlertPresenter10072 #humanized_text10073 is expected to eq "exceeded 1.0m/s"10074 when operator is eq10075 is expected to eq "is equal to 1.0m/s"10076 when operator is lt10077 is expected to eq "is less than 1.0m/s"10078SourcegraphHelper10079 #sourcegraph_url_message10080 with .com sourcegraph url10081 is expected to have text "Uses %{linkStart}Sourcegraph.com%{linkEnd}. This feature is experimental."10082 with custom sourcegraph url10083 is expected to have text "Uses a custom %{linkStart}Sourcegraph instance%{linkEnd}. This feature is experimental."10084 when not limited by feature or public only10085 is expected to eq "Uses %{linkStart}Sourcegraph.com%{linkEnd}. This feature is experimental."10086 when limited by feature10087 is expected to eq "Uses %{linkStart}Sourcegraph.com%{linkEnd}. This feature is experimental and currently limited to certain projects."10088 when limited by public only10089 is expected to eq "Uses %{linkStart}Sourcegraph.com%{linkEnd}. This feature is experimental and limited to public projects."10090Gitlab::GithubImport::Stage::ImportLfsObjectsWorker10091 #import10092 imports all the lfs objects10093FeatureFlagEntity10094 has feature flag attributes10095Packages::RemoveTagService10096 #execute10097 with existing tag10098 is expected to change `Packages::Tag.count` by -110099 with nil10100 is expected to raise ArgumentError10101ProjectPagesMetadatum10102 .only_on_legacy_storage10103 returns only deployed records without deployment10104Gitlab::Chat::Responder10105 .responder_for10106 using a regular build10107 returns nil10108 using a chat build10109 returns the responder for the build10110Gitlab::BitbucketImport::ProjectCreator10111 creates project10112Gitlab::GithubImport::PageCounter10113 #initialize10114 sets the initial page number to 1 when no value is cached10115 sets the initial page number to the cached value when one is present10116 #set10117 overwrites the page number when the given number is greater than the current number10118 does not overwrite the page number when the given number is lower than the current number10119 #expire!10120 expires the current page counter10121Deployments::ArchiveInProjectWorker10122 #perform10123 executes Deployments::ArchiveInProjectService10124Gitlab::Usage::Metrics::KeyPathProcessor10125 #unflatten_default_path10126 key_path: "uuid", value: nil, expected_hash: {:uuid=>nil}10127 is expected to eq {:uuid=>nil}10128 key_path: "uuid", value: "1111", expected_hash: {:uuid=>"1111"}10129 is expected to eq {:uuid=>"1111"}10130 key_path: "counts.issues", value: nil, expected_hash: {:counts=>{:issues=>nil}}10131 is expected to eq {:counts=>{:issues=>nil}}10132 key_path: "counts.issues", value: 100, expected_hash: {:counts=>{:issues=>100}}10133 is expected to eq {:counts=>{:issues=>100}}10134 key_path: "usage_activity_by_stage.verify.ci_builds", value: 100, expected_hash: {:usage_activity_by_stage=>{:verify=>{:ci_builds=>100}}}10135 is expected to eq {:usage_activity_by_stage=>{:verify=>{:ci_builds=>100}}}10136BulkImports::Common::Pipelines::WikiPipeline10137 #run10138 behaves like wiki pipeline imports a wiki for an entity10139 #run10140 when wiki exists10141 imports new wiki into destination project10142 when wiki does not exist10143 does not import wiki10144Gitlab::TimeTrackingFormatter10145 #parse10146 positive durations10147 is expected to eq 1200010148 negative durations10149 is expected to eq -1200010150 durations with months10151 uses our custom conversions10152 #output10153 time_tracking_limit_to_hours setting is true10154 is expected to eq "49h 40m"10155 time_tracking_limit_to_hours setting is false10156 is expected to eq "1w 1d 1h 40m"10157 handles negative time input10158 is expected to eq "-1w 1d 1h 40m"10159Types::MergeRequestStateEnum10160 is expected to eq "MergeRequestState"10161 exposes all the existing merge request states10162 behaves like issuable state10163 exposes all the existing issuable states10164Gitlab::Database::PostgresqlAdapter::ForceDisconnectableMixin10165 checking in a connection to the pool10166 calls the force disconnect callback on checkin10167 disconnecting from the database10168 when the timer is expired10169 disconnects from the database10170 when the timer is not expired10171 does not disconnect from the database10172Gitlab::Auth::Saml::AuthHash10173 #groups10174 returns array of groups10175 raw info hash attributes empty10176 returns an empty array10177 #authn_context10178 with response_object10179 can extract authn_context10180 with SAML 2.0 response_object10181 can extract authn_context10182 with ADFS SAML response_object10183 can extract authn_context10184 without response_object10185 returns an empty string10186Banzai::Filter::ImageLazyLoadFilter10187 adds a class attribute10188 appends to the current class attribute10189 adds a async decoding attribute10190 transforms the image src to a data-src10191 works with external images10192Types::ProjectMemberType10193 is expected to expose permissions using Types::PermissionTypes::Project10194 is expected to eq "ProjectMember"10195 is expected to require graphql authorizations :read_project10196 has the expected fields10197Model::ModelGenerator10198 when generating a model10199 create db/migrate/20220629203037_create_model_generator_test_foos.rb10200 create app/models/model_generator_test_foo.rb10201 invoke rspec10202 create spec/models/model_generator_test_foo_spec.rb10203 creates the model file with the right content10204 create db/migrate/20220629203037_create_model_generator_test_foos.rb10205 create app/models/model_generator_test_foo.rb10206 invoke rspec10207 create spec/models/model_generator_test_foo_spec.rb10208 creates the migration file with the right content10209 create db/migrate/20220629203037_create_model_generator_test_foos.rb10210 create app/models/model_generator_test_foo.rb10211 invoke rspec10212 create spec/models/model_generator_test_foo_spec.rb10213 creates the spec file with the right content10214Gitlab::DataBuilder::Alert10215 .build10216 is expected to be a kind of Hash10217 is expected to eq "alert"10218 contains the correct object attributes10219Gitlab::Config::Entry::Simplifiable10220 .strategy10221 defines entry strategies10222 setting strategy by a condition10223 when first strategy should be used10224 attemps to load a first strategy10225 when second strategy should be used10226 attemps to load a second strategy10227 when neither one is a valid strategy10228 instantiates an unknown strategy10229 when a unknown strategy class is not defined10230 raises an error when being initialized10231Gitlab::Git::DiffStatsCollection10232 #find_by_path10233 returns stats by path when found10234 returns nil when stats is not found by path10235 #paths10236 returns only modified paths10237 #real_size10238 returns the number of modified files10239 returns capped number when it is bigger than max_files10240Ci::DeleteObjectsWorker10241 is expected to be truthy10242 is expected to respond to #max_running_jobs10243 is expected to respond to #remaining_work_count10244 is expected to respond to #perform_work10245 #perform10246 executes a service10247Gitlab::Ci::Ansi2json::Result10248 #size10249 when offset is at the start10250 returns the full size10251 when offset is not zero10252 returns the remaining size10253 #total10254 returns size of stread10255Types::BoardType10256 is expected to eq "Board"10257 is expected to require graphql authorizations :read_issue_board10258 has specific fields10259Resolvers::PackageDetailsResolver10260 #resolve10261 is expected to eq #<Packages::Package id: 183, project_id: 1935, created_at: "2022-06-29 20:30:40.209708149 +0000", upd...omposer-package-1", version: "1.0.1", package_type: "composer", creator_id: 2564, status: "default">10262Issuable::LabelLinksDestroyWorker10263 is labeled as idempotent10264 performs multiple times sequentially without raising an exception10265 calls the Issuable::DestroyLabelLinksService10266Import::BitbucketServerProviderRepoEntity10267 behaves like exposes required fields for import entity10268 exposes required fields10269 correctly exposes id10270 correctly exposes full name10271 correctly exposes sanitized name10272 correctly exposes provider link10273Types::Ci::RunnerSetupType10274 is expected to eq "RunnerSetup"10275 exposes the expected fields10276Gitlab::View::Presenter::Simple10277 includes Gitlab::View::Presenter::Base10278 #initialize10279 takes arbitrary key/values and exposes them10280 override the presentee attributes10281 delegation10282 does not forward missing methods to subject10283Gitlab::Checks::TimedLogger10284 #log_timed10285 logs message10286 when time limit was reached10287 cancels action10288 cancels action with time elapsed if work was performed10289Gitlab::ImportExport::Reader10290 #project_tree10291 delegates to AttributesFinder#find_root10292 when exception raised10293 is expected to equal false10294 logs the error10295 #group_members_tree10296 delegates to AttributesFinder#find_root10297Types::Ci::Config::IncludeTypeEnum10298 is expected to eq "CiConfigIncludeType"10299 exposes all the existing include types10300groups/settings/_remove.html.haml10301 render10302 enables the Remove group button for a group10303UserCanonicalEmail10304 is expected to belong to user required: false10305 validations10306 canonical_email10307 is expected to validate that :canonical_email cannot be empty/falsy10308 validates email address10309Gitlab::Middleware::HandleIpSpoofAttackError10310 passes through the response from a valid upstream10311 translates an ActionDispatch::IpSpoofAttackError to a 400 response10312 passes through the exception raised by an invalid upstream10313Types::Packages::Composer::JsonType10314 is expected to eq "PackageComposerJsonType"10315 includes composer json files10316Clusters::Group10317 is expected to belong to cluster required: false10318 is expected to belong to group required: false10319RuboCop::Cop::RSpec::ModifySidekiqMiddleware10320 registers an offense and corrects10321DependencyProxy::GroupSetting10322 relationships10323 is expected to belong to group required: false10324 validations10325 is expected to validate that :group cannot be empty/falsy10326Gitlab::UsageDataCounters::ServiceUsageDataCounter10327 behaves like a redis usage counter10328 .count(download_payload_click)10329 increments the Service Usage Data download_payload_click counter by 110330 .read(download_payload_click)10331 returns the total number of download_payload_click events10332Types::Tree::TreeType10333 is expected to eq "Tree"10334 is expected to have graphql fields :trees, :submodules, :blobs, and :last_commit10335Events::RenderService10336 #execute10337 when the request format is atom10338 renders the note inside events10339 when the request format is not atom10340 renders the note inside events10341API::Entities::BulkImport10342 has the correct attributes10343Ci::Runners::UnregisterRunnerService#execute10344 destroys runner10345PolicyActor10346 implements all the methods from user10347AttrEncrypted10348 #encrypted_attributes10349 does not share state with other instances10350Types::Packages::Cleanup::KeepDuplicatedPackageFilesEnum10351 exposes all options10352 uses all possible options from model10353Gitlab::GithubImport::Importer::IssueAndLabelLinksImporter10354 #execute10355 imports an issue and its labels10356Gitlab::Diff::SuggestionDiff10357 #diff_lines10358 returns diff lines with correct line numbers10359 when the suggestion is for the last line of a file10360 returns a correct value if there is no newline at the end of the file10361Types::PermissionTypes::Ci::Runner10362 is expected to have graphql field :delete_runner10363Gitlab::Usage::Metrics::Instrumentations::UuidMetric10364 behaves like a correct instrumented metric value10365 has correct value10366Gitlab::Graphql::CopyFieldDescription10367 .copy_field_description10368 returns the correct description10369UploaderHelper10370 #extension_match?10371 returns false if file does not exist10372RuboCop::Cop::Gitlab::AvoidUploadedFileFromParams10373 when using UploadedFile.from_params10374 flags its call10375Types::Ci::JobStatusEnum10376 exposes all job status values10377#<Class:0x00007f9a4d4c49a8>10378 has the expected fields10379TokenAuthenticatableStrategies::Digest10380 #token_fields10381 includes the digest field10382Knapsack report was generated. Preview:10384 "spec/models/project_spec.rb": 439.9293670070001,10385 "spec/models/member_spec.rb": 74.19654283599994,10386 "spec/lib/gitlab/color_spec.rb": 8.665310317999683,10387 "spec/lib/gitlab/merge_requests/commit_message_generator_spec.rb": 74.53583070400055,10388 "spec/presenters/projects/security/configuration_presenter_spec.rb": 58.55426234399965,10389 "spec/models/design_management/design_spec.rb": 28.814711934000115,10390 "spec/lib/gitlab/auth/o_auth/user_spec.rb": 34.5343895900005,10391 "spec/models/wiki_page_spec.rb": 20.421517881999534,10392 "spec/services/boards/issues/move_service_spec.rb": 48.33434403500087,10393 "spec/services/boards/lists/move_service_spec.rb": 46.10987054399993,10394 "spec/workers/packages/maven/metadata/sync_worker_spec.rb": 46.894194049999896,10395 "spec/models/integrations/webex_teams_spec.rb": 31.436415305000082,10396 "spec/models/integrations/teamcity_spec.rb": 30.631955503000427,10397 "spec/lib/api/helpers_spec.rb": 21.552707833999193,10398 "spec/presenters/merge_request_presenter_spec.rb": 26.138068819000182,10399 "spec/graphql/types/project_type_spec.rb": 19.695660580999174,10400 "spec/lib/banzai/color_parser_spec.rb": 2.8565750030002164,10401 "spec/lib/gitlab/database/background_migration/batched_migration_runner_spec.rb": 25.669892214000356,10402 "spec/finders/group_descendants_finder_spec.rb": 23.80219495199981,10403 "spec/services/git/process_ref_changes_service_spec.rb": 22.00700901900018,10404 "spec/lib/gitlab/ci/status/stage/factory_spec.rb": 16.61653114500041,10405 "spec/lib/gitlab/usage/metric_definition_spec.rb": 7.0503452179991655,10406 "spec/presenters/ci/build_presenter_spec.rb": 14.23800743799984,10407 "spec/uploaders/packages/debian/distribution_release_file_uploader_spec.rb": 14.525996032999501,10408 "spec/services/projects/update_repository_storage_service_spec.rb": 17.68115625199971,10409 "spec/lib/gitlab/ci/pipeline/expression/lexeme/not_equals_spec.rb": 2.362867165999887,10410 "spec/models/route_spec.rb": 13.059909638000136,10411 "spec/finders/autocomplete/users_finder_spec.rb": 16.367600851000134,10412 "spec/helpers/auth_helper_spec.rb": 3.3133254519998445,10413 "spec/services/issues/set_crm_contacts_service_spec.rb": 11.832055627000045,10414 "spec/serializers/ci/pipeline_entity_spec.rb": 13.631512219999422,10415 "spec/lib/gitlab_spec.rb": 2.492464750000181,10416 "spec/services/todos/destroy/group_private_service_spec.rb": 20.844377391999842,10417 "spec/models/commit_collection_spec.rb": 10.473975429999882,10418 "spec/uploaders/pages/deployment_uploader_spec.rb": 9.736497247999978,10419 "spec/models/commit_range_spec.rb": 10.919809146999796,10420 "spec/serializers/pipeline_details_entity_spec.rb": 12.133577210000112,10421 "spec/lib/banzai/reference_parser/commit_parser_spec.rb": 10.336142736000511,10422 "spec/services/labels/promote_service_spec.rb": 9.78513776300042,10423 "spec/lib/banzai/filter/references/design_reference_filter_spec.rb": 4.894693850999829,10424 "spec/lib/gitlab/issues/rebalancing/state_spec.rb": 2.6697593990002133,10425 "spec/lib/gitlab/pagination/keyset/paginator_spec.rb": 2.838232887999766,10426 "spec/helpers/members_helper_spec.rb": 7.848061626000344,10427 "spec/lib/gitlab/changelog/config_spec.rb": 7.400032040000042,10428 "spec/lib/gitlab/ci/config/external/mapper_spec.rb": 3.841056677999404,10429 "spec/lib/gitlab/ci/badge/release/metadata_spec.rb": 11.074035806999746,10430 "spec/lib/banzai/filter/sanitization_filter_spec.rb": 2.0845625000001746,10431 "spec/routing/import_routing_spec.rb": 3.027602055999523,10432 "spec/services/import/github_service_spec.rb": 6.695359213999836,10433 "spec/lib/gitlab/diff/position_tracer/image_strategy_spec.rb": 7.838247217000571,10434 "spec/lib/gitlab/redis/duplicate_jobs_spec.rb": 2.355144986999221,10435 "spec/lib/gitlab/markdown_cache/active_record/extension_spec.rb": 3.023805445999642,10436 "spec/lib/gitlab/checks/single_change_access_spec.rb": 6.927075956000408,10437 "spec/lib/gitlab/ci/config/external/context_spec.rb": 1.3943419030001678,10438 "spec/lib/gitlab/database/migrations/test_batched_background_runner_spec.rb": 7.551029012000072,10439 "spec/services/projects/open_issues_count_service_spec.rb": 7.170807468000021,10440 "spec/models/error_tracking/error_spec.rb": 5.20660958299959,10441 "spec/workers/merge_requests/update_head_pipeline_worker_spec.rb": 5.7540768979997665,10442 "spec/lib/gitlab/file_finder_spec.rb": 5.5046643579999,10443 "spec/models/prometheus_alert_event_spec.rb": 4.143179741000495,10444 "spec/models/customer_relations/issue_contact_spec.rb": 7.892767860999811,10445 "spec/services/clusters/applications/uninstall_service_spec.rb": 8.887710519999928,10446 "spec/views/layouts/nav/sidebar/_admin.html.haml_spec.rb": 3.8988196310001513,10447 "spec/models/upload_spec.rb": 5.205533693999314,10448 "spec/models/web_ide_terminal_spec.rb": 4.477572391000649,10449 "spec/presenters/projects/import_export/project_export_presenter_spec.rb": 3.6172547149999446,10450 "spec/lib/gitlab/template/issue_template_spec.rb": 5.36123818500073,10451 "spec/services/packages/update_package_file_service_spec.rb": 5.116438964000736,10452 "spec/services/feature_flags/update_service_spec.rb": 2.591122218000237,10453 "spec/helpers/releases_helper_spec.rb": 5.205547173000014,10454 "spec/models/namespace_setting_spec.rb": 2.469911862999652,10455 "spec/services/users/update_service_spec.rb": 4.342367328000364,10456 "spec/lib/gitlab/ci/pipeline/chain/build/associations_spec.rb": 3.6226517440009047,10457 "spec/lib/gitlab/checks/changes_access_spec.rb": 4.173515307999878,10458 "spec/services/projects/lfs_pointers/lfs_link_service_spec.rb": 4.015926466000565,10459 "spec/graphql/types/terraform/state_version_type_spec.rb": 2.423404739000034,10460 "spec/presenters/gitlab/blame_presenter_spec.rb": 3.413796929000455,10461 "spec/models/packages/debian/file_entry_spec.rb": 1.270932807000463,10462 "spec/views/admin/application_settings/general.html.haml_spec.rb": 2.537984784999935,10463 "spec/lib/gitlab/shell_spec.rb": 2.9225867779996406,10464 "spec/services/users/update_todo_count_cache_service_spec.rb": 4.073168720000467,10465 "spec/lib/gitlab/web_ide/config/entry/global_spec.rb": 0.7417617209994205,10466 "spec/graphql/types/board_list_type_spec.rb": 3.181077617000483,10467 "spec/services/feature_flags/create_service_spec.rb": 2.109365085999343,10468 "spec/lib/gitlab/web_hooks/rate_limiter_spec.rb": 2.823770971000158,10469 "spec/models/spam_log_spec.rb": 1.8973711009994076,10470 "spec/workers/pipeline_metrics_worker_spec.rb": 4.1166025949996765,10471 "spec/models/issue_email_participant_spec.rb": 1.2379202109996186,10472 "spec/services/discussions/capture_diff_note_position_service_spec.rb": 3.6918649660001392,10473 "spec/models/group_group_link_spec.rb": 2.054036012999859,10474 "spec/tasks/gitlab/task_helpers_spec.rb": 0.9120331600006466,10475 "spec/workers/authorized_project_update/project_recalculate_worker_spec.rb": 1.1630732800003898,10476 "spec/lib/gitlab/ci/config/entry/port_spec.rb": 0.8168745809998654,10477 "spec/finders/projects/prometheus/alerts_finder_spec.rb": 1.9010290610003722,10478 "spec/lib/gitlab/alert_management/payload/managed_prometheus_spec.rb": 2.0976435969987506,10479 "spec/lib/gitlab/analytics/cycle_analytics/stage_events/plan_stage_start_spec.rb": 2.233179842000027,10480 "spec/helpers/users/callouts_helper_spec.rb": 2.0335950759999832,10481 "spec/graphql/mutations/terraform/state/unlock_spec.rb": 1.9161812689999351,10482 "spec/services/work_items/create_from_task_service_spec.rb": 5.136155491998579,10483 "spec/lib/banzai/pipeline/description_pipeline_spec.rb": 1.528428427000108,10484 "spec/lib/gitlab/protocol_access_spec.rb": 1.6904612469988933,10485 "spec/services/integrations/propagate_service_spec.rb": 3.8897021020002285,10486 "spec/lib/gitlab/database/background_migration_job_spec.rb": 1.1422147929988569,10487 "spec/services/system_notes/incidents_service_spec.rb": 2.1173896549989877,10488 "spec/models/bulk_imports/file_transfer/project_config_spec.rb": 0.7774552360006055,10489 "spec/services/deployments/create_service_spec.rb": 2.9014461010010564,10490 "spec/lib/gitlab/usage/metric_spec.rb": 3.7828194049998274,10491 "spec/services/test_hooks/system_service_spec.rb": 1.147747712000637,10492 "spec/graphql/mutations/todos/mark_done_spec.rb": 2.6558804500000406,10493 "spec/workers/bulk_imports/pipeline_worker_spec.rb": 1.1658887499997945,10494 "spec/scripts/determine-qa-tests_spec.rb": 0.43945981700017,10495 "spec/services/error_tracking/issue_details_service_spec.rb": 3.0362241349994292,10496 "spec/lib/banzai/reference_parser/milestone_parser_spec.rb": 3.9184987290009303,10497 "spec/lib/gitlab/issuables_count_for_state_spec.rb": 0.8950807229994098,10498 "spec/graphql/resolvers/ci/config_resolver_spec.rb": 0.6242080749998422,10499 "spec/serializers/job_artifact_report_entity_spec.rb": 2.1983038259986643,10500 "spec/lib/gitlab/ci/reports/security/identifier_spec.rb": 0.8311433200015017,10501 "spec/rubocop/cop/ruby_interpolation_in_translation_spec.rb": 0.5202576770006999,10502 "spec/lib/atlassian/jira_connect/serializers/pull_request_entity_spec.rb": 1.4949622500007536,10503 "spec/helpers/snippets_helper_spec.rb": 1.47948283200094,10504 "spec/services/authorized_project_update/project_recalculate_per_user_service_spec.rb": 2.5619346119983675,10505 "spec/channels/application_cable/connection_spec.rb": 0.7047536949994537,10506 "spec/views/projects/commits/_commit.html.haml_spec.rb": 2.775969766000344,10507 "spec/lib/gitlab/seeder_spec.rb": 0.7791605160000472,10508 "spec/lib/gitlab/git/user_spec.rb": 0.6065044869992562,10509 "spec/lib/gitlab/database/migration_spec.rb": 0.2904112050000549,10510 "spec/services/ci/create_pipeline_service/parameter_content_spec.rb": 2.2070536649989663,10511 "spec/lib/banzai/filter/inline_alert_metrics_filter_spec.rb": 0.5556326130008529,10512 "spec/workers/gitlab/github_import/advance_stage_worker_spec.rb": 2.857208546000038,10513 "spec/presenters/packages/pypi/simple_index_presenter_spec.rb": 0.834581570001319,10514 "spec/lib/bulk_imports/groups/pipelines/group_pipeline_spec.rb": 0.9967599400006293,10515 "spec/helpers/x509_helper_spec.rb": 2.715445292998993,10516 "spec/lib/gitlab/database/migration_helpers/cascading_namespace_settings_spec.rb": 1.634167393000098,10517 "spec/lib/api/entities/wiki_page_spec.rb": 2.60162421700079,10518 "spec/graphql/resolvers/ci/runner_jobs_resolver_spec.rb": 1.7429856299986568,10519 "spec/lib/gitlab/serializer/pagination_spec.rb": 1.1825260980003804,10520 "spec/models/lfs_objects_project_spec.rb": 1.9204843989991787,10521 "spec/lib/gitlab/database/connection_timer_spec.rb": 0.525036707000254,10522 "spec/lib/gitlab/import/merge_request_helpers_spec.rb": 2.142631951999647,10523 "spec/workers/concerns/gitlab/github_import/rescheduling_methods_spec.rb": 1.2491021499990893,10524 "spec/lib/gitlab/ci/config/normalizer/matrix_strategy_spec.rb": 0.21303867400092713,10525 "spec/lib/gitlab/import_export/uploads_saver_spec.rb": 1.8030371730001207,10526 "spec/lib/gitlab/graphql/mount_mutation_spec.rb": 0.4743114630000491,10527 "spec/support_specs/database/prevent_cross_joins_spec.rb": 0.42505313900073816,10528 "spec/lib/sidebars/projects/menus/project_information_menu_spec.rb": 1.1225575349999417,10529 "spec/models/error_tracking/error_event_spec.rb": 0.6271238040008029,10530 "spec/lib/gitlab/repository_size_checker_spec.rb": 0.5068919690002076,10531 "spec/services/metrics/dashboard/transient_embed_service_spec.rb": 1.425471138998546,10532 "spec/services/ide/terminal_config_service_spec.rb": 1.0783941999998206,10533 "spec/lib/gitlab/database/migrations/reestablished_connection_stack_spec.rb": 0.7817434859989589,10534 "spec/lib/gitlab/incoming_email_spec.rb": 0.463730604000375,10535 "spec/models/concerns/issuable_link_spec.rb": 1.010580617999949,10536 "spec/views/projects/pipelines/show.html.haml_spec.rb": 1.4302392680001503,10537 "spec/lib/gitlab/import_export/json/legacy_writer_spec.rb": 0.374993245000951,10538 "spec/services/packages/nuget/sync_metadatum_service_spec.rb": 1.8318241100005253,10539 "spec/models/ci/build_need_spec.rb": 1.3496395879992633,10540 "spec/graphql/resolvers/group_resolver_spec.rb": 0.47987797199857596,10541 "spec/lib/gitlab/ci/templates/Jobs/sast_iac_latest_gitlab_ci_yaml_spec.rb": 1.7445820100001583,10542 "spec/lib/gitlab/mailgun/webhook_processors/failure_logger_spec.rb": 0.21850905399878684,10543 "spec/components/pajamas/radio_component_spec.rb": 0.6283006439989549,10544 "spec/components/diffs/stats_component_spec.rb": 0.7078399950005405,10545 "spec/workers/clusters/cleanup/service_account_worker_spec.rb": 0.8853626740001346,10546 "spec/lib/gitlab/sidekiq_logging/deduplication_logger_spec.rb": 0.21484879400122736,10547 "spec/finders/packages/package_file_finder_spec.rb": 1.3254463199991733,10548 "spec/models/blob_viewer/license_spec.rb": 1.7361023810008192,10549 "spec/serializers/evidences/milestone_entity_spec.rb": 1.7954305929997645,10550 "spec/lib/api/entities/personal_access_token_with_details_spec.rb": 0.30066557400095917,10551 "spec/lib/gitlab/email/message/in_product_marketing_spec.rb": 0.4499835160004295,10552 "spec/lib/gitlab/pages/settings_spec.rb": 0.23513343100057682,10553 "spec/lib/gitlab/ci/status/success_warning_spec.rb": 0.4248976480012061,10554 "spec/graphql/resolvers/repository_branch_names_resolver_spec.rb": 1.8432397269989451,10555 "spec/models/concerns/from_except_spec.rb": 0.24070816099992953,10556 "spec/services/feature_flags/hook_service_spec.rb": 0.7271653419993527,10557 "spec/lib/gitlab/alert_management/alert_status_counts_spec.rb": 1.3068131830004859,10558 "spec/serializers/jira_connect/group_entity_spec.rb": 0.26074403900020116,10559 "spec/views/profiles/keys/_form.html.haml_spec.rb": 0.49437961999865365,10560 "spec/lib/gitlab/checks/push_file_count_check_spec.rb": 1.3688348150008096,10561 "spec/lib/banzai/filter/image_link_filter_spec.rb": 0.42624952900041535,10562 "spec/lib/sidebars/projects/menus/invite_team_members_menu_spec.rb": 0.9397685570002068,10563 "spec/rubocop/cop/migration/datetime_spec.rb": 0.3543402970008174,10564 "spec/rubocop/cop/migration/refer_to_index_by_name_spec.rb": 0.10880569700020715,10565 "spec/workers/analytics/usage_trends/counter_job_worker_spec.rb": 0.9580597450003552,10566 "spec/config/smime_signature_settings_spec.rb": 0.24131700100042508,10567 "spec/services/ci/job_artifacts/destroy_associations_service_spec.rb": 1.0080595189992891,10568 "spec/lib/gitlab/database/type/color_spec.rb": 0.2913004540005204,10569 "spec/lib/bitbucket/connection_spec.rb": 0.13563132299896097,10570 "spec/initializers/0_log_deprecations_spec.rb": 0.5068533989997377,10571 "spec/lib/gitlab/file_markdown_link_builder_spec.rb": 0.5862480190007773,10572 "spec/helpers/admin/background_migrations_helper_spec.rb": 0.325805300999491,10573 "spec/models/oauth_access_grant_spec.rb": 0.4118215010003041,10574 "spec/lib/api/entities/plan_limit_spec.rb": 0.16207595000014408,10575 "spec/graphql/types/ci/config/config_type_spec.rb": 0.16514207100044587,10576 "spec/policies/identity_provider_policy_spec.rb": 0.2768872670003475,10577 "spec/lib/gitlab/graphql/loaders/batch_commit_loader_spec.rb": 0.8267077809996408,10578 "spec/models/programming_language_spec.rb": 0.35176468699864927,10579 "spec/rubocop/cop/gitlab/const_get_inherit_false_spec.rb": 0.22119044399914856,10580 "spec/graphql/types/packages/package_group_sort_enum_spec.rb": 0.10881942699961655,10581 "spec/lib/gitlab/analytics/cycle_analytics/average_spec.rb": 1.0061537389992736,10582 "spec/helpers/explore_helper_spec.rb": 0.37139333599952806,10583 "spec/presenters/prometheus_alert_presenter_spec.rb": 0.6743847489997279,10584 "spec/helpers/sourcegraph_helper_spec.rb": 0.2292217320009513,10585 "spec/workers/gitlab/github_import/stage/import_lfs_objects_worker_spec.rb": 0.48126626199882594,10586 "spec/serializers/feature_flag_entity_spec.rb": 0.9576555950006878,10587 "spec/services/packages/remove_tag_service_spec.rb": 1.1075302859990188,10588 "spec/models/project_pages_metadatum_spec.rb": 1.4054684700004145,10589 "spec/lib/gitlab/chat/responder_spec.rb": 1.1535846919996402,10590 "spec/lib/gitlab/bitbucket_import/project_creator_spec.rb": 1.1949353870004416,10591 "spec/lib/gitlab/github_import/page_counter_spec.rb": 0.18356150799991156,10592 "spec/workers/deployments/archive_in_project_worker_spec.rb": 0.6921986569996079,10593 "spec/lib/gitlab/usage/metrics/key_path_processor_spec.rb": 0.29308217500147293,10594 "spec/lib/bulk_imports/common/pipelines/wiki_pipeline_spec.rb": 0.9051561409996793,10595 "spec/lib/gitlab/time_tracking_formatter_spec.rb": 0.28874729500057583,10596 "spec/graphql/types/merge_request_state_enum_spec.rb": 0.36632046699924103,10597 "spec/lib/gitlab/database/postgresql_adapter/force_disconnectable_mixin_spec.rb": 0.3944656830008171,10598 "spec/lib/gitlab/auth/saml/auth_hash_spec.rb": 0.28706645500096784,10599 "spec/lib/banzai/filter/image_lazy_load_filter_spec.rb": 0.2194176939992758,10600 "spec/graphql/types/project_member_type_spec.rb": 0.1718723689991748,10601 "spec/lib/generators/model/model_generator_spec.rb": 0.36294492699926195,10602 "spec/lib/gitlab/data_builder/alert_spec.rb": 0.5658378410007572,10603 "spec/lib/gitlab/config/entry/simplifiable_spec.rb": 0.33054763000109233,10604 "spec/lib/gitlab/git/diff_stats_collection_spec.rb": 0.31861039199975494,10605 "spec/workers/ci/delete_objects_worker_spec.rb": 0.30123788400123885,10606 "spec/lib/gitlab/ci/ansi2json/result_spec.rb": 0.1883583170001657,10607 "spec/graphql/types/board_type_spec.rb": 0.30318103399986285,10608 "spec/graphql/resolvers/package_details_resolver_spec.rb": 0.4995669700001599,10609 "spec/workers/issuable/label_links_destroy_worker_spec.rb": 0.2213407429990184,10610 "spec/serializers/import/bitbucket_server_provider_repo_entity_spec.rb": 0.29278725500080327,10611 "spec/graphql/types/ci/runner_setup_type_spec.rb": 0.1172907860000123,10612 "spec/lib/gitlab/view/presenter/simple_spec.rb": 0.22313957400001527,10613 "spec/lib/gitlab/checks/timed_logger_spec.rb": 0.14389624199975515,10614 "spec/lib/gitlab/import_export/reader_spec.rb": 0.2868839160000789,10615 "spec/graphql/types/ci/config/include_type_enum_spec.rb": 0.15566977100024815,10616 "spec/views/groups/settings/_remove.html.haml_spec.rb": 0.4843565209994267,10617 "spec/models/user_canonical_email_spec.rb": 0.31124411200107716,10618 "spec/lib/gitlab/middleware/handle_ip_spoof_attack_error_spec.rb": 0.17047229999843694,10619 "spec/graphql/types/packages/composer/json_type_spec.rb": 0.15136194200022146,10620 "spec/models/clusters/group_spec.rb": 0.15423025199925178,10621 "spec/rubocop/cop/rspec/modify_sidekiq_middleware_spec.rb": 0.10774307700012287,10622 "spec/models/dependency_proxy/group_setting_spec.rb": 0.15809017100036726,10623 "spec/lib/gitlab/usage_data_counters/service_usage_data_counter_spec.rb": 0.14187297299940838,10624 "spec/graphql/types/tree/tree_type_spec.rb": 0.13768487299967092,10625 "spec/services/events/render_service_spec.rb": 0.3177168919992255,10626 "spec/lib/api/entities/bulk_import_spec.rb": 0.24190083099892945,10627 "spec/services/ci/runners/unregister_runner_service_spec.rb": 0.1943744960008189,10628 "spec/policies/concerns/policy_actor_spec.rb": 0.1881540379999933,10629 "spec/initializers/attr_encrypted_thread_safe_spec.rb": 0.1910644780000439,10630 "spec/graphql/types/packages/cleanup/keep_duplicated_package_files_enum_spec.rb": 0.18866691699986404,10631 "spec/lib/gitlab/github_import/importer/issue_and_label_links_importer_spec.rb": 0.21948419399996055,10632 "spec/lib/gitlab/diff/suggestion_diff_spec.rb": 0.13807164399986505,10633 "spec/graphql/types/permission_types/ci/runner_spec.rb": 0.059315812000932056,10634 "spec/lib/gitlab/usage/metrics/instrumentations/uuid_metric_spec.rb": 0.06333734300096694,10635 "spec/lib/gitlab/graphql/copy_field_description_spec.rb": 0.07333322100021178,10636 "spec/uploaders/uploader_helper_spec.rb": 0.08619150000049558,10637 "spec/rubocop/cop/gitlab/avoid_uploaded_file_from_params_spec.rb": 0.14774490200034052,10638 "spec/graphql/types/ci/job_status_enum_spec.rb": 0.1365613839989237,10639 "spec/graphql/types/merge_request_connection_type_spec.rb": 0.09483535799881793,10640 "spec/models/concerns/token_authenticatable_strategies/digest_spec.rb": 0.0929810289999295510642Knapsack global time execution for tests: 27m 49s10643Pending: (Failures listed here are expected and do not affect your suite's status)10644 1) DesignManagement::Design behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when creating an object does not raise an error if the internal id is blank10645 # No reason given10646 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:4910647 2) DesignManagement::Design behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when updating an object does not raise an error if the internal id is blank10648 # No reason given10649 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:5710650 3) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::ProjectDistribution behaves like builds correct paths #upload_path behaves like matches the method pattern 10651 # No pattern provided, skipping.10652 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810653 4) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::ProjectDistribution behaves like builds correct paths #relative_path is relative10654 # Path not set, skipping.10655 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:4010656 5) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::ProjectDistribution behaves like builds correct paths .absolute_path behaves like matches the method pattern 10657 # No pattern provided, skipping.10658 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810659 6) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::ProjectDistribution behaves like builds correct paths .base_dir behaves like matches the method pattern 10660 # No pattern provided, skipping.10661 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810662 7) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::ProjectDistribution object store is remote behaves like builds correct paths #upload_path behaves like matches the method pattern 10663 # No pattern provided, skipping.10664 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810665 8) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::ProjectDistribution object store is remote behaves like builds correct paths #relative_path is relative10666 # Path not set, skipping.10667 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:4010668 9) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::ProjectDistribution object store is remote behaves like builds correct paths .absolute_path behaves like matches the method pattern 10669 # No pattern provided, skipping.10670 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810671 10) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::ProjectDistribution object store is remote behaves like builds correct paths .base_dir behaves like matches the method pattern 10672 # No pattern provided, skipping.10673 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810674 11) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::GroupDistribution behaves like builds correct paths #upload_path behaves like matches the method pattern 10675 # No pattern provided, skipping.10676 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810677 12) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::GroupDistribution behaves like builds correct paths #relative_path is relative10678 # Path not set, skipping.10679 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:4010680 13) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::GroupDistribution behaves like builds correct paths .absolute_path behaves like matches the method pattern 10681 # No pattern provided, skipping.10682 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810683 14) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::GroupDistribution behaves like builds correct paths .base_dir behaves like matches the method pattern 10684 # No pattern provided, skipping.10685 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810686 15) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::GroupDistribution object store is remote behaves like builds correct paths #upload_path behaves like matches the method pattern 10687 # No pattern provided, skipping.10688 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810689 16) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::GroupDistribution object store is remote behaves like builds correct paths #relative_path is relative10690 # Path not set, skipping.10691 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:4010692 17) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::GroupDistribution object store is remote behaves like builds correct paths .absolute_path behaves like matches the method pattern 10693 # No pattern provided, skipping.10694 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810695 18) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::GroupDistribution object store is remote behaves like builds correct paths .base_dir behaves like matches the method pattern 10696 # No pattern provided, skipping.10697 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810698 19) Pages::DeploymentUploader behaves like builds correct paths #upload_path behaves like matches the method pattern 10699 # No pattern provided, skipping.10700 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810701 20) Pages::DeploymentUploader behaves like builds correct paths #relative_path is relative10702 # Path not set, skipping.10703 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:4010704 21) Pages::DeploymentUploader behaves like builds correct paths .absolute_path behaves like matches the method pattern 10705 # No pattern provided, skipping.10706 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810707 22) Pages::DeploymentUploader behaves like builds correct paths .base_dir behaves like matches the method pattern 10708 # No pattern provided, skipping.10709 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810710 23) Pages::DeploymentUploader when object store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 10711 # No pattern provided, skipping.10712 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810713 24) Pages::DeploymentUploader when object store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 10714 # No pattern provided, skipping.10715 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810716 25) Pages::DeploymentUploader when object store is REMOTE behaves like builds correct paths #upload_path behaves like matches the method pattern 10717 # No pattern provided, skipping.10718 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810719 26) Pages::DeploymentUploader when object store is REMOTE behaves like builds correct paths #relative_path is relative10720 # Path not set, skipping.10721 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:4010722 27) Pages::DeploymentUploader when object store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 10723 # No pattern provided, skipping.10724 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810725 28) Pages::DeploymentUploader when object store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 10726 # No pattern provided, skipping.10727 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810728Finished in 27 minutes 54 seconds (files took 1 minute 13.44 seconds to load)107295474 examples, 0 failures, 28 pending10730RSpec exited with 0.10731No examples to retry, congrats!10733Not uploading cache ruby-gems-debian-bullseye-ruby-2.7-10 due to policy10734Not uploading cache gitaly-ruby-gems-debian-bullseye-ruby-2.7-10 due to policy10736Uploading artifacts...10737coverage/: found 5 matching files and directories 10738crystalball/: found 2 matching files and directories 10739deprecations/: found 7 matching files and directories 10740knapsack/: found 3 matching files and directories 10741rspec/: found 8 matching files and directories 10742WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory 10743log/*.log: found 20 matching files and directories 10744WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/2658553341/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com10745WARNING: Retrying... context=artifacts-uploader error=request redirected10746Uploading artifacts as "archive" to coordinator... 201 Created id=2658553341 responseStatus=201 Created token=QFnHsnKC10747Uploading artifacts...10748rspec/junit_rspec.xml: found 1 matching files and directories 10749WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/2658553341/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com10750WARNING: Retrying... context=artifacts-uploader error=request redirected10751Uploading artifacts as "junit" to coordinator... 201 Created id=2658553341 responseStatus=201 Created token=QFnHsnKC10753Job succeeded