There was an error fetching the job.
rspec integration pg9 3/6
Passed Started
by
@nick.thomas

Nick Thomas
1Running with gitlab-runner 12.3.0 (a8a019e0)2 on docker-auto-scale-com 1d6b581d 3 Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.33 ...
00:42
4Starting service postgres:9.6 ...5Pulling docker image postgres:9.6 ...6Using docker image sha256:61c59b9a763f02dd11635b20ef117812dad973b95a68bd125f3a1767f9159cf9 for postgres:9.6 ...7Starting service redis:alpine ...8Pulling docker image redis:alpine ...9Using docker image sha256:f9d774eafe0d9aa813860e94490efffec6041d63a786133749974c15c055663e for redis:alpine ...10Waiting for services to be up and running...11Authenticating with credentials from job payload (GitLab Registry)12Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.33 ...13Using docker image sha256:a94eba80a84b7c7dacf920a5a92cf2e3bde001dce105a743a16950b506e477ef for registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.33 ... 14 Running on runner-1d6b581d-project-278964-concurrent-0 via runner-1d6b581d-gsrm-1571230130-14c4f932...
00:11
16Reinitialized existing Git repository in /builds/gitlab-org/gitlab/.git/18 * [new ref] refs/pipelines/89282327 -> refs/pipelines/8928232719 * [new branch] master -> origin/master20Checking out 6f5714dc as master...21Removing .gitlab_shell_secret22Removing .gitlab_workhorse_secret23Removing .go/24Removing config/database.yml25Removing config/database_geo.yml26Removing config/gitlab.yml27Removing config/redis.cache.yml28Removing config/redis.queues.yml29Removing config/redis.shared_state.yml30Removing config/resque.yml31Removing config/secrets.yml32Removing coverage/33Removing junit_rspec.xml34Removing knapsack/35Removing log/api_json.log36Removing log/application.log37Removing log/audit_json.log38Removing log/gitaly-test.log39Removing log/graphql_json.log40Removing log/grpc.log41Removing log/importer.log42Removing log/test_json.log43Removing node_modules/44Removing public/assets/45Removing rspec_flaky/46Removing rspec_profiling/47Removing shared/lfs-objects/b8/48Removing shared/lfs-objects/tmp/49Removing shared/packages/50Removing shared/tmp/51Removing tmp/cache/52Removing tmp/memory_test/53Removing tmp/prometheus_multiproc_dir/counter_process_203-0.db54Removing tmp/prometheus_multiproc_dir/histogram_process_203-0.db55Removing tmp/tests/56Removing vendor/gitaly-ruby/57Removing vendor/ruby/58Skipping Git submodules setup60Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/debian-stretch-ruby-2.6.3-node-12.x-2 61Successfully extracted cache63Downloading artifacts from coordinator... ok id=322922801 responseStatus=200 OK token=xdLK22P564Downloading artifacts for retrieve-tests-metadata (322922809)...65Downloading artifacts from coordinator... ok id=322922809 responseStatus=200 OK token=vWkPg6d_66Downloading artifacts for setup-test-env (322922804)...67Downloading artifacts from coordinator... ok id=322922804 responseStatus=200 OK token=2YUWrMkH68WARNING: tmp/tests/gitlab-shell/.gitlab_shell_secret: chmod tmp/tests/gitlab-shell/.gitlab_shell_secret: no such file or directory (suppressing repeats) 70$ date71Wed Oct 16 17:04:54 UTC 201972$ export GOPATH=$CI_PROJECT_DIR/.go73$ mkdir -p $GOPATH74$ source scripts/utils.sh75$ source scripts/prepare_build.sh76Bundler version 1.17.277Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.78The Gemfile's dependencies are satisfied79Successfully installed knapsack-1.18.0801 gem installed81CREATE ROLE82GRANT83Dropped database 'gitlabhq_test'84Created database 'gitlabhq_test'85-- enable_extension("pg_trgm")86 -> 0.0373s87-- enable_extension("plpgsql")88 -> 0.0038s89-- create_table("abuse_reports", {:id=>:serial, :force=>:cascade})90 -> 0.0057s91-- create_table("alerts_service_data", {:force=>:cascade})92 -> 0.0082s93-- create_table("allowed_email_domains", {:force=>:cascade})94 -> 0.0057s95-- create_table("analytics_cycle_analytics_group_stages", {:force=>:cascade})96 -> 0.0181s97-- create_table("analytics_cycle_analytics_project_stages", {:force=>:cascade})98 -> 0.0167s99-- create_table("analytics_language_trend_repository_languages", {:id=>false, :force=>:cascade})100 -> 0.0091s101-- create_table("analytics_repository_file_commits", {:force=>:cascade})102 -> 0.0079s103-- create_table("analytics_repository_file_edits", {:force=>:cascade})104 -> 0.0085s105-- create_table("analytics_repository_files", {:force=>:cascade})106 -> 0.0057s107-- create_table("appearances", {:id=>:serial, :force=>:cascade})108 -> 0.0045s109-- create_table("application_setting_terms", {:id=>:serial, :force=>:cascade})110 -> 0.0032s111-- create_table("application_settings", {:id=>:serial, :force=>:cascade})112 -> 0.1076s113-- create_table("approval_merge_request_rule_sources", {:force=>:cascade})114 -> 0.0119s115-- create_table("approval_merge_request_rules", {:force=>:cascade})116 -> 0.0191s117-- create_table("approval_merge_request_rules_approved_approvers", {:force=>:cascade})118 -> 0.0079s119-- create_table("approval_merge_request_rules_groups", {:force=>:cascade})120 -> 0.0076s121-- create_table("approval_merge_request_rules_users", {:force=>:cascade})122 -> 0.0079s123-- create_table("approval_project_rules", {:force=>:cascade})124 -> 0.0122s125-- create_table("approval_project_rules_groups", {:force=>:cascade})126 -> 0.0079s127-- create_table("approval_project_rules_users", {:force=>:cascade})128 -> 0.0082s129-- create_table("approvals", {:id=>:serial, :force=>:cascade})130 -> 0.0078s131-- create_table("approver_groups", {:id=>:serial, :force=>:cascade})132 -> 0.0083s133-- create_table("approvers", {:id=>:serial, :force=>:cascade})134 -> 0.0084s135-- create_table("audit_events", {:id=>:serial, :force=>:cascade})136 -> 0.0089s137-- create_table("award_emoji", {:id=>:serial, :force=>:cascade})138 -> 0.0085s139-- create_table("badges", {:id=>:serial, :force=>:cascade})140 -> 0.0085s141-- create_table("board_assignees", {:id=>:serial, :force=>:cascade})142 -> 0.0078s143-- create_table("board_group_recent_visits", {:force=>:cascade})144 -> 0.0124s145-- create_table("board_labels", {:id=>:serial, :force=>:cascade})146 -> 0.0080s147-- create_table("board_project_recent_visits", {:force=>:cascade})148 -> 0.0127s149-- create_table("boards", {:id=>:serial, :force=>:cascade})150 -> 0.0118s151-- create_table("broadcast_messages", {:id=>:serial, :force=>:cascade})152 -> 0.0066s153-- create_table("chat_names", {:id=>:serial, :force=>:cascade})154 -> 0.0095s155-- create_table("chat_teams", {:id=>:serial, :force=>:cascade})156 -> 0.0063s157-- create_table("ci_build_needs", {:id=>:serial, :force=>:cascade})158 -> 0.0061s159-- create_table("ci_build_trace_chunks", {:force=>:cascade})160 -> 0.0061s161-- create_table("ci_build_trace_section_names", {:id=>:serial, :force=>:cascade})162 -> 0.0065s163-- create_table("ci_build_trace_sections", {:id=>:serial, :force=>:cascade})164 -> 0.0103s165-- create_table("ci_builds", {:id=>:serial, :force=>:cascade})166 -> 0.0635s167-- create_table("ci_builds_metadata", {:id=>:serial, :force=>:cascade})168 -> 0.0110s169-- create_table("ci_builds_runner_session", {:force=>:cascade})170 -> 0.0056s171-- create_table("ci_group_variables", {:id=>:serial, :force=>:cascade})172 -> 0.0075s173-- create_table("ci_job_artifacts", {:id=>:serial, :force=>:cascade})174 -> 0.0167s175-- create_table("ci_job_variables", {:force=>:cascade})176 -> 0.0086s177-- create_table("ci_pipeline_chat_data", {:force=>:cascade})178 -> 0.0078s179-- create_table("ci_pipeline_schedule_variables", {:id=>:serial, :force=>:cascade})180 -> 0.0065s181-- create_table("ci_pipeline_schedules", {:id=>:serial, :force=>:cascade})182 -> 0.0112s183-- create_table("ci_pipeline_variables", {:id=>:serial, :force=>:cascade})184 -> 0.0064s185-- create_table("ci_pipelines", {:id=>:serial, :force=>:cascade})186 -> 0.0354s187-- create_table("ci_runner_namespaces", {:id=>:serial, :force=>:cascade})188 -> 0.0070s189-- create_table("ci_runner_projects", {:id=>:serial, :force=>:cascade})190 -> 0.0071s191-- create_table("ci_runners", {:id=>:serial, :force=>:cascade})192 -> 0.0223s193-- create_table("ci_sources_pipelines", {:id=>:serial, :force=>:cascade})194 -> 0.0146s195-- create_table("ci_stages", {:id=>:serial, :force=>:cascade})196 -> 0.0132s197-- create_table("ci_trigger_requests", {:id=>:serial, :force=>:cascade})198 -> 0.0084s199-- create_table("ci_triggers", {:id=>:serial, :force=>:cascade})200 -> 0.0085s201-- create_table("ci_variables", {:id=>:serial, :force=>:cascade})202 -> 0.0089s203-- create_table("cluster_groups", {:id=>:serial, :force=>:cascade})204 -> 0.0080s205-- create_table("cluster_platforms_kubernetes", {:id=>:serial, :force=>:cascade})206 -> 0.0064s207-- create_table("cluster_projects", {:id=>:serial, :force=>:cascade})208 -> 0.0080s209-- create_table("cluster_providers_gcp", {:id=>:serial, :force=>:cascade})210 -> 0.0103s211-- create_table("clusters", {:id=>:serial, :force=>:cascade})212 -> 0.0142s213-- create_table("clusters_applications_cert_managers", {:id=>:serial, :force=>:cascade})214 -> 0.0065s215-- create_table("clusters_applications_helm", {:id=>:serial, :force=>:cascade})216 -> 0.0064s217-- create_table("clusters_applications_ingress", {:id=>:serial, :force=>:cascade})218 -> 0.0068s219-- create_table("clusters_applications_jupyter", {:id=>:serial, :force=>:cascade})220 -> 0.0091s221-- create_table("clusters_applications_knative", {:id=>:serial, :force=>:cascade})222 -> 0.0063s223-- create_table("clusters_applications_prometheus", {:id=>:serial, :force=>:cascade})224 -> 0.0067s225-- create_table("clusters_applications_runners", {:id=>:serial, :force=>:cascade})226 -> 0.0091s227-- create_table("clusters_kubernetes_namespaces", {:force=>:cascade})228 -> 0.0184s229-- create_table("container_repositories", {:id=>:serial, :force=>:cascade})230 -> 0.0084s231-- create_table("conversational_development_index_metrics", {:id=>:serial, :force=>:cascade})232 -> 0.0086s233-- create_table("dependency_proxy_blobs", {:id=>:serial, :force=>:cascade})234 -> 0.0070s235-- create_table("dependency_proxy_group_settings", {:id=>:serial, :force=>:cascade})236 -> 0.0060s237-- create_table("deploy_keys_projects", {:id=>:serial, :force=>:cascade})238 -> 0.0061s239-- create_table("deploy_tokens", {:id=>:serial, :force=>:cascade})240 -> 0.0131s241-- create_table("deployments", {:id=>:serial, :force=>:cascade})242 -> 0.0291s243-- create_table("design_management_designs", {:force=>:cascade})244 -> 0.0084s245-- create_table("design_management_designs_versions", {:id=>false, :force=>:cascade})246 -> 0.0124s247-- create_table("design_management_versions", {:force=>:cascade})248 -> 0.0112s249-- create_table("draft_notes", {:force=>:cascade})250 -> 0.0119s251-- create_table("elasticsearch_indexed_namespaces", {:id=>false, :force=>:cascade})252 -> 0.0042s253-- create_table("elasticsearch_indexed_projects", {:id=>false, :force=>:cascade})254 -> 0.0038s255-- create_table("emails", {:id=>:serial, :force=>:cascade})256 -> 0.0112s257-- create_table("environments", {:id=>:serial, :force=>:cascade})258 -> 0.0136s259-- create_table("epic_issues", {:id=>:serial, :force=>:cascade})260 -> 0.0073s261-- create_table("epic_metrics", {:id=>:serial, :force=>:cascade})262 -> 0.0050s263-- create_table("epics", {:id=>:serial, :force=>:cascade})264 -> 0.0250s265-- create_table("events", {:id=>:serial, :force=>:cascade})266 -> 0.0201s267-- create_table("external_pull_requests", {:force=>:cascade})268 -> 0.0058s269-- create_table("feature_gates", {:id=>:serial, :force=>:cascade})270 -> 0.0056s271-- create_table("features", {:id=>:serial, :force=>:cascade})272 -> 0.0055s273-- create_table("fork_network_members", {:id=>:serial, :force=>:cascade})274 -> 0.0092s275-- create_table("fork_networks", {:id=>:serial, :force=>:cascade})276 -> 0.0055s277-- create_table("forked_project_links", {:id=>:serial, :force=>:cascade})278 -> 0.0060s279-- create_table("geo_cache_invalidation_events", {:force=>:cascade})280 -> 0.0029s281-- create_table("geo_container_repository_updated_events", {:force=>:cascade})282 -> 0.0050s283-- create_table("geo_event_log", {:force=>:cascade})284 -> 0.0320s285-- create_table("geo_hashed_storage_attachments_events", {:force=>:cascade})286 -> 0.0061s287-- create_table("geo_hashed_storage_migrated_events", {:force=>:cascade})288 -> 0.0063s289-- create_table("geo_job_artifact_deleted_events", {:force=>:cascade})290 -> 0.0061s291-- create_table("geo_lfs_object_deleted_events", {:force=>:cascade})292 -> 0.0056s293-- create_table("geo_node_namespace_links", {:id=>:serial, :force=>:cascade})294 -> 0.0099s295-- create_table("geo_node_statuses", {:id=>:serial, :force=>:cascade})296 -> 0.0079s297-- create_table("geo_nodes", {:id=>:serial, :force=>:cascade})298 -> 0.0152s299-- create_table("geo_repositories_changed_events", {:force=>:cascade})300 -> 0.0053s301-- create_table("geo_repository_created_events", {:force=>:cascade})302 -> 0.0060s303-- create_table("geo_repository_deleted_events", {:force=>:cascade})304 -> 0.0059s305-- create_table("geo_repository_renamed_events", {:force=>:cascade})306 -> 0.0088s307-- create_table("geo_repository_updated_events", {:force=>:cascade})308 -> 0.0096s309-- create_table("geo_reset_checksum_events", {:force=>:cascade})310 -> 0.0051s311-- create_table("geo_upload_deleted_events", {:force=>:cascade})312 -> 0.0063s313-- create_table("gitlab_subscriptions", {:force=>:cascade})314 -> 0.0095s315-- create_table("gpg_key_subkeys", {:id=>:serial, :force=>:cascade})316 -> 0.0103s317-- create_table("gpg_keys", {:id=>:serial, :force=>:cascade})318 -> 0.0104s319-- create_table("gpg_signatures", {:id=>:serial, :force=>:cascade})320 -> 0.0154s321-- create_table("grafana_integrations", {:force=>:cascade})322 -> 0.0057s323-- create_table("group_custom_attributes", {:id=>:serial, :force=>:cascade})324 -> 0.0085s325-- create_table("historical_data", {:id=>:serial, :force=>:cascade})326 -> 0.0026s327-- create_table("identities", {:id=>:serial, :force=>:cascade})328 -> 0.0106s329-- create_table("import_export_uploads", {:id=>:serial, :force=>:cascade})330 -> 0.0082s331-- create_table("index_statuses", {:id=>:serial, :force=>:cascade})332 -> 0.0064s333-- create_table("insights", {:id=>:serial, :force=>:cascade})334 -> 0.0074s335-- create_table("internal_ids", {:force=>:cascade})336 -> 0.0120s337-- create_table("ip_restrictions", {:force=>:cascade})338 -> 0.0056s339-- create_table("issue_assignees", {:id=>false, :force=>:cascade})340 -> 0.0061s341-- create_table("issue_links", {:id=>:serial, :force=>:cascade})342 -> 0.0097s343-- create_table("issue_metrics", {:id=>:serial, :force=>:cascade})344 -> 0.0078s345-- create_table("issue_tracker_data", {:force=>:cascade})346 -> 0.0064s347-- create_table("issues", {:id=>:serial, :force=>:cascade})348 -> 0.0448s349-- create_table("issues_prometheus_alert_events", {:id=>false, :force=>:cascade})350 -> 0.0061s351-- create_table("jira_connect_installations", {:force=>:cascade})352 -> 0.0058s353-- create_table("jira_connect_subscriptions", {:force=>:cascade})354 -> 0.0097s355-- create_table("jira_tracker_data", {:force=>:cascade})356 -> 0.0060s357-- create_table("keys", {:id=>:serial, :force=>:cascade})358 -> 0.0110s359-- create_table("label_links", {:id=>:serial, :force=>:cascade})360 -> 0.0083s361-- create_table("label_priorities", {:id=>:serial, :force=>:cascade})362 -> 0.0103s363-- create_table("labels", {:id=>:serial, :force=>:cascade})364 -> 0.0155s365-- create_table("ldap_group_links", {:id=>:serial, :force=>:cascade})366 -> 0.0033s367-- create_table("lfs_file_locks", {:id=>:serial, :force=>:cascade})368 -> 0.0079s369-- create_table("lfs_objects", {:id=>:serial, :force=>:cascade})370 -> 0.0081s371-- create_table("lfs_objects_projects", {:id=>:serial, :force=>:cascade})372 -> 0.0073s373-- create_table("licenses", {:id=>:serial, :force=>:cascade})374 -> 0.0031s375-- create_table("list_user_preferences", {:force=>:cascade})376 -> 0.0108s377-- create_table("lists", {:id=>:serial, :force=>:cascade})378 -> 0.0173s379-- create_table("members", {:id=>:serial, :force=>:cascade})380 -> 0.0210s381-- create_table("merge_request_assignees", {:force=>:cascade})382 -> 0.0098s383-- create_table("merge_request_blocks", {:force=>:cascade})384 -> 0.0074s385-- create_table("merge_request_diff_commits", {:id=>false, :force=>:cascade})386 -> 0.0069s387-- create_table("merge_request_diff_files", {:id=>false, :force=>:cascade})388 -> 0.0051s389-- create_table("merge_request_diffs", {:id=>:serial, :force=>:cascade})390 -> 0.0087s391-- create_table("merge_request_metrics", {:id=>:serial, :force=>:cascade})392 -> 0.0211s393-- create_table("merge_requests", {:id=>:serial, :force=>:cascade})394 -> 0.0551s395-- create_table("merge_requests_closing_issues", {:id=>:serial, :force=>:cascade})396 -> 0.0074s397-- create_table("merge_trains", {:force=>:cascade})398 -> 0.0130s399-- create_table("milestone_releases", {:id=>false, :force=>:cascade})400 -> 0.0058s401-- create_table("milestones", {:id=>:serial, :force=>:cascade})402 -> 0.0200s403-- create_table("namespace_aggregation_schedules", {:primary_key=>"namespace_id", :id=>:integer, :default=>nil, :force=>:cascade})404 -> 0.0050s405-- create_table("namespace_root_storage_statistics", {:primary_key=>"namespace_id", :id=>:integer, :default=>nil, :force=>:cascade})406 -> 0.0086s407-- create_table("namespace_statistics", {:id=>:serial, :force=>:cascade})408 -> 0.0063s409-- create_table("namespaces", {:id=>:serial, :force=>:cascade})410 -> 0.0557s411-- create_table("note_diff_files", {:id=>:serial, :force=>:cascade})412 -> 0.0065s413-- create_table("notes", {:id=>:serial, :force=>:cascade})414 -> 0.0304s415-- create_table("notification_settings", {:id=>:serial, :force=>:cascade})416 -> 0.0136s417-- create_table("oauth_access_grants", {:id=>:serial, :force=>:cascade})418 -> 0.0065s419-- create_table("oauth_access_tokens", {:id=>:serial, :force=>:cascade})420 -> 0.0144s421-- create_table("oauth_applications", {:id=>:serial, :force=>:cascade})422 -> 0.0111s423-- create_table("oauth_openid_requests", {:id=>:serial, :force=>:cascade})424 -> 0.0063s425-- create_table("operations_feature_flag_scopes", {:force=>:cascade})426 -> 0.0077s427-- create_table("operations_feature_flags", {:force=>:cascade})428 -> 0.0062s429-- create_table("operations_feature_flags_clients", {:force=>:cascade})430 -> 0.0086s431-- create_table("packages_maven_metadata", {:force=>:cascade})432 -> 0.0063s433-- create_table("packages_package_files", {:force=>:cascade})434 -> 0.0069s435-- create_table("packages_package_metadata", {:force=>:cascade})436 -> 0.0063s437-- create_table("packages_package_tags", {:force=>:cascade})438 -> 0.0056s439-- create_table("packages_packages", {:force=>:cascade})440 -> 0.0093s441-- create_table("pages_domain_acme_orders", {:force=>:cascade})442 -> 0.0089s443-- create_table("pages_domains", {:id=>:serial, :force=>:cascade})444 -> 0.0231s445-- create_table("path_locks", {:id=>:serial, :force=>:cascade})446 -> 0.0115s447-- create_table("personal_access_tokens", {:id=>:serial, :force=>:cascade})448 -> 0.0109s449-- create_table("plans", {:id=>:serial, :force=>:cascade})450 -> 0.0073s451-- create_table("pool_repositories", {:force=>:cascade})452 -> 0.0109s453-- create_table("programming_languages", {:id=>:serial, :force=>:cascade})454 -> 0.0058s455-- create_table("project_alerting_settings", {:primary_key=>"project_id", :id=>:integer, :default=>nil, :force=>:cascade})456 -> 0.0024s457-- create_table("project_aliases", {:force=>:cascade})458 -> 0.0092s459-- create_table("project_authorizations", {:id=>false, :force=>:cascade})460 -> 0.0063s461-- create_table("project_auto_devops", {:id=>:serial, :force=>:cascade})462 -> 0.0056s463-- create_table("project_ci_cd_settings", {:id=>:serial, :force=>:cascade})464 -> 0.0065s465-- create_table("project_custom_attributes", {:id=>:serial, :force=>:cascade})466 -> 0.0084s467-- create_table("project_daily_statistics", {:force=>:cascade})468 -> 0.0053s469-- create_table("project_deploy_tokens", {:id=>:serial, :force=>:cascade})470 -> 0.0077s471-- create_table("project_error_tracking_settings", {:primary_key=>"project_id", :id=>:integer, :default=>nil, :force=>:cascade})472 -> 0.0029s473-- create_table("project_feature_usages", {:primary_key=>"project_id", :id=>:integer, :default=>nil, :force=>:cascade})474 -> 0.0099s475-- create_table("project_features", {:id=>:serial, :force=>:cascade})476 -> 0.0061s477-- create_table("project_group_links", {:id=>:serial, :force=>:cascade})478 -> 0.0077s479-- create_table("project_import_data", {:id=>:serial, :force=>:cascade})480 -> 0.0055s481-- create_table("project_incident_management_settings", {:primary_key=>"project_id", :id=>:serial, :force=>:cascade})482 -> 0.0038s483-- create_table("project_metrics_settings", {:primary_key=>"project_id", :id=>:integer, :default=>nil, :force=>:cascade})484 -> 0.0021s485-- create_table("project_mirror_data", {:id=>:serial, :force=>:cascade})486 -> 0.0178s487-- create_table("project_pages_metadata", {:id=>false, :force=>:cascade})488 -> 0.0062s489-- create_table("project_repositories", {:force=>:cascade})490 -> 0.0096s491-- create_table("project_repository_states", {:id=>:serial, :force=>:cascade})492 -> 0.0178s493-- create_table("project_statistics", {:id=>:serial, :force=>:cascade})494 -> 0.0108s495-- create_table("project_tracing_settings", {:force=>:cascade})496 -> 0.0059s497-- create_table("projects", {:id=>:serial, :force=>:cascade})498 -> 0.0805s499-- create_table("prometheus_alert_events", {:force=>:cascade})500 -> 0.0077s501-- create_table("prometheus_alerts", {:id=>:serial, :force=>:cascade})502 -> 0.0098s503-- create_table("prometheus_metrics", {:id=>:serial, :force=>:cascade})504 -> 0.0131s505-- create_table("protected_branch_merge_access_levels", {:id=>:serial, :force=>:cascade})506 -> 0.0100s507-- create_table("protected_branch_push_access_levels", {:id=>:serial, :force=>:cascade})508 -> 0.0099s509-- create_table("protected_branch_unprotect_access_levels", {:id=>:serial, :force=>:cascade})510 -> 0.0101s511-- create_table("protected_branches", {:id=>:serial, :force=>:cascade})512 -> 0.0083s513-- create_table("protected_environment_deploy_access_levels", {:id=>:serial, :force=>:cascade})514 -> 0.0099s515-- create_table("protected_environments", {:id=>:serial, :force=>:cascade})516 -> 0.0081s517-- create_table("protected_tag_create_access_levels", {:id=>:serial, :force=>:cascade})518 -> 0.0103s519-- create_table("protected_tags", {:id=>:serial, :force=>:cascade})520 -> 0.0089s521-- create_table("push_event_payloads", {:id=>false, :force=>:cascade})522 -> 0.0048s523-- create_table("push_rules", {:id=>:serial, :force=>:cascade})524 -> 0.0114s525-- create_table("redirect_routes", {:id=>:serial, :force=>:cascade})526 -> 0.0115s527-- create_table("release_links", {:force=>:cascade})528 -> 0.0081s529-- create_table("releases", {:id=>:serial, :force=>:cascade})530 -> 0.0085s531-- create_table("remote_mirrors", {:id=>:serial, :force=>:cascade})532 -> 0.0104s533-- create_table("repository_languages", {:id=>false, :force=>:cascade})534 -> 0.0040s535-- create_table("resource_label_events", {:force=>:cascade})536 -> 0.0157s537-- create_table("reviews", {:force=>:cascade})538 -> 0.0094s539-- create_table("routes", {:id=>:serial, :force=>:cascade})540 -> 0.0109s541-- create_table("saml_providers", {:id=>:serial, :force=>:cascade})542 -> 0.0065s543-- create_table("scim_oauth_access_tokens", {:id=>:serial, :force=>:cascade})544 -> 0.0060s545-- create_table("sent_notifications", {:id=>:serial, :force=>:cascade})546 -> 0.0059s547-- create_table("services", {:id=>:serial, :force=>:cascade})548 -> 0.0186s549-- create_table("shards", {:id=>:serial, :force=>:cascade})550 -> 0.0059s551-- create_table("slack_integrations", {:id=>:serial, :force=>:cascade})552 -> 0.0087s553-- create_table("smartcard_identities", {:force=>:cascade})554 -> 0.0086s555-- create_table("snippets", {:id=>:serial, :force=>:cascade})556 -> 0.0215s557-- create_table("software_license_policies", {:id=>:serial, :force=>:cascade})558 -> 0.0087s559-- create_table("software_licenses", {:id=>:serial, :force=>:cascade})560 -> 0.0080s561-- create_table("spam_logs", {:id=>:serial, :force=>:cascade})562 -> 0.0043s563-- create_table("subscriptions", {:id=>:serial, :force=>:cascade})564 -> 0.0090s565-- create_table("suggestions", {:force=>:cascade})566 -> 0.0079s567-- create_table("system_note_metadata", {:id=>:serial, :force=>:cascade})568 -> 0.0059s569-- create_table("taggings", {:id=>:serial, :force=>:cascade})570 -> 0.0133s571-- create_table("tags", {:id=>:serial, :force=>:cascade})572 -> 0.0082s573-- create_table("term_agreements", {:id=>:serial, :force=>:cascade})574 -> 0.0104s575-- create_table("timelogs", {:id=>:serial, :force=>:cascade})576 -> 0.0096s577-- create_table("todos", {:id=>:serial, :force=>:cascade})578 -> 0.0243s579-- create_table("trending_projects", {:id=>:serial, :force=>:cascade})580 -> 0.0048s581-- create_table("u2f_registrations", {:id=>:serial, :force=>:cascade})582 -> 0.0080s583-- create_table("uploads", {:id=>:serial, :force=>:cascade})584 -> 0.0128s585-- create_table("user_agent_details", {:id=>:serial, :force=>:cascade})586 -> 0.0067s587-- create_table("user_callouts", {:id=>:serial, :force=>:cascade})588 -> 0.0075s589-- create_table("user_custom_attributes", {:id=>:serial, :force=>:cascade})590 -> 0.0081s591-- create_table("user_interacted_projects", {:id=>false, :force=>:cascade})592 -> 0.0060s593-- create_table("user_preferences", {:id=>:serial, :force=>:cascade})594 -> 0.0082s595-- create_table("user_statuses", {:primary_key=>"user_id", :id=>:serial, :force=>:cascade})596 -> 0.0063s597-- create_table("user_synced_attributes_metadata", {:id=>:serial, :force=>:cascade})598 -> 0.0070s599-- create_table("users", {:id=>:serial, :force=>:cascade})600 -> 0.0768s601-- create_table("users_ops_dashboard_projects", {:force=>:cascade})602 -> 0.0074s603-- create_table("users_star_projects", {:id=>:serial, :force=>:cascade})604 -> 0.0072s605-- create_table("vulnerabilities", {:force=>:cascade})606 -> 0.0263s607-- create_table("vulnerability_feedback", {:id=>:serial, :force=>:cascade})608 -> 0.0171s609-- create_table("vulnerability_identifiers", {:force=>:cascade})610 -> 0.0063s611-- create_table("vulnerability_occurrence_identifiers", {:force=>:cascade})612 -> 0.0076s613-- create_table("vulnerability_occurrence_pipelines", {:force=>:cascade})614 -> 0.0073s615-- create_table("vulnerability_occurrences", {:force=>:cascade})616 -> 0.0154s617-- create_table("vulnerability_scanners", {:force=>:cascade})618 -> 0.0059s619-- create_table("web_hook_logs", {:id=>:serial, :force=>:cascade})620 -> 0.0084s621-- create_table("web_hooks", {:id=>:serial, :force=>:cascade})622 -> 0.0144s623-- add_foreign_key("alerts_service_data", "services", {:on_delete=>:cascade})624 -> 0.0030s625-- add_foreign_key("allowed_email_domains", "namespaces", {:column=>"group_id", :on_delete=>:cascade})626 -> 0.0028s627-- add_foreign_key("analytics_cycle_analytics_group_stages", "labels", {:column=>"end_event_label_id", :on_delete=>:cascade})628 -> 0.0024s629-- add_foreign_key("analytics_cycle_analytics_group_stages", "labels", {:column=>"start_event_label_id", :on_delete=>:cascade})630 -> 0.0017s631-- add_foreign_key("analytics_cycle_analytics_group_stages", "namespaces", {:column=>"group_id", :on_delete=>:cascade})632 -> 0.0017s633-- add_foreign_key("analytics_cycle_analytics_project_stages", "labels", {:column=>"end_event_label_id", :on_delete=>:cascade})634 -> 0.0018s635-- add_foreign_key("analytics_cycle_analytics_project_stages", "labels", {:column=>"start_event_label_id", :on_delete=>:cascade})636 -> 0.0015s637-- add_foreign_key("analytics_cycle_analytics_project_stages", "projects", {:on_delete=>:cascade})638 -> 0.0037s639-- add_foreign_key("analytics_language_trend_repository_languages", "programming_languages", {:on_delete=>:cascade})640 -> 0.0020s641-- add_foreign_key("analytics_language_trend_repository_languages", "projects", {:on_delete=>:cascade})642 -> 0.0024s643-- add_foreign_key("analytics_repository_file_commits", "analytics_repository_files", {:on_delete=>:cascade})644 -> 0.0019s645-- add_foreign_key("analytics_repository_file_commits", "projects", {:on_delete=>:cascade})646 -> 0.0020s647-- add_foreign_key("analytics_repository_file_edits", "analytics_repository_files", {:on_delete=>:cascade})648 -> 0.0016s649-- add_foreign_key("analytics_repository_file_edits", "projects", {:on_delete=>:cascade})650 -> 0.0021s651-- add_foreign_key("analytics_repository_files", "projects", {:on_delete=>:cascade})652 -> 0.0018s653-- add_foreign_key("application_settings", "namespaces", {:column=>"custom_project_templates_group_id", :on_delete=>:nullify})654 -> 0.0044s655-- add_foreign_key("application_settings", "projects", {:column=>"file_template_project_id", :name=>"fk_ec757bd087", :on_delete=>:nullify})656 -> 0.0031s657-- add_foreign_key("application_settings", "projects", {:column=>"instance_administration_project_id", :on_delete=>:nullify})658 -> 0.0030s659-- add_foreign_key("application_settings", "users", {:column=>"usage_stats_set_by_user_id", :name=>"fk_964370041d", :on_delete=>:nullify})660 -> 0.0041s661-- add_foreign_key("approval_merge_request_rule_sources", "approval_merge_request_rules", {:on_delete=>:cascade})662 -> 0.0022s663-- add_foreign_key("approval_merge_request_rule_sources", "approval_project_rules", {:on_delete=>:cascade})664 -> 0.0018s665-- add_foreign_key("approval_merge_request_rules", "merge_requests", {:on_delete=>:cascade})666 -> 0.0028s667-- add_foreign_key("approval_merge_request_rules_approved_approvers", "approval_merge_request_rules", {:on_delete=>:cascade})668 -> 0.0018s669-- add_foreign_key("approval_merge_request_rules_approved_approvers", "users", {:on_delete=>:cascade})670 -> 0.0020s671-- add_foreign_key("approval_merge_request_rules_groups", "approval_merge_request_rules", {:on_delete=>:cascade})672 -> 0.0016s673-- add_foreign_key("approval_merge_request_rules_groups", "namespaces", {:column=>"group_id", :on_delete=>:cascade})674 -> 0.0016s675-- add_foreign_key("approval_merge_request_rules_users", "approval_merge_request_rules", {:on_delete=>:cascade})676 -> 0.0017s677-- add_foreign_key("approval_merge_request_rules_users", "users", {:on_delete=>:cascade})678 -> 0.0018s679-- add_foreign_key("approval_project_rules", "projects", {:on_delete=>:cascade})680 -> 0.0019s681-- add_foreign_key("approval_project_rules_groups", "approval_project_rules", {:on_delete=>:cascade})682 -> 0.0015s683-- add_foreign_key("approval_project_rules_groups", "namespaces", {:column=>"group_id", :on_delete=>:cascade})684 -> 0.0016s685-- add_foreign_key("approval_project_rules_users", "approval_project_rules", {:on_delete=>:cascade})686 -> 0.0015s687-- add_foreign_key("approval_project_rules_users", "users", {:on_delete=>:cascade})688 -> 0.0019s689-- add_foreign_key("approvals", "merge_requests", {:name=>"fk_310d714958", :on_delete=>:cascade})690 -> 0.0018s691-- add_foreign_key("approver_groups", "namespaces", {:column=>"group_id", :on_delete=>:cascade})692 -> 0.0017s693-- add_foreign_key("badges", "namespaces", {:column=>"group_id", :on_delete=>:cascade})694 -> 0.0017s695-- add_foreign_key("badges", "projects", {:on_delete=>:cascade})696 -> 0.0018s697-- add_foreign_key("board_assignees", "boards", {:on_delete=>:cascade})698 -> 0.0017s699-- add_foreign_key("board_assignees", "users", {:column=>"assignee_id", :on_delete=>:cascade})700 -> 0.0017s701-- add_foreign_key("board_group_recent_visits", "boards", {:on_delete=>:cascade})702 -> 0.0018s703-- add_foreign_key("board_group_recent_visits", "namespaces", {:column=>"group_id", :on_delete=>:cascade})704 -> 0.0017s705-- add_foreign_key("board_group_recent_visits", "users", {:on_delete=>:cascade})706 -> 0.0022s707-- add_foreign_key("board_labels", "boards", {:on_delete=>:cascade})708 -> 0.0017s709-- add_foreign_key("board_labels", "labels", {:on_delete=>:cascade})710 -> 0.0015s711-- add_foreign_key("board_project_recent_visits", "boards", {:on_delete=>:cascade})712 -> 0.0015s713-- add_foreign_key("board_project_recent_visits", "projects", {:on_delete=>:cascade})714 -> 0.0018s715-- add_foreign_key("board_project_recent_visits", "users", {:on_delete=>:cascade})716 -> 0.0018s717-- add_foreign_key("boards", "namespaces", {:column=>"group_id", :name=>"fk_1e9a074a35", :on_delete=>:cascade})718 -> 0.0015s719-- add_foreign_key("boards", "projects", {:name=>"fk_f15266b5f9", :on_delete=>:cascade})720 -> 0.0018s721-- add_foreign_key("chat_teams", "namespaces", {:on_delete=>:cascade})722 -> 0.0017s723-- add_foreign_key("ci_build_needs", "ci_builds", {:column=>"build_id", :on_delete=>:cascade})724 -> 0.0029s725-- add_foreign_key("ci_build_trace_chunks", "ci_builds", {:column=>"build_id", :on_delete=>:cascade})726 -> 0.0017s727-- add_foreign_key("ci_build_trace_section_names", "projects", {:on_delete=>:cascade})728 -> 0.0021s729-- add_foreign_key("ci_build_trace_sections", "ci_build_trace_section_names", {:column=>"section_name_id", :name=>"fk_264e112c66", :on_delete=>:cascade})730 -> 0.0016s731-- add_foreign_key("ci_build_trace_sections", "ci_builds", {:column=>"build_id", :name=>"fk_4ebe41f502", :on_delete=>:cascade})732 -> 0.0016s733-- add_foreign_key("ci_build_trace_sections", "projects", {:on_delete=>:cascade})734 -> 0.0019s735-- add_foreign_key("ci_builds", "ci_pipelines", {:column=>"auto_canceled_by_id", :name=>"fk_a2141b1522", :on_delete=>:nullify})736 -> 0.0024s737-- add_foreign_key("ci_builds", "ci_pipelines", {:column=>"commit_id", :name=>"fk_d3130c9a7f", :on_delete=>:cascade})738 -> 0.0017s739-- add_foreign_key("ci_builds", "ci_pipelines", {:column=>"upstream_pipeline_id", :name=>"fk_87f4cefcda", :on_delete=>:cascade})740 -> 0.0017s741-- add_foreign_key("ci_builds", "ci_stages", {:column=>"stage_id", :name=>"fk_3a9eaa254d", :on_delete=>:cascade})742 -> 0.0019s743-- add_foreign_key("ci_builds", "projects", {:name=>"fk_befce0568a", :on_delete=>:cascade})744 -> 0.0025s745-- add_foreign_key("ci_builds_metadata", "ci_builds", {:column=>"build_id", :on_delete=>:cascade})746 -> 0.0019s747-- add_foreign_key("ci_builds_metadata", "projects", {:on_delete=>:cascade})748 -> 0.0021s749-- add_foreign_key("ci_builds_runner_session", "ci_builds", {:column=>"build_id", :on_delete=>:cascade})750 -> 0.0018s751-- add_foreign_key("ci_group_variables", "namespaces", {:column=>"group_id", :name=>"fk_33ae4d58d8", :on_delete=>:cascade})752 -> 0.0017s753-- add_foreign_key("ci_job_artifacts", "ci_builds", {:column=>"job_id", :on_delete=>:cascade})754 -> 0.0021s755-- add_foreign_key("ci_job_artifacts", "projects", {:on_delete=>:cascade})756 -> 0.0022s757-- add_foreign_key("ci_job_variables", "ci_builds", {:column=>"job_id", :on_delete=>:cascade})758 -> 0.0018s759-- add_foreign_key("ci_pipeline_chat_data", "chat_names", {:on_delete=>:cascade})760 -> 0.0017s761-- add_foreign_key("ci_pipeline_chat_data", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:cascade})762 -> 0.0015s763-- add_foreign_key("ci_pipeline_schedule_variables", "ci_pipeline_schedules", {:column=>"pipeline_schedule_id", :name=>"fk_41c35fda51", :on_delete=>:cascade})764 -> 0.0016s765-- add_foreign_key("ci_pipeline_schedules", "projects", {:name=>"fk_8ead60fcc4", :on_delete=>:cascade})766 -> 0.0020s767-- add_foreign_key("ci_pipeline_schedules", "users", {:column=>"owner_id", :name=>"fk_9ea99f58d2", :on_delete=>:nullify})768 -> 0.0018s769-- add_foreign_key("ci_pipeline_variables", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_f29c5f4380", :on_delete=>:cascade})770 -> 0.0015s771-- add_foreign_key("ci_pipelines", "ci_pipeline_schedules", {:column=>"pipeline_schedule_id", :name=>"fk_3d34ab2e06", :on_delete=>:nullify})772 -> 0.0014s773-- add_foreign_key("ci_pipelines", "ci_pipelines", {:column=>"auto_canceled_by_id", :name=>"fk_262d4c2d19", :on_delete=>:nullify})774 -> 0.0015s775-- add_foreign_key("ci_pipelines", "external_pull_requests", {:name=>"fk_190998ef09", :on_delete=>:nullify})776 -> 0.0017s777-- add_foreign_key("ci_pipelines", "merge_requests", {:name=>"fk_a23be95014", :on_delete=>:cascade})778 -> 0.0018s779-- add_foreign_key("ci_pipelines", "projects", {:name=>"fk_86635dbd80", :on_delete=>:cascade})780 -> 0.0022s781-- add_foreign_key("ci_runner_namespaces", "ci_runners", {:column=>"runner_id", :on_delete=>:cascade})782 -> 0.0018s783-- add_foreign_key("ci_runner_namespaces", "namespaces", {:on_delete=>:cascade})784 -> 0.0018s785-- add_foreign_key("ci_runner_projects", "projects", {:name=>"fk_4478a6f1e4", :on_delete=>:cascade})786 -> 0.0021s787-- add_foreign_key("ci_sources_pipelines", "ci_builds", {:column=>"source_job_id", :name=>"fk_be5624bf37", :on_delete=>:cascade})788 -> 0.0020s789-- add_foreign_key("ci_sources_pipelines", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_e1bad85861", :on_delete=>:cascade})790 -> 0.0015s791-- add_foreign_key("ci_sources_pipelines", "ci_pipelines", {:column=>"source_pipeline_id", :name=>"fk_d4e29af7d7", :on_delete=>:cascade})792 -> 0.0014s793-- add_foreign_key("ci_sources_pipelines", "projects", {:column=>"source_project_id", :name=>"fk_acd9737679", :on_delete=>:cascade})794 -> 0.0030s795-- add_foreign_key("ci_sources_pipelines", "projects", {:name=>"fk_1e53c97c0a", :on_delete=>:cascade})796 -> 0.0021s797-- add_foreign_key("ci_stages", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_fb57e6cc56", :on_delete=>:cascade})798 -> 0.0016s799-- add_foreign_key("ci_stages", "projects", {:name=>"fk_2360681d1d", :on_delete=>:cascade})800 -> 0.0021s801-- add_foreign_key("ci_trigger_requests", "ci_triggers", {:column=>"trigger_id", :name=>"fk_b8ec8b7245", :on_delete=>:cascade})802 -> 0.0016s803-- add_foreign_key("ci_triggers", "projects", {:name=>"fk_e3e63f966e", :on_delete=>:cascade})804 -> 0.0020s805-- add_foreign_key("ci_triggers", "users", {:column=>"owner_id", :name=>"fk_e8e10d1964", :on_delete=>:cascade})806 -> 0.0018s807-- add_foreign_key("ci_variables", "projects", {:name=>"fk_ada5eb64b3", :on_delete=>:cascade})808 -> 0.0020s809-- add_foreign_key("cluster_groups", "clusters", {:on_delete=>:cascade})810 -> 0.0018s811-- add_foreign_key("cluster_groups", "namespaces", {:column=>"group_id", :on_delete=>:cascade})812 -> 0.0017s813-- add_foreign_key("cluster_platforms_kubernetes", "clusters", {:on_delete=>:cascade})814 -> 0.0017s815-- add_foreign_key("cluster_projects", "clusters", {:on_delete=>:cascade})816 -> 0.0016s817-- add_foreign_key("cluster_projects", "projects", {:on_delete=>:cascade})818 -> 0.0019s819-- add_foreign_key("cluster_providers_gcp", "clusters", {:on_delete=>:cascade})820 -> 0.0017s821-- add_foreign_key("clusters", "projects", {:column=>"management_project_id", :name=>"fk_f05c5e5a42", :on_delete=>:nullify})822 -> 0.0019s823-- add_foreign_key("clusters", "users", {:on_delete=>:nullify})824 -> 0.0020s825-- add_foreign_key("clusters_applications_cert_managers", "clusters", {:on_delete=>:cascade})826 -> 0.0019s827-- add_foreign_key("clusters_applications_helm", "clusters", {:on_delete=>:cascade})828 -> 0.0016s829-- add_foreign_key("clusters_applications_ingress", "clusters", {:on_delete=>:cascade})830 -> 0.0017s831-- add_foreign_key("clusters_applications_jupyter", "clusters", {:on_delete=>:cascade})832 -> 0.0016s833-- add_foreign_key("clusters_applications_jupyter", "oauth_applications", {:on_delete=>:nullify})834 -> 0.0016s835-- add_foreign_key("clusters_applications_knative", "clusters", {:on_delete=>:cascade})836 -> 0.0015s837-- add_foreign_key("clusters_applications_prometheus", "clusters", {:name=>"fk_557e773639", :on_delete=>:cascade})838 -> 0.0015s839-- add_foreign_key("clusters_applications_runners", "ci_runners", {:column=>"runner_id", :name=>"fk_02de2ded36", :on_delete=>:nullify})840 -> 0.0015s841-- add_foreign_key("clusters_applications_runners", "clusters", {:on_delete=>:cascade})842 -> 0.0015s843-- add_foreign_key("clusters_kubernetes_namespaces", "cluster_projects", {:on_delete=>:nullify})844 -> 0.0019s845-- add_foreign_key("clusters_kubernetes_namespaces", "clusters", {:on_delete=>:cascade})846 -> 0.0015s847-- add_foreign_key("clusters_kubernetes_namespaces", "environments", {:on_delete=>:nullify})848 -> 0.0017s849-- add_foreign_key("clusters_kubernetes_namespaces", "projects", {:on_delete=>:nullify})850 -> 0.0020s851-- add_foreign_key("container_repositories", "projects")852 -> 0.0020s853-- add_foreign_key("dependency_proxy_blobs", "namespaces", {:column=>"group_id", :on_delete=>:cascade})854 -> 0.0017s855-- add_foreign_key("dependency_proxy_group_settings", "namespaces", {:column=>"group_id", :on_delete=>:cascade})856 -> 0.0017s857-- add_foreign_key("deploy_keys_projects", "projects", {:name=>"fk_58a901ca7e", :on_delete=>:cascade})858 -> 0.0020s859-- add_foreign_key("deployments", "clusters", {:name=>"fk_289bba3222", :on_delete=>:nullify})860 -> 0.0021s861-- add_foreign_key("deployments", "projects", {:name=>"fk_b9a3851b82", :on_delete=>:cascade})862 -> 0.0020s863-- add_foreign_key("design_management_designs", "issues", {:on_delete=>:cascade})864 -> 0.0025s865-- add_foreign_key("design_management_designs", "projects", {:on_delete=>:cascade})866 -> 0.0021s867-- add_foreign_key("design_management_designs_versions", "design_management_designs", {:column=>"design_id", :name=>"fk_03c671965c", :on_delete=>:cascade})868 -> 0.0015s869-- add_foreign_key("design_management_designs_versions", "design_management_versions", {:column=>"version_id", :name=>"fk_f4d25ba00c", :on_delete=>:cascade})870 -> 0.0016s871-- add_foreign_key("design_management_versions", "issues", {:on_delete=>:cascade})872 -> 0.0016s873-- add_foreign_key("design_management_versions", "users", {:name=>"fk_ee16b939e5", :on_delete=>:nullify})874 -> 0.0020s875-- add_foreign_key("draft_notes", "merge_requests", {:on_delete=>:cascade})876 -> 0.0019s877-- add_foreign_key("draft_notes", "users", {:column=>"author_id", :on_delete=>:cascade})878 -> 0.0018s879-- add_foreign_key("elasticsearch_indexed_namespaces", "namespaces", {:on_delete=>:cascade})880 -> 0.0018s881-- add_foreign_key("elasticsearch_indexed_projects", "projects", {:on_delete=>:cascade})882 -> 0.0048s883-- add_foreign_key("environments", "projects", {:name=>"fk_d1c8c1da6a", :on_delete=>:cascade})884 -> 0.0027s885-- add_foreign_key("epic_issues", "epics", {:on_delete=>:cascade})886 -> 0.0024s887-- add_foreign_key("epic_issues", "issues", {:on_delete=>:cascade})888 -> 0.0018s889-- add_foreign_key("epic_metrics", "epics", {:on_delete=>:cascade})890 -> 0.0016s891-- add_foreign_key("epics", "epics", {:column=>"parent_id", :name=>"fk_25b99c1be3", :on_delete=>:cascade})892 -> 0.0015s893-- add_foreign_key("epics", "milestones", {:on_delete=>:nullify})894 -> 0.0020s895-- add_foreign_key("epics", "namespaces", {:column=>"group_id", :name=>"fk_f081aa4489", :on_delete=>:cascade})896 -> 0.0017s897-- add_foreign_key("epics", "users", {:column=>"assignee_id", :name=>"fk_dccd3f98fc", :on_delete=>:nullify})898 -> 0.0019s899-- add_foreign_key("epics", "users", {:column=>"author_id", :name=>"fk_3654b61b03", :on_delete=>:cascade})900 -> 0.0018s901-- add_foreign_key("epics", "users", {:column=>"closed_by_id", :name=>"fk_aa5798e761", :on_delete=>:nullify})902 -> 0.0019s903-- add_foreign_key("events", "namespaces", {:column=>"group_id", :name=>"fk_61fbf6ca48", :on_delete=>:cascade})904 -> 0.0020s905-- add_foreign_key("events", "projects", {:on_delete=>:cascade})906 -> 0.0020s907-- add_foreign_key("events", "users", {:column=>"author_id", :name=>"fk_edfd187b6f", :on_delete=>:cascade})908 -> 0.0017s909-- add_foreign_key("external_pull_requests", "projects", {:on_delete=>:cascade})910 -> 0.0021s911-- add_foreign_key("fork_network_members", "fork_networks", {:on_delete=>:cascade})912 -> 0.0017s913-- add_foreign_key("fork_network_members", "projects", {:column=>"forked_from_project_id", :name=>"fk_b01280dae4", :on_delete=>:nullify})914 -> 0.0017s915-- add_foreign_key("fork_network_members", "projects", {:on_delete=>:cascade})916 -> 0.0018s917-- add_foreign_key("fork_networks", "projects", {:column=>"root_project_id", :name=>"fk_e7b436b2b5", :on_delete=>:nullify})918 -> 0.0016s919-- add_foreign_key("forked_project_links", "projects", {:column=>"forked_to_project_id", :name=>"fk_434510edb0", :on_delete=>:cascade})920 -> 0.0018s921-- add_foreign_key("geo_container_repository_updated_events", "container_repositories", {:name=>"fk_212c89c706", :on_delete=>:cascade})922 -> 0.0015s923-- add_foreign_key("geo_event_log", "geo_cache_invalidation_events", {:column=>"cache_invalidation_event_id", :name=>"fk_42c3b54bed", :on_delete=>:cascade})924 -> 0.0020s925-- add_foreign_key("geo_event_log", "geo_container_repository_updated_events", {:column=>"container_repository_updated_event_id", :name=>"fk_6ada82d42a", :on_delete=>:cascade})926 -> 0.0013s927-- add_foreign_key("geo_event_log", "geo_hashed_storage_migrated_events", {:column=>"hashed_storage_migrated_event_id", :name=>"fk_27548c6db3", :on_delete=>:cascade})928 -> 0.0018s929-- add_foreign_key("geo_event_log", "geo_job_artifact_deleted_events", {:column=>"job_artifact_deleted_event_id", :name=>"fk_176d3fbb5d", :on_delete=>:cascade})930 -> 0.0015s931-- add_foreign_key("geo_event_log", "geo_lfs_object_deleted_events", {:column=>"lfs_object_deleted_event_id", :name=>"fk_d5af95fcd9", :on_delete=>:cascade})932 -> 0.0014s933-- add_foreign_key("geo_event_log", "geo_repositories_changed_events", {:column=>"repositories_changed_event_id", :name=>"fk_4a99ebfd60", :on_delete=>:cascade})934 -> 0.0015s935-- add_foreign_key("geo_event_log", "geo_repository_created_events", {:column=>"repository_created_event_id", :name=>"fk_9b9afb1916", :on_delete=>:cascade})936 -> 0.0022s937-- add_foreign_key("geo_event_log", "geo_repository_deleted_events", {:column=>"repository_deleted_event_id", :name=>"fk_c4b1c1f66e", :on_delete=>:cascade})938 -> 0.0015s939-- add_foreign_key("geo_event_log", "geo_repository_renamed_events", {:column=>"repository_renamed_event_id", :name=>"fk_86c84214ec", :on_delete=>:cascade})940 -> 0.0016s941-- add_foreign_key("geo_event_log", "geo_repository_updated_events", {:column=>"repository_updated_event_id", :name=>"fk_78a6492f68", :on_delete=>:cascade})942 -> 0.0015s943-- add_foreign_key("geo_event_log", "geo_reset_checksum_events", {:column=>"reset_checksum_event_id", :name=>"fk_cff7185ad2", :on_delete=>:cascade})944 -> 0.0014s945-- add_foreign_key("geo_event_log", "geo_upload_deleted_events", {:column=>"upload_deleted_event_id", :name=>"fk_c1f241c70d", :on_delete=>:cascade})946 -> 0.0014s947-- add_foreign_key("geo_hashed_storage_attachments_events", "projects", {:on_delete=>:cascade})948 -> 0.0021s949-- add_foreign_key("geo_hashed_storage_migrated_events", "projects", {:on_delete=>:cascade})950 -> 0.0020s951-- add_foreign_key("geo_node_namespace_links", "geo_nodes", {:on_delete=>:cascade})952 -> 0.0019s953-- add_foreign_key("geo_node_namespace_links", "namespaces", {:on_delete=>:cascade})954 -> 0.0018s955-- add_foreign_key("geo_node_statuses", "geo_nodes", {:on_delete=>:cascade})956 -> 0.0018s957-- add_foreign_key("geo_repositories_changed_events", "geo_nodes", {:on_delete=>:cascade})958 -> 0.0014s959-- add_foreign_key("geo_repository_created_events", "projects", {:on_delete=>:cascade})960 -> 0.0019s961-- add_foreign_key("geo_repository_renamed_events", "projects", {:on_delete=>:cascade})962 -> 0.0021s963-- add_foreign_key("geo_repository_updated_events", "projects", {:on_delete=>:cascade})964 -> 0.0019s965-- add_foreign_key("geo_reset_checksum_events", "projects", {:on_delete=>:cascade})966 -> 0.0018s967-- add_foreign_key("gitlab_subscriptions", "namespaces", {:name=>"fk_e2595d00a1", :on_delete=>:cascade})968 -> 0.0019s969-- add_foreign_key("gitlab_subscriptions", "plans", {:column=>"hosted_plan_id", :name=>"fk_bd0c4019c3", :on_delete=>:cascade})970 -> 0.0015s971-- add_foreign_key("gpg_key_subkeys", "gpg_keys", {:on_delete=>:cascade})972 -> 0.0018s973-- add_foreign_key("gpg_keys", "users", {:on_delete=>:cascade})974 -> 0.0019s975-- add_foreign_key("gpg_signatures", "gpg_key_subkeys", {:on_delete=>:nullify})976 -> 0.0017s977-- add_foreign_key("gpg_signatures", "gpg_keys", {:on_delete=>:nullify})978 -> 0.0016s979-- add_foreign_key("gpg_signatures", "projects", {:on_delete=>:cascade})980 -> 0.0020s981-- add_foreign_key("grafana_integrations", "projects", {:on_delete=>:cascade})982 -> 0.0020s983-- add_foreign_key("group_custom_attributes", "namespaces", {:column=>"group_id", :on_delete=>:cascade})984 -> 0.0018s985-- add_foreign_key("identities", "saml_providers", {:name=>"fk_aade90f0fc", :on_delete=>:cascade})986 -> 0.0017s987-- add_foreign_key("import_export_uploads", "projects", {:on_delete=>:cascade})988 -> 0.0023s989-- add_foreign_key("index_statuses", "projects", {:name=>"fk_74b2492545", :on_delete=>:cascade})990 -> 0.0021s991-- add_foreign_key("insights", "namespaces", {:on_delete=>:cascade})992 -> 0.0019s993-- add_foreign_key("insights", "projects", {:on_delete=>:cascade})994 -> 0.0019s995-- add_foreign_key("internal_ids", "namespaces", {:name=>"fk_162941d509", :on_delete=>:cascade})996 -> 0.0019s997-- add_foreign_key("internal_ids", "projects", {:on_delete=>:cascade})998 -> 0.0020s999-- add_foreign_key("ip_restrictions", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1000 -> 0.0017s1001-- add_foreign_key("issue_assignees", "issues", {:name=>"fk_b7d881734a", :on_delete=>:cascade})1002 -> 0.0016s1003-- add_foreign_key("issue_assignees", "users", {:name=>"fk_5e0c8d9154", :on_delete=>:cascade})1004 -> 0.0019s1005-- add_foreign_key("issue_links", "issues", {:column=>"source_id", :name=>"fk_c900194ff2", :on_delete=>:cascade})1006 -> 0.0017s1007-- add_foreign_key("issue_links", "issues", {:column=>"target_id", :name=>"fk_e71bb44f1f", :on_delete=>:cascade})1008 -> 0.0014s1009-- add_foreign_key("issue_metrics", "issues", {:on_delete=>:cascade})1010 -> 0.0019s1011-- add_foreign_key("issue_tracker_data", "services", {:on_delete=>:cascade})1012 -> 0.0016s1013-- add_foreign_key("issues", "issues", {:column=>"duplicated_to_id", :name=>"fk_9c4516d665", :on_delete=>:nullify})1014 -> 0.0015s1015-- add_foreign_key("issues", "issues", {:column=>"moved_to_id", :name=>"fk_a194299be1", :on_delete=>:nullify})1016 -> 0.0014s1017-- add_foreign_key("issues", "milestones", {:name=>"fk_96b1dd429c", :on_delete=>:nullify})1018 -> 0.0016s1019-- add_foreign_key("issues", "projects", {:name=>"fk_899c8f3231", :on_delete=>:cascade})1020 -> 0.0022s1021-- add_foreign_key("issues", "users", {:column=>"author_id", :name=>"fk_05f1e72feb", :on_delete=>:nullify})1022 -> 0.0020s1023-- add_foreign_key("issues", "users", {:column=>"closed_by_id", :name=>"fk_c63cbf6c25", :on_delete=>:nullify})1024 -> 0.0019s1025-- add_foreign_key("issues", "users", {:column=>"updated_by_id", :name=>"fk_ffed080f01", :on_delete=>:nullify})1026 -> 0.0019s1027-- add_foreign_key("issues_prometheus_alert_events", "issues", {:on_delete=>:cascade})1028 -> 0.0017s1029-- add_foreign_key("issues_prometheus_alert_events", "prometheus_alert_events", {:on_delete=>:cascade})1030 -> 0.0017s1031-- add_foreign_key("jira_connect_subscriptions", "jira_connect_installations", {:on_delete=>:cascade})1032 -> 0.0017s1033-- add_foreign_key("jira_connect_subscriptions", "namespaces", {:on_delete=>:cascade})1034 -> 0.0017s1035-- add_foreign_key("jira_tracker_data", "services", {:on_delete=>:cascade})1036 -> 0.0016s1037-- add_foreign_key("label_links", "labels", {:name=>"fk_d97dd08678", :on_delete=>:cascade})1038 -> 0.0016s1039-- add_foreign_key("label_priorities", "labels", {:on_delete=>:cascade})1040 -> 0.0017s1041-- add_foreign_key("label_priorities", "projects", {:on_delete=>:cascade})1042 -> 0.0020s1043-- add_foreign_key("labels", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1044 -> 0.0018s1045-- add_foreign_key("labels", "projects", {:name=>"fk_7de4989a69", :on_delete=>:cascade})1046 -> 0.0020s1047-- add_foreign_key("lfs_file_locks", "projects", {:on_delete=>:cascade})1048 -> 0.0022s1049-- add_foreign_key("lfs_file_locks", "users", {:on_delete=>:cascade})1050 -> 0.0019s1051-- add_foreign_key("list_user_preferences", "lists", {:on_delete=>:cascade})1052 -> 0.0018s1053-- add_foreign_key("list_user_preferences", "users", {:on_delete=>:cascade})1054 -> 0.0020s1055-- add_foreign_key("lists", "boards", {:name=>"fk_0d3f677137", :on_delete=>:cascade})1056 -> 0.0016s1057-- add_foreign_key("lists", "labels", {:name=>"fk_7a5553d60f", :on_delete=>:cascade})1058 -> 0.0015s1059-- add_foreign_key("lists", "milestones", {:on_delete=>:cascade})1060 -> 0.0015s1061-- add_foreign_key("lists", "users", {:name=>"fk_d6cf4279f7", :on_delete=>:cascade})1062 -> 0.0019s1063-- add_foreign_key("members", "users", {:name=>"fk_2e88fb7ce9", :on_delete=>:cascade})1064 -> 0.0024s1065-- add_foreign_key("merge_request_assignees", "merge_requests", {:on_delete=>:cascade})1066 -> 0.0019s1067-- add_foreign_key("merge_request_assignees", "users", {:on_delete=>:cascade})1068 -> 0.0019s1069-- add_foreign_key("merge_request_blocks", "merge_requests", {:column=>"blocked_merge_request_id", :on_delete=>:cascade})1070 -> 0.0017s1071-- add_foreign_key("merge_request_blocks", "merge_requests", {:column=>"blocking_merge_request_id", :on_delete=>:cascade})1072 -> 0.0016s1073-- add_foreign_key("merge_request_diff_commits", "merge_request_diffs", {:on_delete=>:cascade})1074 -> 0.0017s1075-- add_foreign_key("merge_request_diff_files", "merge_request_diffs", {:on_delete=>:cascade})1076 -> 0.0016s1077-- add_foreign_key("merge_request_diffs", "merge_requests", {:name=>"fk_8483f3258f", :on_delete=>:cascade})1078 -> 0.0017s1079-- add_foreign_key("merge_request_metrics", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:cascade})1080 -> 0.0023s1081-- add_foreign_key("merge_request_metrics", "merge_requests", {:on_delete=>:cascade})1082 -> 0.0018s1083-- add_foreign_key("merge_request_metrics", "users", {:column=>"latest_closed_by_id", :name=>"fk_ae440388cc", :on_delete=>:nullify})1084 -> 0.0030s1085-- add_foreign_key("merge_request_metrics", "users", {:column=>"merged_by_id", :name=>"fk_7f28d925f3", :on_delete=>:nullify})1086 -> 0.0023s1087-- add_foreign_key("merge_requests", "ci_pipelines", {:column=>"head_pipeline_id", :name=>"fk_fd82eae0b9", :on_delete=>:nullify})1088 -> 0.0021s1089-- add_foreign_key("merge_requests", "merge_request_diffs", {:column=>"latest_merge_request_diff_id", :name=>"fk_06067f5644", :on_delete=>:nullify})1090 -> 0.0018s1091-- add_foreign_key("merge_requests", "milestones", {:name=>"fk_6a5165a692", :on_delete=>:nullify})1092 -> 0.0019s1093-- add_foreign_key("merge_requests", "projects", {:column=>"source_project_id", :name=>"fk_3308fe130c", :on_delete=>:nullify})1094 -> 0.0024s1095-- add_foreign_key("merge_requests", "projects", {:column=>"target_project_id", :name=>"fk_a6963e8447", :on_delete=>:cascade})1096 -> 0.0024s1097-- add_foreign_key("merge_requests", "users", {:column=>"assignee_id", :name=>"fk_6149611a04", :on_delete=>:nullify})1098 -> 0.0022s1099-- add_foreign_key("merge_requests", "users", {:column=>"author_id", :name=>"fk_e719a85f8a", :on_delete=>:nullify})1100 -> 0.0023s1101-- add_foreign_key("merge_requests", "users", {:column=>"merge_user_id", :name=>"fk_ad525e1f87", :on_delete=>:nullify})1102 -> 0.0022s1103-- add_foreign_key("merge_requests", "users", {:column=>"updated_by_id", :name=>"fk_641731faff", :on_delete=>:nullify})1104 -> 0.0021s1105-- add_foreign_key("merge_requests_closing_issues", "issues", {:on_delete=>:cascade})1106 -> 0.0019s1107-- add_foreign_key("merge_requests_closing_issues", "merge_requests", {:on_delete=>:cascade})1108 -> 0.0018s1109-- add_foreign_key("merge_trains", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:nullify})1110 -> 0.0019s1111-- add_foreign_key("merge_trains", "merge_requests", {:on_delete=>:cascade})1112 -> 0.0018s1113-- add_foreign_key("merge_trains", "projects", {:column=>"target_project_id", :on_delete=>:cascade})1114 -> 0.0020s1115-- add_foreign_key("merge_trains", "users", {:on_delete=>:cascade})1116 -> 0.0022s1117-- add_foreign_key("milestone_releases", "milestones", {:on_delete=>:cascade})1118 -> 0.0017s1119-- add_foreign_key("milestone_releases", "releases", {:on_delete=>:cascade})1120 -> 0.0016s1121-- add_foreign_key("milestones", "namespaces", {:column=>"group_id", :name=>"fk_95650a40d4", :on_delete=>:cascade})1122 -> 0.0017s1123-- add_foreign_key("milestones", "projects", {:name=>"fk_9bd0a0c791", :on_delete=>:cascade})1124 -> 0.0022s1125-- add_foreign_key("namespace_aggregation_schedules", "namespaces", {:on_delete=>:cascade})1126 -> 0.0019s1127-- add_foreign_key("namespace_root_storage_statistics", "namespaces", {:on_delete=>:cascade})1128 -> 0.0019s1129-- add_foreign_key("namespace_statistics", "namespaces", {:on_delete=>:cascade})1130 -> 0.0018s1131-- add_foreign_key("namespaces", "namespaces", {:column=>"custom_project_templates_group_id", :name=>"fk_e7a0b20a6b", :on_delete=>:nullify})1132 -> 0.0017s1133-- add_foreign_key("namespaces", "plans", {:name=>"fk_fdd12e5b80", :on_delete=>:nullify})1134 -> 0.0018s1135-- add_foreign_key("namespaces", "projects", {:column=>"file_template_project_id", :name=>"fk_319256d87a", :on_delete=>:nullify})1136 -> 0.0026s1137-- add_foreign_key("note_diff_files", "notes", {:column=>"diff_note_id", :on_delete=>:cascade})1138 -> 0.0022s1139-- add_foreign_key("notes", "projects", {:name=>"fk_99e097b079", :on_delete=>:cascade})1140 -> 0.0024s1141-- add_foreign_key("notes", "reviews", {:name=>"fk_2e82291620", :on_delete=>:nullify})1142 -> 0.0020s1143-- add_foreign_key("notification_settings", "users", {:name=>"fk_0c95e91db7", :on_delete=>:cascade})1144 -> 0.0025s1145-- add_foreign_key("oauth_openid_requests", "oauth_access_grants", {:column=>"access_grant_id", :name=>"fk_oauth_openid_requests_oauth_access_grants_access_grant_id"})1146 -> 0.0016s1147-- add_foreign_key("operations_feature_flag_scopes", "operations_feature_flags", {:column=>"feature_flag_id", :on_delete=>:cascade})1148 -> 0.0016s1149-- add_foreign_key("operations_feature_flags", "projects", {:on_delete=>:cascade})1150 -> 0.0023s1151-- add_foreign_key("operations_feature_flags_clients", "projects", {:on_delete=>:cascade})1152 -> 0.0023s1153-- add_foreign_key("packages_maven_metadata", "packages_packages", {:column=>"package_id", :name=>"fk_be88aed360", :on_delete=>:cascade})1154 -> 0.0016s1155-- add_foreign_key("packages_package_files", "packages_packages", {:column=>"package_id", :name=>"fk_86f0f182f8", :on_delete=>:cascade})1156 -> 0.0014s1157-- add_foreign_key("packages_package_metadata", "packages_packages", {:column=>"package_id", :on_delete=>:cascade})1158 -> 0.0014s1159-- add_foreign_key("packages_package_tags", "packages_packages", {:column=>"package_id", :on_delete=>:cascade})1160 -> 0.0020s1161-- add_foreign_key("packages_packages", "projects", {:on_delete=>:cascade})1162 -> 0.0023s1163-- add_foreign_key("pages_domain_acme_orders", "pages_domains", {:on_delete=>:cascade})1164 -> 0.0021s1165-- add_foreign_key("pages_domains", "projects", {:name=>"fk_ea2f6dfc6f", :on_delete=>:cascade})1166 -> 0.0022s1167-- add_foreign_key("path_locks", "projects", {:name=>"fk_5265c98f24", :on_delete=>:cascade})1168 -> 0.0024s1169-- add_foreign_key("path_locks", "users")1170 -> 0.0022s1171-- add_foreign_key("personal_access_tokens", "users")1172 -> 0.0068s1173-- add_foreign_key("pool_repositories", "projects", {:column=>"source_project_id", :on_delete=>:nullify})1174 -> 0.0041s1175-- add_foreign_key("pool_repositories", "shards", {:on_delete=>:restrict})1176 -> 0.0028s1177-- add_foreign_key("project_alerting_settings", "projects", {:on_delete=>:cascade})1178 -> 0.0036s1179-- add_foreign_key("project_aliases", "projects", {:on_delete=>:cascade})1180 -> 0.0036s1181-- add_foreign_key("project_authorizations", "projects", {:on_delete=>:cascade})1182 -> 0.0033s1183-- add_foreign_key("project_authorizations", "users", {:on_delete=>:cascade})1184 -> 0.0033s1185-- add_foreign_key("project_auto_devops", "projects", {:on_delete=>:cascade})1186 -> 0.0035s1187-- add_foreign_key("project_ci_cd_settings", "projects", {:name=>"fk_24c15d2f2e", :on_delete=>:cascade})1188 -> 0.0034s1189-- add_foreign_key("project_custom_attributes", "projects", {:on_delete=>:cascade})1190 -> 0.0033s1191-- add_foreign_key("project_daily_statistics", "projects", {:on_delete=>:cascade})1192 -> 0.0031s1193-- add_foreign_key("project_deploy_tokens", "deploy_tokens", {:on_delete=>:cascade})1194 -> 0.0029s1195-- add_foreign_key("project_deploy_tokens", "projects", {:on_delete=>:cascade})1196 -> 0.0030s1197-- add_foreign_key("project_error_tracking_settings", "projects", {:on_delete=>:cascade})1198 -> 0.0036s1199-- add_foreign_key("project_feature_usages", "projects", {:on_delete=>:cascade})1200 -> 0.0032s1201-- add_foreign_key("project_features", "projects", {:name=>"fk_18513d9b92", :on_delete=>:cascade})1202 -> 0.0037s1203-- add_foreign_key("project_group_links", "projects", {:name=>"fk_daa8cee94c", :on_delete=>:cascade})1204 -> 0.0033s1205-- add_foreign_key("project_import_data", "projects", {:name=>"fk_ffb9ee3a10", :on_delete=>:cascade})1206 -> 0.0033s1207-- add_foreign_key("project_incident_management_settings", "projects", {:on_delete=>:cascade})1208 -> 0.0031s1209-- add_foreign_key("project_metrics_settings", "projects", {:on_delete=>:cascade})1210 -> 0.0034s1211-- add_foreign_key("project_mirror_data", "projects", {:name=>"fk_d1aad367d7", :on_delete=>:cascade})1212 -> 0.0039s1213-- add_foreign_key("project_pages_metadata", "projects", {:on_delete=>:cascade})1214 -> 0.0038s1215-- add_foreign_key("project_repositories", "projects", {:on_delete=>:cascade})1216 -> 0.0045s1217-- add_foreign_key("project_repositories", "shards", {:on_delete=>:restrict})1218 -> 0.0021s1219-- add_foreign_key("project_repository_states", "projects", {:on_delete=>:cascade})1220 -> 0.0038s1221-- add_foreign_key("project_statistics", "projects", {:on_delete=>:cascade})1222 -> 0.0035s1223-- add_foreign_key("project_tracing_settings", "projects", {:on_delete=>:cascade})1224 -> 0.0033s1225-- add_foreign_key("projects", "pool_repositories", {:name=>"fk_6e5c14658a", :on_delete=>:nullify})1226 -> 0.0033s1227-- add_foreign_key("prometheus_alert_events", "projects", {:on_delete=>:cascade})1228 -> 0.0029s1229-- add_foreign_key("prometheus_alert_events", "prometheus_alerts", {:on_delete=>:cascade})1230 -> 0.0030s1231-- add_foreign_key("prometheus_alerts", "environments", {:on_delete=>:cascade})1232 -> 0.0022s1233-- add_foreign_key("prometheus_alerts", "projects", {:on_delete=>:cascade})1234 -> 0.0043s1235-- add_foreign_key("prometheus_alerts", "prometheus_metrics", {:on_delete=>:cascade})1236 -> 0.0025s1237-- add_foreign_key("prometheus_metrics", "projects", {:on_delete=>:cascade})1238 -> 0.0033s1239-- add_foreign_key("protected_branch_merge_access_levels", "namespaces", {:column=>"group_id", :name=>"fk_98f3d044fe", :on_delete=>:cascade})1240 -> 0.0030s1241-- add_foreign_key("protected_branch_merge_access_levels", "protected_branches", {:name=>"fk_8a3072ccb3", :on_delete=>:cascade})1242 -> 0.0023s1243-- add_foreign_key("protected_branch_merge_access_levels", "users")1244 -> 0.0028s1245-- add_foreign_key("protected_branch_push_access_levels", "namespaces", {:column=>"group_id", :name=>"fk_7111b68cdb", :on_delete=>:cascade})1246 -> 0.0024s1247-- add_foreign_key("protected_branch_push_access_levels", "protected_branches", {:name=>"fk_9ffc86a3d9", :on_delete=>:cascade})1248 -> 0.0019s1249-- add_foreign_key("protected_branch_push_access_levels", "users")1250 -> 0.0026s1251-- add_foreign_key("protected_branch_unprotect_access_levels", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1252 -> 0.0025s1253-- add_foreign_key("protected_branch_unprotect_access_levels", "protected_branches", {:on_delete=>:cascade})1254 -> 0.0018s1255-- add_foreign_key("protected_branch_unprotect_access_levels", "users", {:on_delete=>:cascade})1256 -> 0.0025s1257-- add_foreign_key("protected_branches", "projects", {:name=>"fk_7a9c6d93e7", :on_delete=>:cascade})1258 -> 0.0029s1259-- add_foreign_key("protected_environment_deploy_access_levels", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1260 -> 0.0026s1261-- add_foreign_key("protected_environment_deploy_access_levels", "protected_environments", {:on_delete=>:cascade})1262 -> 0.0022s1263-- add_foreign_key("protected_environment_deploy_access_levels", "users", {:on_delete=>:cascade})1264 -> 0.0027s1265-- add_foreign_key("protected_environments", "projects", {:on_delete=>:cascade})1266 -> 0.0029s1267-- add_foreign_key("protected_tag_create_access_levels", "namespaces", {:column=>"group_id", :name=>"fk_b4eb82fe3c", :on_delete=>:cascade})1268 -> 0.0026s1269-- add_foreign_key("protected_tag_create_access_levels", "protected_tags", {:name=>"fk_f7dfda8c51", :on_delete=>:cascade})1270 -> 0.0022s1271-- add_foreign_key("protected_tag_create_access_levels", "users")1272 -> 0.0026s1273-- add_foreign_key("protected_tags", "projects", {:name=>"fk_8e4af87648", :on_delete=>:cascade})1274 -> 0.0031s1275-- add_foreign_key("push_event_payloads", "events", {:name=>"fk_36c74129da", :on_delete=>:cascade})1276 -> 0.0020s1277-- add_foreign_key("push_rules", "projects", {:name=>"fk_83b29894de", :on_delete=>:cascade})1278 -> 0.0035s1279-- add_foreign_key("release_links", "releases", {:on_delete=>:cascade})1280 -> 0.0021s1281-- add_foreign_key("releases", "projects", {:name=>"fk_47fe2a0596", :on_delete=>:cascade})1282 -> 0.0031s1283-- add_foreign_key("releases", "users", {:column=>"author_id", :name=>"fk_8e4456f90f", :on_delete=>:nullify})1284 -> 0.0025s1285-- add_foreign_key("remote_mirrors", "projects", {:name=>"fk_43a9aa4ca8", :on_delete=>:cascade})1286 -> 0.0031s1287-- add_foreign_key("repository_languages", "projects", {:on_delete=>:cascade})1288 -> 0.0029s1289-- add_foreign_key("resource_label_events", "epics", {:on_delete=>:cascade})1290 -> 0.0025s1291-- add_foreign_key("resource_label_events", "issues", {:on_delete=>:cascade})1292 -> 0.0024s1293-- add_foreign_key("resource_label_events", "labels", {:on_delete=>:nullify})1294 -> 0.0021s1295-- add_foreign_key("resource_label_events", "merge_requests", {:on_delete=>:cascade})1296 -> 0.0024s1297-- add_foreign_key("resource_label_events", "users", {:on_delete=>:nullify})1298 -> 0.0025s1299-- add_foreign_key("reviews", "merge_requests", {:on_delete=>:cascade})1300 -> 0.0024s1301-- add_foreign_key("reviews", "projects", {:on_delete=>:cascade})1302 -> 0.0028s1303-- add_foreign_key("reviews", "users", {:column=>"author_id", :on_delete=>:nullify})1304 -> 0.0030s1305-- add_foreign_key("saml_providers", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1306 -> 0.0023s1307-- add_foreign_key("scim_oauth_access_tokens", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1308 -> 0.0020s1309-- add_foreign_key("services", "projects", {:name=>"fk_71cce407f9", :on_delete=>:cascade})1310 -> 0.0032s1311-- add_foreign_key("slack_integrations", "services", {:on_delete=>:cascade})1312 -> 0.0028s1313-- add_foreign_key("smartcard_identities", "users", {:on_delete=>:cascade})1314 -> 0.0029s1315-- add_foreign_key("snippets", "projects", {:name=>"fk_be41fd4bb7", :on_delete=>:cascade})1316 -> 0.0044s1317-- add_foreign_key("software_license_policies", "projects", {:on_delete=>:cascade})1318 -> 0.0029s1319-- add_foreign_key("software_license_policies", "software_licenses", {:on_delete=>:cascade})1320 -> 0.0025s1321-- add_foreign_key("subscriptions", "projects", {:on_delete=>:cascade})1322 -> 0.0042s1323-- add_foreign_key("suggestions", "notes", {:on_delete=>:cascade})1324 -> 0.0025s1325-- add_foreign_key("system_note_metadata", "notes", {:name=>"fk_d83a918cb1", :on_delete=>:cascade})1326 -> 0.0028s1327-- add_foreign_key("term_agreements", "application_setting_terms", {:column=>"term_id"})1328 -> 0.0028s1329-- add_foreign_key("term_agreements", "users", {:on_delete=>:cascade})1330 -> 0.0027s1331-- add_foreign_key("timelogs", "issues", {:name=>"fk_timelogs_issues_issue_id", :on_delete=>:cascade})1332 -> 0.0023s1333-- add_foreign_key("timelogs", "merge_requests", {:name=>"fk_timelogs_merge_requests_merge_request_id", :on_delete=>:cascade})1334 -> 0.0025s1335-- add_foreign_key("todos", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1336 -> 0.0027s1337-- add_foreign_key("todos", "notes", {:name=>"fk_91d1f47b13", :on_delete=>:cascade})1338 -> 0.0026s1339-- add_foreign_key("todos", "projects", {:name=>"fk_45054f9c45", :on_delete=>:cascade})1340 -> 0.0030s1341-- add_foreign_key("todos", "users", {:column=>"author_id", :name=>"fk_ccf0373936", :on_delete=>:cascade})1342 -> 0.0024s1343-- add_foreign_key("todos", "users", {:name=>"fk_d94154aa95", :on_delete=>:cascade})1344 -> 0.0025s1345-- add_foreign_key("trending_projects", "projects", {:on_delete=>:cascade})1346 -> 0.0031s1347-- add_foreign_key("u2f_registrations", "users")1348 -> 0.0029s1349-- add_foreign_key("user_callouts", "users", {:on_delete=>:cascade})1350 -> 0.0025s1351-- add_foreign_key("user_custom_attributes", "users", {:on_delete=>:cascade})1352 -> 0.0032s1353-- add_foreign_key("user_interacted_projects", "projects", {:name=>"fk_722ceba4f7", :on_delete=>:cascade})1354 -> 0.0032s1355-- add_foreign_key("user_interacted_projects", "users", {:name=>"fk_0894651f08", :on_delete=>:cascade})1356 -> 0.0037s1357-- add_foreign_key("user_preferences", "users", {:on_delete=>:cascade})1358 -> 0.0029s1359-- add_foreign_key("user_statuses", "users", {:on_delete=>:cascade})1360 -> 0.0026s1361-- add_foreign_key("user_synced_attributes_metadata", "users", {:on_delete=>:cascade})1362 -> 0.0026s1363-- add_foreign_key("users", "application_setting_terms", {:column=>"accepted_term_id", :name=>"fk_789cd90b35", :on_delete=>:cascade})1364 -> 0.0038s1365-- add_foreign_key("users", "namespaces", {:column=>"managing_group_id", :name=>"fk_a4b8fefe3e", :on_delete=>:nullify})1366 -> 0.0036s1367-- add_foreign_key("users_ops_dashboard_projects", "projects", {:on_delete=>:cascade})1368 -> 0.0034s1369-- add_foreign_key("users_ops_dashboard_projects", "users", {:on_delete=>:cascade})1370 -> 0.0028s1371-- add_foreign_key("users_star_projects", "projects", {:name=>"fk_22cd27ddfc", :on_delete=>:cascade})1372 -> 0.0038s1373-- add_foreign_key("vulnerabilities", "epics", {:name=>"fk_1d37cddf91", :on_delete=>:nullify})1374 -> 0.0032s1375-- add_foreign_key("vulnerabilities", "milestones", {:column=>"due_date_sourcing_milestone_id", :name=>"fk_7c5bb22a22", :on_delete=>:nullify})1376 -> 0.0022s1377-- add_foreign_key("vulnerabilities", "milestones", {:column=>"start_date_sourcing_milestone_id", :name=>"fk_88b4d546ef", :on_delete=>:nullify})1378 -> 0.0019s1379-- add_foreign_key("vulnerabilities", "milestones", {:name=>"fk_131d289c65", :on_delete=>:nullify})1380 -> 0.0024s1381-- add_foreign_key("vulnerabilities", "projects", {:name=>"fk_efb96ab1e2", :on_delete=>:cascade})1382 -> 0.0036s1383-- add_foreign_key("vulnerabilities", "users", {:column=>"author_id", :name=>"fk_b1de915a15", :on_delete=>:nullify})1384 -> 0.0031s1385-- add_foreign_key("vulnerabilities", "users", {:column=>"closed_by_id", :name=>"fk_cf5c60acbf", :on_delete=>:nullify})1386 -> 0.0025s1387-- add_foreign_key("vulnerabilities", "users", {:column=>"last_edited_by_id", :name=>"fk_1302949740", :on_delete=>:nullify})1388 -> 0.0025s1389-- add_foreign_key("vulnerabilities", "users", {:column=>"updated_by_id", :name=>"fk_7ac31eacb9", :on_delete=>:nullify})1390 -> 0.0025s1391-- add_foreign_key("vulnerability_feedback", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:nullify})1392 -> 0.0026s1393-- add_foreign_key("vulnerability_feedback", "issues", {:on_delete=>:nullify})1394 -> 0.0026s1395-- add_foreign_key("vulnerability_feedback", "merge_requests", {:name=>"fk_563ff1912e", :on_delete=>:nullify})1396 -> 0.0024s1397-- add_foreign_key("vulnerability_feedback", "projects", {:on_delete=>:cascade})1398 -> 0.0030s1399-- add_foreign_key("vulnerability_feedback", "users", {:column=>"author_id", :on_delete=>:cascade})1400 -> 0.0031s1401-- add_foreign_key("vulnerability_feedback", "users", {:column=>"comment_author_id", :name=>"fk_94f7c8a81e", :on_delete=>:nullify})1402 -> 0.0028s1403-- add_foreign_key("vulnerability_identifiers", "projects", {:on_delete=>:cascade})1404 -> 0.0033s1405-- add_foreign_key("vulnerability_occurrence_identifiers", "vulnerability_identifiers", {:column=>"identifier_id", :on_delete=>:cascade})1406 -> 0.0019s1407-- add_foreign_key("vulnerability_occurrence_identifiers", "vulnerability_occurrences", {:column=>"occurrence_id", :on_delete=>:cascade})1408 -> 0.0024s1409-- add_foreign_key("vulnerability_occurrence_pipelines", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:cascade})1410 -> 0.0025s1411-- add_foreign_key("vulnerability_occurrence_pipelines", "vulnerability_occurrences", {:column=>"occurrence_id", :on_delete=>:cascade})1412 -> 0.0017s1413-- add_foreign_key("vulnerability_occurrences", "projects", {:on_delete=>:cascade})1414 -> 0.0028s1415-- add_foreign_key("vulnerability_occurrences", "vulnerabilities", {:name=>"fk_97ffe77653", :on_delete=>:nullify})1416 -> 0.0020s1417-- add_foreign_key("vulnerability_occurrences", "vulnerability_identifiers", {:column=>"primary_identifier_id", :on_delete=>:cascade})1418 -> 0.0024s1419-- add_foreign_key("vulnerability_occurrences", "vulnerability_scanners", {:column=>"scanner_id", :on_delete=>:cascade})1420 -> 0.0024s1421-- add_foreign_key("vulnerability_scanners", "projects", {:on_delete=>:cascade})1422 -> 0.0030s1423-- add_foreign_key("web_hook_logs", "web_hooks", {:on_delete=>:cascade})1424 -> 0.0026s1425-- add_foreign_key("web_hooks", "projects", {:name=>"fk_0c8ca6d9d1", :on_delete=>:cascade})1426 -> 0.0039s1427Dropped database 'gitlabhq_geo_test'1428Created database 'gitlabhq_geo_test'1429-- enable_extension("plpgsql")1430 -> 0.0201s1431-- create_table("container_repository_registry", {:id=>:serial, :force=>:cascade})1432 -> 0.0145s1433-- create_table("design_registry", {:id=>:serial, :force=>:cascade})1434 -> 0.0110s1435-- create_table("event_log_states", {:primary_key=>"event_id", :force=>:cascade})1436 -> 0.0023s1437-- create_table("file_registry", {:id=>:serial, :force=>:cascade})1438 -> 0.0139s1439-- create_table("job_artifact_registry", {:id=>:serial, :force=>:cascade})1440 -> 0.0109s1441-- create_table("project_registry", {:id=>:serial, :force=>:cascade})1442 -> 0.0477s1443$ date1444Wed Oct 16 17:05:43 UTC 20191445$ source scripts/rspec_helpers.sh1446$ rspec_paralellized_job "--tag ~quarantine --tag ~geo"1447KNAPSACK_TEST_FILE_PATTERN: spec/{controllers,mailers,requests}{,/**/}*_spec.rb1448Checking gitaly-ruby bundle...1449Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.1450The Gemfile's dependencies are satisfied1451Trying to connect to gitaly: ....... OK1452Knapsack report generator started!1453Run options:1454 include {:focus=>true}1455 exclude {:quarantine=>true, :geo=>true}1456All examples were filtered out; ignoring {:focus=>true}1457==> Setting up GitLab Shell...1458 GitLab Shell set up in 0.816751055 seconds...1459==> Setting up Gitaly...1460 Gitaly set up in 0.000244502 seconds...1461==> Setting up GitLab Elasticsearch Indexer...1462 GitLab Elasticsearch Indexer set up in 0.000441302 seconds...1463Notify1464 with HTML-encoded entities1465 retains 7bit encoding1466 for a project1467 for issues1468 that are new1469 has the correct subject and body1470 contains the description1471 does not add a reason header1472 contains a link to issue author1473 behaves like an assignee email1474 is sent to the assignee as the author1475 behaves like an email sent to a user1476 is sent to user's global notification email address1477 with group notification email1478 is sent to user's group notification email1479 behaves like an email starting a new thread with reply-by-email enabled1480 has X-GitLab-Project headers1481 has X-GitLab-*-ID header1482 has X-GitLab-*-IID header if model has iid defined1483 has the characteristics of a threaded email1484 includes "Reply to this email directly or <View it on GitLab>"1485 when reply-by-email is enabled with incoming address with %{key}1486 has a Reply-To header1487 when reply-by-email is enabled with incoming address without %{key}1488 has the characteristics of a threaded email1489 has a Reply-To header1490 behaves like it should show Gmail Actions View Issue link1491 should have body including "View Issue"1492 behaves like it should have Gmail Actions links1493 should have body including "ViewAction"1494 behaves like an unsubscribeable thread1495 has a List-Unsubscribe header in the correct format, and a body link1496 behaves like an unsubscribeable thread with incoming address without %{key}1497 has a List-Unsubscribe header in the correct format, and a body link1498 behaves like appearance header and footer enabled1499 contains header and footer1500 behaves like appearance header and footer not enabled1501 does not contain header and footer1502 when sent with a reason1503 includes the reason in a header1504 behaves like appearance header and footer enabled1505 contains header and footer1506 behaves like appearance header and footer not enabled1507 does not contain header and footer1508 that are reassigned1509 is sent as the author1510 has the correct subject and body1511 behaves like a multiple recipients email1512 is sent to the given recipient1513 behaves like an answer to an existing thread with reply-by-email enabled1514 has X-GitLab-Project headers1515 has X-GitLab-*-ID header1516 has X-GitLab-*-IID header if model has iid defined1517 has X-GitLab-Project headers1518 has X-GitLab-*-ID header1519 has X-GitLab-*-IID header if model has iid defined1520 has the characteristics of a threaded reply1521 when reply-by-email is enabled with incoming address with %{key}1522 has a Reply-To header1523 when reply-by-email is enabled with incoming address without %{key}1524 has X-GitLab-Project headers1525 has X-GitLab-*-ID header1526 has X-GitLab-*-IID header if model has iid defined1527 has the characteristics of a threaded reply1528 has a Reply-To header1529 behaves like it should show Gmail Actions View Issue link1530 should have body including "View Issue"1531 behaves like it should have Gmail Actions links1532 should have body including "ViewAction"1533 behaves like an unsubscribeable thread1534 has a List-Unsubscribe header in the correct format, and a body link1535 behaves like an unsubscribeable thread with incoming address without %{key}1536 has a List-Unsubscribe header in the correct format, and a body link1537 behaves like appearance header and footer enabled1538 contains header and footer1539 behaves like appearance header and footer not enabled1540 does not contain header and footer1541 when sent with a reason1542 includes the reason in a header1543 behaves like appearance header and footer enabled1544 contains header and footer1545 behaves like appearance header and footer not enabled1546 does not contain header and footer1547 that have been relabeled1548 is sent as the author1549 has the correct subject and body1550 behaves like a multiple recipients email1551 is sent to the given recipient1552 behaves like an answer to an existing thread with reply-by-email enabled1553 has X-GitLab-Project headers1554 has X-GitLab-*-ID header1555 has X-GitLab-*-IID header if model has iid defined1556 has X-GitLab-Project headers1557 has X-GitLab-*-ID header1558 has X-GitLab-*-IID header if model has iid defined1559 has the characteristics of a threaded reply1560 when reply-by-email is enabled with incoming address with %{key}1561 has a Reply-To header1562 when reply-by-email is enabled with incoming address without %{key}1563 has X-GitLab-Project headers1564 has X-GitLab-*-ID header1565 has X-GitLab-*-IID header if model has iid defined1566 has the characteristics of a threaded reply1567 has a Reply-To header1568 behaves like it should show Gmail Actions View Issue link1569 should have body including "View Issue"1570 behaves like it should have Gmail Actions links1571 should have body including "ViewAction"1572 behaves like a user cannot unsubscribe through footer link1573 does not have a List-Unsubscribe header or a body link1574 behaves like an email with a labels subscriptions link in its footer1575 should have body including "label subscriptions"1576 behaves like appearance header and footer enabled1577 contains header and footer1578 behaves like appearance header and footer not enabled1579 does not contain header and footer1580 with a preferred language1581 always generates the email using the default language1582 that are due soon1583 behaves like an answer to an existing thread with reply-by-email enabled1584 has X-GitLab-Project headers1585 has X-GitLab-*-ID header1586 has X-GitLab-*-IID header if model has iid defined1587 has X-GitLab-Project headers1588 has X-GitLab-*-ID header1589 has X-GitLab-*-IID header if model has iid defined1590 has the characteristics of a threaded reply1591 when reply-by-email is enabled with incoming address with %{key}1592 has a Reply-To header1593 when reply-by-email is enabled with incoming address without %{key}1594 has X-GitLab-Project headers1595 has X-GitLab-*-ID header1596 has X-GitLab-*-IID header if model has iid defined1597 has the characteristics of a threaded reply1598 has a Reply-To header1599 behaves like it should show Gmail Actions View Issue link1600 should have body including "View Issue"1601 behaves like it should have Gmail Actions links1602 should have body including "ViewAction"1603 behaves like an unsubscribeable thread1604 has a List-Unsubscribe header in the correct format, and a body link1605 behaves like an unsubscribeable thread with incoming address without %{key}1606 has a List-Unsubscribe header in the correct format, and a body link1607 behaves like appearance header and footer enabled1608 contains header and footer1609 behaves like appearance header and footer not enabled1610 does not contain header and footer1611 status changed1612 is sent as the author1613 has the correct subject and body1614 behaves like an answer to an existing thread with reply-by-email enabled1615 has X-GitLab-Project headers1616 has X-GitLab-*-ID header1617 has X-GitLab-*-IID header if model has iid defined1618 has X-GitLab-Project headers1619 has X-GitLab-*-ID header1620 has X-GitLab-*-IID header if model has iid defined1621 has the characteristics of a threaded reply1622 when reply-by-email is enabled with incoming address with %{key}1623 has a Reply-To header1624 when reply-by-email is enabled with incoming address without %{key}1625 has X-GitLab-Project headers1626 has X-GitLab-*-ID header1627 has X-GitLab-*-IID header if model has iid defined1628 has the characteristics of a threaded reply1629 has a Reply-To header1630 behaves like it should show Gmail Actions View Issue link1631 should have body including "View Issue"1632 behaves like it should have Gmail Actions links1633 should have body including "ViewAction"1634 behaves like an unsubscribeable thread1635 has a List-Unsubscribe header in the correct format, and a body link1636 behaves like an unsubscribeable thread with incoming address without %{key}1637 has a List-Unsubscribe header in the correct format, and a body link1638 behaves like appearance header and footer enabled1639 contains header and footer1640 behaves like appearance header and footer not enabled1641 does not contain header and footer1642 moved to another project1643 when a user has permissions to access the new issue1644 contains description about action taken1645 has the correct subject and body1646 contains the issue title1647 behaves like an answer to an existing thread with reply-by-email enabled1648 has X-GitLab-Project headers1649 has X-GitLab-*-ID header1650 has X-GitLab-*-IID header if model has iid defined1651 has X-GitLab-Project headers1652 has X-GitLab-*-ID header1653 has X-GitLab-*-IID header if model has iid defined1654 has the characteristics of a threaded reply1655 when reply-by-email is enabled with incoming address with %{key}1656 has a Reply-To header1657 when reply-by-email is enabled with incoming address without %{key}1658 has X-GitLab-Project headers1659 has X-GitLab-*-ID header1660 has X-GitLab-*-IID header if model has iid defined1661 has the characteristics of a threaded reply1662 has a Reply-To header1663 behaves like it should show Gmail Actions View Issue link1664 should have body including "View Issue"1665 behaves like it should have Gmail Actions links1666 should have body including "ViewAction"1667 behaves like an unsubscribeable thread1668 has a List-Unsubscribe header in the correct format, and a body link1669 behaves like an unsubscribeable thread with incoming address without %{key}1670 has a List-Unsubscribe header in the correct format, and a body link1671 when a user does not permissions to access the new issue1672 has the correct subject and body1673 does not contain the issue title1674 contains information about missing permissions1675 for merge requests1676 that are new1677 has the correct subject and body1678 contains the description1679 contains a link to merge request author1680 behaves like an assignee email1681 is sent to the assignee as the author1682 behaves like an email sent to a user1683 is sent to user's global notification email address1684 with group notification email1685 is sent to user's group notification email1686 behaves like an email starting a new thread with reply-by-email enabled1687 has X-GitLab-Project headers1688 has X-GitLab-*-ID header1689 has X-GitLab-*-IID header if model has iid defined1690 has the characteristics of a threaded email1691 includes "Reply to this email directly or <View it on GitLab>"1692 when reply-by-email is enabled with incoming address with %{key}1693 has a Reply-To header1694 when reply-by-email is enabled with incoming address without %{key}1695 has the characteristics of a threaded email1696 has a Reply-To header1697 behaves like it should show Gmail Actions View Merge request link1698 should have body including "View Merge request"1699 behaves like it should have Gmail Actions links1700 should have body including "ViewAction"1701 behaves like an unsubscribeable thread1702 has a List-Unsubscribe header in the correct format, and a body link1703 behaves like an unsubscribeable thread with incoming address without %{key}1704 has a List-Unsubscribe header in the correct format, and a body link1705 behaves like appearance header and footer enabled1706 contains header and footer1707 behaves like appearance header and footer not enabled1708 does not contain header and footer1709 when sent with a reason1710 includes the reason in a header1711 behaves like appearance header and footer enabled1712 contains header and footer1713 behaves like appearance header and footer not enabled1714 does not contain header and footer1715 that are reassigned1716 is sent as the author1717 has the correct subject and body1718 behaves like a multiple recipients email1719 is sent to the given recipient1720 behaves like an answer to an existing thread with reply-by-email enabled1721 has X-GitLab-Project headers1722 has X-GitLab-*-ID header1723 has X-GitLab-*-IID header if model has iid defined1724 has X-GitLab-Project headers1725 has X-GitLab-*-ID header1726 has X-GitLab-*-IID header if model has iid defined1727 has the characteristics of a threaded reply1728 when reply-by-email is enabled with incoming address with %{key}1729 has a Reply-To header1730 when reply-by-email is enabled with incoming address without %{key}1731 has X-GitLab-Project headers1732 has X-GitLab-*-ID header1733 has X-GitLab-*-IID header if model has iid defined1734 has the characteristics of a threaded reply1735 has a Reply-To header1736 behaves like it should show Gmail Actions View Merge request link1737 should have body including "View Merge request"1738 behaves like it should have Gmail Actions links1739 should have body including "ViewAction"1740 behaves like an unsubscribeable thread1741 has a List-Unsubscribe header in the correct format, and a body link1742 behaves like an unsubscribeable thread with incoming address without %{key}1743 has a List-Unsubscribe header in the correct format, and a body link1744 behaves like appearance header and footer enabled1745 contains header and footer1746 behaves like appearance header and footer not enabled1747 does not contain header and footer1748 when sent with a reason1749 includes the reason in a header1750 includes the reason in the footer1751 behaves like appearance header and footer enabled1752 contains header and footer1753 behaves like appearance header and footer not enabled1754 does not contain header and footer1755 that are new with a description1756 contains the description1757 behaves like it should show Gmail Actions View Merge request link1758 should have body including "View Merge request"1759 behaves like it should have Gmail Actions links1760 should have body including "ViewAction"1761 behaves like an unsubscribeable thread1762 has a List-Unsubscribe header in the correct format, and a body link1763 behaves like an unsubscribeable thread with incoming address without %{key}1764 has a List-Unsubscribe header in the correct format, and a body link1765 behaves like appearance header and footer enabled1766 contains header and footer1767 behaves like appearance header and footer not enabled1768 does not contain header and footer1769 that have been relabeled1770 is sent as the author1771 has the correct subject and body1772 behaves like a multiple recipients email1773 is sent to the given recipient1774 behaves like an answer to an existing thread with reply-by-email enabled1775 has X-GitLab-Project headers1776 has X-GitLab-*-ID header1777 has X-GitLab-*-IID header if model has iid defined1778 has X-GitLab-Project headers1779 has X-GitLab-*-ID header1780 has X-GitLab-*-IID header if model has iid defined1781 has the characteristics of a threaded reply1782 when reply-by-email is enabled with incoming address with %{key}1783 has a Reply-To header1784 when reply-by-email is enabled with incoming address without %{key}1785 has X-GitLab-Project headers1786 has X-GitLab-*-ID header1787 has X-GitLab-*-IID header if model has iid defined1788 has the characteristics of a threaded reply1789 has a Reply-To header1790 behaves like it should show Gmail Actions View Merge request link1791 should have body including "View Merge request"1792 behaves like it should have Gmail Actions links1793 should have body including "ViewAction"1794 behaves like a user cannot unsubscribe through footer link1795 does not have a List-Unsubscribe header or a body link1796 behaves like an email with a labels subscriptions link in its footer1797 should have body including "label subscriptions"1798 behaves like appearance header and footer enabled1799 contains header and footer1800 behaves like appearance header and footer not enabled1801 does not contain header and footer1802 status changed1803 is sent as the author1804 has the correct subject and body1805 behaves like an answer to an existing thread with reply-by-email enabled1806 has X-GitLab-Project headers1807 has X-GitLab-*-ID header1808 has X-GitLab-*-IID header if model has iid defined1809 has X-GitLab-Project headers1810 has X-GitLab-*-ID header1811 has X-GitLab-*-IID header if model has iid defined1812 has the characteristics of a threaded reply1813 when reply-by-email is enabled with incoming address with %{key}1814 has a Reply-To header1815 when reply-by-email is enabled with incoming address without %{key}1816 has X-GitLab-Project headers1817 has X-GitLab-*-ID header1818 has X-GitLab-*-IID header if model has iid defined1819 has the characteristics of a threaded reply1820 has a Reply-To header1821 behaves like it should show Gmail Actions View Merge request link1822 should have body including "View Merge request"1823 behaves like it should have Gmail Actions links1824 should have body including "ViewAction"1825 behaves like an unsubscribeable thread1826 has a List-Unsubscribe header in the correct format, and a body link1827 behaves like an unsubscribeable thread with incoming address without %{key}1828 has a List-Unsubscribe header in the correct format, and a body link1829 behaves like appearance header and footer enabled1830 contains header and footer1831 behaves like appearance header and footer not enabled1832 does not contain header and footer1833 that are merged1834 is sent as the merge author1835 has the correct subject and body1836 behaves like a multiple recipients email1837 is sent to the given recipient1838 behaves like an answer to an existing thread with reply-by-email enabled1839 has X-GitLab-Project headers1840 has X-GitLab-*-ID header1841 has X-GitLab-*-IID header if model has iid defined1842 has X-GitLab-Project headers1843 has X-GitLab-*-ID header1844 has X-GitLab-*-IID header if model has iid defined1845 has the characteristics of a threaded reply1846 when reply-by-email is enabled with incoming address with %{key}1847 has a Reply-To header1848 when reply-by-email is enabled with incoming address without %{key}1849 has X-GitLab-Project headers1850 has X-GitLab-*-ID header1851 has X-GitLab-*-IID header if model has iid defined1852 has the characteristics of a threaded reply1853 has a Reply-To header1854 behaves like it should show Gmail Actions View Merge request link1855 should have body including "View Merge request"1856 behaves like it should have Gmail Actions links1857 should have body including "ViewAction"1858 behaves like an unsubscribeable thread1859 has a List-Unsubscribe header in the correct format, and a body link1860 behaves like an unsubscribeable thread with incoming address without %{key}1861 has a List-Unsubscribe header in the correct format, and a body link1862 behaves like appearance header and footer enabled1863 contains header and footer1864 behaves like appearance header and footer not enabled1865 does not contain header and footer1866 that are unmergeable1867 is sent as the merge request author1868 has the correct subject and body1869 behaves like a multiple recipients email1870 is sent to the given recipient1871 behaves like an answer to an existing thread with reply-by-email enabled1872 has X-GitLab-Project headers1873 has X-GitLab-*-ID header1874 has X-GitLab-*-IID header if model has iid defined1875 has X-GitLab-Project headers1876 has X-GitLab-*-ID header1877 has X-GitLab-*-IID header if model has iid defined1878 has the characteristics of a threaded reply1879 when reply-by-email is enabled with incoming address with %{key}1880 has a Reply-To header1881 when reply-by-email is enabled with incoming address without %{key}1882 has X-GitLab-Project headers1883 has X-GitLab-*-ID header1884 has X-GitLab-*-IID header if model has iid defined1885 has the characteristics of a threaded reply1886 has a Reply-To header1887 behaves like it should show Gmail Actions View Merge request link1888 should have body including "View Merge request"1889 behaves like it should have Gmail Actions links1890 should have body including "ViewAction"1891 behaves like an unsubscribeable thread1892 has a List-Unsubscribe header in the correct format, and a body link1893 behaves like an unsubscribeable thread with incoming address without %{key}1894 has a List-Unsubscribe header in the correct format, and a body link1895 behaves like appearance header and footer enabled1896 contains header and footer1897 behaves like appearance header and footer not enabled1898 does not contain header and footer1899 that have new commits1900 behaves like a push to an existing merge request1901 is sent as the push user1902 has the correct subject and body1903 behaves like a multiple recipients email1904 is sent to the given recipient1905 behaves like an answer to an existing thread with reply-by-email enabled1906 has X-GitLab-Project headers1907 has X-GitLab-*-ID header1908 has X-GitLab-*-IID header if model has iid defined1909 has X-GitLab-Project headers1910 has X-GitLab-*-ID header1911 has X-GitLab-*-IID header if model has iid defined1912 has the characteristics of a threaded reply1913 when reply-by-email is enabled with incoming address with %{key}1914 has a Reply-To header1915 when reply-by-email is enabled with incoming address without %{key}1916 has X-GitLab-Project headers1917 has X-GitLab-*-ID header1918 has X-GitLab-*-IID header if model has iid defined1919 has the characteristics of a threaded reply1920 has a Reply-To header1921 behaves like it should show Gmail Actions View Merge request link1922 should have body including "View Merge request"1923 behaves like it should have Gmail Actions links1924 should have body including "ViewAction"1925 behaves like an unsubscribeable thread1926 has a List-Unsubscribe header in the correct format, and a body link1927 behaves like an unsubscribeable thread with incoming address without %{key}1928 has a List-Unsubscribe header in the correct format, and a body link1929 behaves like appearance header and footer enabled1930 contains header and footer1931 behaves like appearance header and footer not enabled1932 does not contain header and footer1933 that have new commits on top of an existing one1934 behaves like a push to an existing merge request1935 is sent as the push user1936 has the correct subject and body1937 behaves like a multiple recipients email1938 is sent to the given recipient1939 behaves like an answer to an existing thread with reply-by-email enabled1940 has X-GitLab-Project headers1941 has X-GitLab-*-ID header1942 has X-GitLab-*-IID header if model has iid defined1943 has X-GitLab-Project headers1944 has X-GitLab-*-ID header1945 has X-GitLab-*-IID header if model has iid defined1946 has the characteristics of a threaded reply1947 when reply-by-email is enabled with incoming address with %{key}1948 has a Reply-To header1949 when reply-by-email is enabled with incoming address without %{key}1950 has X-GitLab-Project headers1951 has X-GitLab-*-ID header1952 has X-GitLab-*-IID header if model has iid defined1953 has the characteristics of a threaded reply1954 has a Reply-To header1955 behaves like it should show Gmail Actions View Merge request link1956 should have body including "View Merge request"1957 behaves like it should have Gmail Actions links1958 should have body including "ViewAction"1959 behaves like an unsubscribeable thread1960 has a List-Unsubscribe header in the correct format, and a body link1961 behaves like an unsubscribeable thread with incoming address without %{key}1962 has a List-Unsubscribe header in the correct format, and a body link1963 behaves like appearance header and footer enabled1964 contains header and footer1965 behaves like appearance header and footer not enabled1966 does not contain header and footer1967 #mail_thread1968 the model has no namespace1969 has X-GitLab-Namespaced-Thing-ID header1970 the model has a namespace1971 has X-GitLab-Namespaced-Thing-ID header1972 for issue notes1973 in discussion1974 has In-Reply-To header pointing to previous note in discussion1975 has References header including the notes and issue of the discussion1976 has X-GitLab-Discussion-ID header1977 behaves like an email sent to a user1978 is sent to user's global notification email address1979 with group notification email1980 is sent to user's group notification email1981 behaves like appearance header and footer enabled1982 contains header and footer1983 behaves like appearance header and footer not enabled1984 does not contain header and footer1985 individual issue comments1986 has In-Reply-To header pointing to the issue1987 has References header including the notes and issue of the discussion1988 behaves like an email sent to a user1989 is sent to user's global notification email address1990 with group notification email1991 is sent to user's group notification email1992 behaves like appearance header and footer enabled1993 contains header and footer1994 behaves like appearance header and footer not enabled1995 does not contain header and footer1996 for snippet notes1997 has the correct subject and body1998 behaves like appearance header and footer enabled1999 contains header and footer2000 behaves like appearance header and footer not enabled2001 does not contain header and footer2002 behaves like an answer to an existing thread with reply-by-email enabled2003 has X-GitLab-Project headers2004 has X-GitLab-*-ID header2005 has X-GitLab-*-IID header if model has iid defined2006 has X-GitLab-Project headers2007 has X-GitLab-*-ID header2008 has X-GitLab-*-IID header if model has iid defined2009 has the characteristics of a threaded reply2010 when reply-by-email is enabled with incoming address with %{key}2011 has a Reply-To header2012 when reply-by-email is enabled with incoming address without %{key}2013 has X-GitLab-Project headers2014 has X-GitLab-*-ID header2015 has X-GitLab-*-IID header if model has iid defined2016 has the characteristics of a threaded reply2017 has a Reply-To header2018 behaves like a user cannot unsubscribe through footer link2019 does not have a List-Unsubscribe header or a body link2020 project was moved2021 has the correct subject and body2022 behaves like an email sent to a user2023 is sent to user's global notification email address2024 with group notification email2025 is sent to user's group notification email2026 behaves like an email sent from GitLab2027 has the characteristics of an email sent from GitLab2028 behaves like it should not have Gmail Actions links2029 should not have body including "ViewAction"2030 behaves like a user cannot unsubscribe through footer link2031 does not have a List-Unsubscribe header or a body link2032 behaves like appearance header and footer enabled2033 contains header and footer2034 behaves like appearance header and footer not enabled2035 does not contain header and footer2036 project access requested2037 contains all the useful information2038 behaves like an email sent from GitLab2039 has the characteristics of an email sent from GitLab2040 behaves like it should not have Gmail Actions links2041 should not have body including "ViewAction"2042 behaves like a user cannot unsubscribe through footer link2043 does not have a List-Unsubscribe header or a body link2044 behaves like appearance header and footer enabled2045 contains header and footer2046 behaves like appearance header and footer not enabled2047 does not contain header and footer2048 project access denied2049 contains all the useful information2050 behaves like an email sent from GitLab2051 has the characteristics of an email sent from GitLab2052 behaves like it should not have Gmail Actions links2053 should not have body including "ViewAction"2054 behaves like a user cannot unsubscribe through footer link2055 does not have a List-Unsubscribe header or a body link2056 behaves like appearance header and footer enabled2057 contains header and footer2058 behaves like appearance header and footer not enabled2059 does not contain header and footer2060 project access changed2061 contains all the useful information2062 behaves like an email sent from GitLab2063 has the characteristics of an email sent from GitLab2064 behaves like it should not have Gmail Actions links2065 should not have body including "ViewAction"2066 behaves like a user cannot unsubscribe through footer link2067 does not have a List-Unsubscribe header or a body link2068 behaves like appearance header and footer enabled2069 contains header and footer2070 behaves like appearance header and footer not enabled2071 does not contain header and footer2072 project invitation2073 contains all the useful information2074 behaves like an email sent from GitLab2075 has the characteristics of an email sent from GitLab2076 behaves like it should not have Gmail Actions links2077 should not have body including "ViewAction"2078 behaves like a user cannot unsubscribe through footer link2079 does not have a List-Unsubscribe header or a body link2080 behaves like appearance header and footer enabled2081 contains header and footer2082 behaves like appearance header and footer not enabled2083 does not contain header and footer2084 project invitation accepted2085 contains all the useful information2086 behaves like an email sent from GitLab2087 has the characteristics of an email sent from GitLab2088 behaves like an email sent to a user2089 is sent to user's global notification email address2090 with group notification email2091 is sent to user's group notification email2092 behaves like it should not have Gmail Actions links2093 should not have body including "ViewAction"2094 behaves like a user cannot unsubscribe through footer link2095 does not have a List-Unsubscribe header or a body link2096 behaves like appearance header and footer enabled2097 contains header and footer2098 behaves like appearance header and footer not enabled2099 does not contain header and footer2100 project invitation declined2101 contains all the useful information2102 behaves like an email sent from GitLab2103 has the characteristics of an email sent from GitLab2104 behaves like an email sent to a user2105 is sent to user's global notification email address2106 with group notification email2107 is sent to user's group notification email2108 behaves like it should not have Gmail Actions links2109 should not have body including "ViewAction"2110 behaves like a user cannot unsubscribe through footer link2111 does not have a List-Unsubscribe header or a body link2112 behaves like appearance header and footer enabled2113 contains header and footer2114 behaves like appearance header and footer not enabled2115 does not contain header and footer2116 items that are noteable, the email for a note2117 on a commit2118 has the correct subject and body2119 behaves like a note email2120 is sent to the given recipient as the author2121 contains the message from the note2122 contains a link to note author2123 behaves like it should have Gmail Actions links2124 should have body including "ViewAction"2125 behaves like an answer to an existing thread with reply-by-email enabled2126 has X-GitLab-Project headers2127 has X-GitLab-*-ID header2128 has X-GitLab-*-IID header if model has iid defined2129 has X-GitLab-Project headers2130 has X-GitLab-*-ID header2131 has X-GitLab-*-IID header if model has iid defined2132 has the characteristics of a threaded reply2133 when reply-by-email is enabled with incoming address with %{key}2134 has a Reply-To header2135 when reply-by-email is enabled with incoming address without %{key}2136 has X-GitLab-Project headers2137 has X-GitLab-*-ID header2138 has X-GitLab-*-IID header if model has iid defined2139 has the characteristics of a threaded reply2140 has a Reply-To header2141 behaves like it should show Gmail Actions View Commit link2142 should have body including "View Commit"2143 behaves like it should have Gmail Actions links2144 should have body including "ViewAction"2145 behaves like a user cannot unsubscribe through footer link2146 does not have a List-Unsubscribe header or a body link2147 behaves like appearance header and footer enabled2148 contains header and footer2149 behaves like appearance header and footer not enabled2150 does not contain header and footer2151 on a merge request2152 has the correct subject and body2153 behaves like a note email2154 is sent to the given recipient as the author2155 contains the message from the note2156 contains a link to note author2157 behaves like it should have Gmail Actions links2158 should have body including "ViewAction"2159 behaves like an answer to an existing thread with reply-by-email enabled2160 has X-GitLab-Project headers2161 has X-GitLab-*-ID header2162 has X-GitLab-*-IID header if model has iid defined2163 has X-GitLab-Project headers2164 has X-GitLab-*-ID header2165 has X-GitLab-*-IID header if model has iid defined2166 has the characteristics of a threaded reply2167 when reply-by-email is enabled with incoming address with %{key}2168 has a Reply-To header2169 when reply-by-email is enabled with incoming address without %{key}2170 has X-GitLab-Project headers2171 has X-GitLab-*-ID header2172 has X-GitLab-*-IID header if model has iid defined2173 has the characteristics of a threaded reply2174 has a Reply-To header2175 behaves like it should show Gmail Actions View Merge request link2176 should have body including "View Merge request"2177 behaves like it should have Gmail Actions links2178 should have body including "ViewAction"2179 behaves like an unsubscribeable thread2180 has a List-Unsubscribe header in the correct format, and a body link2181 behaves like an unsubscribeable thread with incoming address without %{key}2182 has a List-Unsubscribe header in the correct format, and a body link2183 behaves like appearance header and footer enabled2184 contains header and footer2185 behaves like appearance header and footer not enabled2186 does not contain header and footer2187 on an issue2188 has the correct subject and body2189 behaves like a note email2190 is sent to the given recipient as the author2191 contains the message from the note2192 contains a link to note author2193 behaves like it should have Gmail Actions links2194 should have body including "ViewAction"2195 behaves like an answer to an existing thread with reply-by-email enabled2196 has X-GitLab-Project headers2197 has X-GitLab-*-ID header2198 has X-GitLab-*-IID header if model has iid defined2199 has X-GitLab-Project headers2200 has X-GitLab-*-ID header2201 has X-GitLab-*-IID header if model has iid defined2202 has the characteristics of a threaded reply2203 when reply-by-email is enabled with incoming address with %{key}2204 has a Reply-To header2205 when reply-by-email is enabled with incoming address without %{key}2206 has X-GitLab-Project headers2207 has X-GitLab-*-ID header2208 has X-GitLab-*-IID header if model has iid defined2209 has the characteristics of a threaded reply2210 has a Reply-To header2211 behaves like it should show Gmail Actions View Issue link2212 should have body including "View Issue"2213 behaves like it should have Gmail Actions links2214 should have body including "ViewAction"2215 behaves like an unsubscribeable thread2216 has a List-Unsubscribe header in the correct format, and a body link2217 behaves like an unsubscribeable thread with incoming address without %{key}2218 has a List-Unsubscribe header in the correct format, and a body link2219 behaves like appearance header and footer enabled2220 contains header and footer2221 behaves like appearance header and footer not enabled2222 does not contain header and footer2223 items that are noteable, the email for a discussion note2224 on a commit2225 has the correct subject2226 contains a link to the commit2227 behaves like a discussion note email2228 is sent to the given recipient as the author2229 contains the message from the note2230 contains an introduction2231 behaves like it should have Gmail Actions links2232 should have body including "ViewAction"2233 when a comment on an existing discussion2234 contains an introduction2235 behaves like an answer to an existing thread with reply-by-email enabled2236 has X-GitLab-Project headers2237 has X-GitLab-*-ID header2238 has X-GitLab-*-IID header if model has iid defined2239 has X-GitLab-Project headers2240 has X-GitLab-*-ID header2241 has X-GitLab-*-IID header if model has iid defined2242 has the characteristics of a threaded reply2243 when reply-by-email is enabled with incoming address with %{key}2244 has a Reply-To header2245 when reply-by-email is enabled with incoming address without %{key}2246 has X-GitLab-Project headers2247 has X-GitLab-*-ID header2248 has X-GitLab-*-IID header if model has iid defined2249 has the characteristics of a threaded reply2250 has a Reply-To header2251 behaves like it should show Gmail Actions View Commit link2252 should have body including "View Commit"2253 behaves like it should have Gmail Actions links2254 should have body including "ViewAction"2255 behaves like a user cannot unsubscribe through footer link2256 does not have a List-Unsubscribe header or a body link2257 behaves like appearance header and footer enabled2258 contains header and footer2259 behaves like appearance header and footer not enabled2260 does not contain header and footer2261 on a merge request2262 has the correct subject2263 contains a link to the merge request note2264 behaves like a discussion note email2265 is sent to the given recipient as the author2266 contains the message from the note2267 contains an introduction2268 behaves like it should have Gmail Actions links2269 should have body including "ViewAction"2270 when a comment on an existing discussion2271 contains an introduction2272 behaves like an answer to an existing thread with reply-by-email enabled2273 has X-GitLab-Project headers2274 has X-GitLab-*-ID header2275 has X-GitLab-*-IID header if model has iid defined2276 has X-GitLab-Project headers2277 has X-GitLab-*-ID header2278 has X-GitLab-*-IID header if model has iid defined2279 has the characteristics of a threaded reply2280 when reply-by-email is enabled with incoming address with %{key}2281 has a Reply-To header2282 when reply-by-email is enabled with incoming address without %{key}2283 has X-GitLab-Project headers2284 has X-GitLab-*-ID header2285 has X-GitLab-*-IID header if model has iid defined2286 has the characteristics of a threaded reply2287 has a Reply-To header2288 behaves like it should show Gmail Actions View Merge request link2289 should have body including "View Merge request"2290 behaves like it should have Gmail Actions links2291 should have body including "ViewAction"2292 behaves like an unsubscribeable thread2293 has a List-Unsubscribe header in the correct format, and a body link2294 behaves like an unsubscribeable thread with incoming address without %{key}2295 has a List-Unsubscribe header in the correct format, and a body link2296 behaves like appearance header and footer enabled2297 contains header and footer2298 behaves like appearance header and footer not enabled2299 does not contain header and footer2300 on an issue2301 has the correct subject2302 contains a link to the issue note2303 behaves like a discussion note email2304 is sent to the given recipient as the author2305 contains the message from the note2306 contains an introduction2307 behaves like it should have Gmail Actions links2308 should have body including "ViewAction"2309 when a comment on an existing discussion2310 contains an introduction2311 behaves like an answer to an existing thread with reply-by-email enabled2312 has X-GitLab-Project headers2313 has X-GitLab-*-ID header2314 has X-GitLab-*-IID header if model has iid defined2315 has X-GitLab-Project headers2316 has X-GitLab-*-ID header2317 has X-GitLab-*-IID header if model has iid defined2318 has the characteristics of a threaded reply2319 when reply-by-email is enabled with incoming address with %{key}2320 has a Reply-To header2321 when reply-by-email is enabled with incoming address without %{key}2322 has X-GitLab-Project headers2323 has X-GitLab-*-ID header2324 has X-GitLab-*-IID header if model has iid defined2325 has the characteristics of a threaded reply2326 has a Reply-To header2327 behaves like it should show Gmail Actions View Issue link2328 should have body including "View Issue"2329 behaves like it should have Gmail Actions links2330 should have body including "ViewAction"2331 behaves like an unsubscribeable thread2332 has a List-Unsubscribe header in the correct format, and a body link2333 behaves like an unsubscribeable thread with incoming address without %{key}2334 has a List-Unsubscribe header in the correct format, and a body link2335 behaves like appearance header and footer enabled2336 contains header and footer2337 behaves like appearance header and footer not enabled2338 does not contain header and footer2339 items that are noteable, the email for a diff discussion note2340 on a commit2341 behaves like an email for a note on a diff discussion2342 includes diffs with character-level highlighting2343 contains a link to the diff file2344 is sent to the given recipient as the author2345 contains the message from the note2346 contains an introduction2347 when note is not on text2348 does not include diffs with character-level highlighting2349 behaves like it should have Gmail Actions links2350 should have body including "ViewAction"2351 when a comment on an existing discussion2352 contains an introduction2353 behaves like it should show Gmail Actions View Commit link2354 should have body including "View Commit"2355 behaves like it should have Gmail Actions links2356 should have body including "ViewAction"2357 behaves like a user cannot unsubscribe through footer link2358 does not have a List-Unsubscribe header or a body link2359 behaves like appearance header and footer enabled2360 contains header and footer2361 behaves like appearance header and footer not enabled2362 does not contain header and footer2363 on a merge request2364 behaves like an email for a note on a diff discussion2365 includes diffs with character-level highlighting2366 contains a link to the diff file2367 is sent to the given recipient as the author2368 contains the message from the note2369 contains an introduction2370 when note is not on text2371 does not include diffs with character-level highlighting2372 behaves like it should have Gmail Actions links2373 should have body including "ViewAction"2374 when a comment on an existing discussion2375 contains an introduction2376 behaves like it should show Gmail Actions View Merge request link2377 should have body including "View Merge request"2378 behaves like it should have Gmail Actions links2379 should have body including "ViewAction"2380 behaves like an unsubscribeable thread2381 has a List-Unsubscribe header in the correct format, and a body link2382 behaves like an unsubscribeable thread with incoming address without %{key}2383 has a List-Unsubscribe header in the correct format, and a body link2384 behaves like appearance header and footer enabled2385 contains header and footer2386 behaves like appearance header and footer not enabled2387 does not contain header and footer2388 for a group2389 group access requested2390 contains all the useful information2391 behaves like an email sent from GitLab2392 has the characteristics of an email sent from GitLab2393 behaves like an email sent to a user2394 is sent to user's global notification email address2395 with group notification email2396 is sent to user's group notification email2397 behaves like it should not have Gmail Actions links2398 should not have body including "ViewAction"2399 behaves like a user cannot unsubscribe through footer link2400 does not have a List-Unsubscribe header or a body link2401 behaves like appearance header and footer enabled2402 contains header and footer2403 behaves like appearance header and footer not enabled2404 does not contain header and footer2405 group access denied2406 contains all the useful information2407 behaves like an email sent from GitLab2408 has the characteristics of an email sent from GitLab2409 behaves like an email sent to a user2410 is sent to user's global notification email address2411 with group notification email2412 is sent to user's group notification email2413 behaves like it should not have Gmail Actions links2414 should not have body including "ViewAction"2415 behaves like a user cannot unsubscribe through footer link2416 does not have a List-Unsubscribe header or a body link2417 behaves like appearance header and footer enabled2418 contains header and footer2419 behaves like appearance header and footer not enabled2420 does not contain header and footer2421 group access changed2422 contains all the useful information2423 behaves like an email sent from GitLab2424 has the characteristics of an email sent from GitLab2425 behaves like an email sent to a user2426 is sent to user's global notification email address2427 with group notification email2428 is sent to user's group notification email2429 behaves like it should not have Gmail Actions links2430 should not have body including "ViewAction"2431 behaves like a user cannot unsubscribe through footer link2432 does not have a List-Unsubscribe header or a body link2433 behaves like appearance header and footer enabled2434 contains header and footer2435 behaves like appearance header and footer not enabled2436 does not contain header and footer2437 group invitation2438 contains all the useful information2439 behaves like an email sent from GitLab2440 has the characteristics of an email sent from GitLab2441 behaves like it should not have Gmail Actions links2442 should not have body including "ViewAction"2443 behaves like a user cannot unsubscribe through footer link2444 does not have a List-Unsubscribe header or a body link2445 behaves like appearance header and footer enabled2446 contains header and footer2447 behaves like appearance header and footer not enabled2448 does not contain header and footer2449 group invitation accepted2450 contains all the useful information2451 behaves like an email sent from GitLab2452 has the characteristics of an email sent from GitLab2453 behaves like it should not have Gmail Actions links2454 should not have body including "ViewAction"2455 behaves like a user cannot unsubscribe through footer link2456 does not have a List-Unsubscribe header or a body link2457 behaves like appearance header and footer enabled2458 contains header and footer2459 behaves like appearance header and footer not enabled2460 does not contain header and footer2461 group invitation declined2462 contains all the useful information2463 behaves like an email sent from GitLab2464 has the characteristics of an email sent from GitLab2465 behaves like it should not have Gmail Actions links2466 should not have body including "ViewAction"2467 behaves like a user cannot unsubscribe through footer link2468 does not have a List-Unsubscribe header or a body link2469 behaves like appearance header and footer enabled2470 contains header and footer2471 behaves like appearance header and footer not enabled2472 does not contain header and footer2473 confirmation if email changed2474 is sent to the new user2475 has the correct subject and body2476 behaves like an email sent from GitLab2477 has the characteristics of an email sent from GitLab2478 behaves like a user cannot unsubscribe through footer link2479 does not have a List-Unsubscribe header or a body link2480 email on push for a created branch2481 is sent as the author2482 has the correct subject and body2483 behaves like it should not have Gmail Actions links2484 should not have body including "ViewAction"2485 behaves like a user cannot unsubscribe through footer link2486 does not have a List-Unsubscribe header or a body link2487 behaves like an email with X-GitLab headers containing project details2488 has X-GitLab-Project headers2489 behaves like an email that contains a header with author username2490 has X-GitLab-Author header containing author's username2491 behaves like appearance header and footer enabled2492 contains header and footer2493 behaves like appearance header and footer not enabled2494 does not contain header and footer2495 email on push for a created tag2496 is sent as the author2497 has the correct subject and body2498 behaves like it should not have Gmail Actions links2499 should not have body including "ViewAction"2500 behaves like a user cannot unsubscribe through footer link2501 does not have a List-Unsubscribe header or a body link2502 behaves like an email with X-GitLab headers containing project details2503 has X-GitLab-Project headers2504 behaves like an email that contains a header with author username2505 has X-GitLab-Author header containing author's username2506 behaves like appearance header and footer enabled2507 contains header and footer2508 behaves like appearance header and footer not enabled2509 does not contain header and footer2510 email on push for a deleted branch2511 is sent as the author2512 has the correct subject2513 behaves like it should not have Gmail Actions links2514 should not have body including "ViewAction"2515 behaves like a user cannot unsubscribe through footer link2516 does not have a List-Unsubscribe header or a body link2517 behaves like an email with X-GitLab headers containing project details2518 has X-GitLab-Project headers2519 behaves like an email that contains a header with author username2520 has X-GitLab-Author header containing author's username2521 behaves like appearance header and footer enabled2522 contains header and footer2523 behaves like appearance header and footer not enabled2524 does not contain header and footer2525 email on push for a deleted tag2526 is sent as the author2527 has the correct subject2528 behaves like it should not have Gmail Actions links2529 should not have body including "ViewAction"2530 behaves like a user cannot unsubscribe through footer link2531 does not have a List-Unsubscribe header or a body link2532 behaves like an email with X-GitLab headers containing project details2533 has X-GitLab-Project headers2534 behaves like an email that contains a header with author username2535 has X-GitLab-Author header containing author's username2536 behaves like appearance header and footer enabled2537 contains header and footer2538 behaves like appearance header and footer not enabled2539 does not contain header and footer2540 email on push with multiple commits2541 is sent as the author2542 has the correct subject and body2543 behaves like it should not have Gmail Actions links2544 should not have body including "ViewAction"2545 behaves like a user cannot unsubscribe through footer link2546 does not have a List-Unsubscribe header or a body link2547 behaves like an email with X-GitLab headers containing project details2548 has X-GitLab-Project headers2549 behaves like an email that contains a header with author username2550 has X-GitLab-Author header containing author's username2551 behaves like appearance header and footer enabled2552 contains header and footer2553 behaves like appearance header and footer not enabled2554 does not contain header and footer2555 when set to send from committer email if domain matches2556 when the committer email domain is within the GitLab domain2557 is sent from the committer email2558 when the committer email domain is not completely within the GitLab domain2559 is sent from the default email2560 when the committer email domain is outside the GitLab domain2561 is sent from the default email2562 email on push with a single commit2563 is sent as the author2564 has the correct subject and body2565 behaves like it should show Gmail Actions View Commit link2566 should have body including "View Commit"2567 behaves like it should have Gmail Actions links2568 should have body including "ViewAction"2569 behaves like a user cannot unsubscribe through footer link2570 does not have a List-Unsubscribe header or a body link2571 behaves like an email with X-GitLab headers containing project details2572 has X-GitLab-Project headers2573 behaves like an email that contains a header with author username2574 has X-GitLab-Author header containing author's username2575 behaves like appearance header and footer enabled2576 contains header and footer2577 behaves like appearance header and footer not enabled2578 does not contain header and footer2579 HTML emails setting2580 behaves like appearance header and footer enabled2581 contains header and footer2582 behaves like appearance header and footer not enabled2583 does not contain header and footer2584 when disabled2585 only sends the text template2586 when enabled2587 sends a multipart message2588 for personal snippet notes2589 has the correct subject and body2590 behaves like a user cannot unsubscribe through footer link2591 does not have a List-Unsubscribe header or a body link2592 behaves like appearance header and footer enabled2593 contains header and footer2594 behaves like appearance header and footer not enabled2595 does not contain header and footer2596API::Groups2597 GET /groups2598 when unauthenticated2599 returns public groups2600 avoids N+1 queries2601 when authenticated as user2602 normal user: returns an array of groups of user12603 does not include runners_token information2604 does not include statistics2605 when authenticated as admin2606 admin: returns an array of all groups2607 does not include runners_token information2608 does not include statistics by default2609 includes statistics if requested2610 when using skip_groups in request2611 returns all groups excluding skipped groups2612 when using all_available in request2613 returns all groups you have access to2614 when using sorting2615 sorts by name ascending by default2616 sorts in descending order when passed2617 sorts by path in order_by param2618 sorts by id in the order_by param2619 sorts also by descending id with pagination fix2620 sorts identical keys by id for good pagination2621 sorts descending identical keys by id for good pagination2622 when using owned in the request2623 returns an array of groups the user owns2624 when using min_access_level in the request2625 returns an array of groups the user has at least master access2626 GET /groups/:id2627 when unauthenticated2628 returns 404 for a private group2629 returns 200 for a public group2630 returns only public projects in the group2631 returns only public projects shared with the group2632 when authenticated as user2633 returns one of user1's groups2634 returns one of user1's groups without projects when with_projects option is set to false2635 doesn't return runners_token if the user is not the owner of the group2636 returns runners_token if the user is the owner of the group2637 does not return a non existing group2638 does not return a group not attached to user12639 returns only public and internal projects in the group2640 returns only public and internal projects shared with the group2641 avoids N+1 queries2642 when authenticated as admin2643 returns any existing group2644 returns information of the runners_token for the group2645 does not return a non existing group2646 when using group path in URL2647 returns any existing group2648 does not return a non existing group2649 does not return a group not attached to user12650 PUT /groups/:id2651 when authenticated as the group owner2652 updates the group2653 returns 404 for a non existing group2654 within a subgroup2655 does not change visibility when not requested2656 prevents making private a group containing public subgroups2657 when authenticated as the admin2658 updates the group2659 when authenticated as an user that can see the group2660 does not updates the group2661 when authenticated as an user that cannot see the group2662 returns 404 when trying to update the group2663 GET /groups/:id/projects2664 when authenticated as user2665 returns the group's projects2666 returns the group's projects with simple representation2667 filters the groups projects2668 returns projects excluding shared2669 returns projects including those in subgroups2670 does not return a non existing group2671 does not return a group not attached to user12672 only returns projects to which user has access2673 only returns the projects owned by user2674 only returns the projects starred by user2675 with min access level2676 returns projects with min access level or higher2677 when authenticated as admin2678 returns any existing group2679 does not return a non existing group2680 avoids N+1 queries2681 when using group path in URL2682 returns any existing group2683 does not return a non existing group2684 does not return a group not attached to user12685 GET /groups/:id/subgroups2686 when unauthenticated2687 returns only public subgroups2688 returns 404 for a private group2689 when authenticated as user2690 when user is not member of a public group2691 returns no subgroups for the public group2692 when using all_available in request2693 returns public subgroups2694 when user is not member of a private group2695 returns 404 for the private group2696 when user is member of public group2697 returns private subgroups2698 when using statistics in request2699 does not include statistics2700 when user is member of private group2701 returns subgroups2702 when authenticated as admin2703 returns private subgroups of a public group2704 returns subgroups of a private group2705 does not include statistics by default2706 includes statistics if requested2707 POST /groups2708 when authenticated as user without group permissions2709 does not create group2710 as owner2711 can create subgroups2712 as maintainer2713 can create subgroups2714 when authenticated as user with group permissions2715 creates group2716 creates a nested group2717 does not create group, duplicate2718 returns 400 bad request error if name not given2719 returns 400 bad request error if path not given2720 DELETE /groups/:id2721 when authenticated as user2722 removes group2723 does not remove a group if not an owner2724 does not remove a non existing group2725 does not remove a group not attached to user12726 behaves like 412 response2727 for a modified ressource2728 returns 4122729 for an unmodified ressource2730 returns accepted2731 when authenticated as admin2732 removes any existing group2733 does not remove a non existing group2734 POST /groups/:id/projects/:project_id2735 when authenticated as user2736 does not transfer project to group2737 when authenticated as admin2738 transfers project to group2739 when using project path in URL2740 with a valid project path2741 transfers project to group2742 with a non-existent project path2743 does not transfer project to group2744 when using a group path in URL2745 with a valid group path2746 transfers project to group2747 with a non-existent group path2748 does not transfer project to group2749 behaves like custom attributes endpoints2750 GET /groups with custom attributes filter2751 with an unauthorized user2752 does not filter by custom attributes2753 with an authorized user2754 filters by custom attributes2755 GET /groups with custom attributes2756 with an unauthorized user2757 does not include custom attributes2758 with an authorized user2759 does not include custom attributes by default2760 includes custom attributes if requested2761 GET /groups/:id with custom attributes2762 with an unauthorized user2763 does not include custom attributes2764 with an authorized user2765 does not include custom attributes by default2766 includes custom attributes if requested2767 GET /groups/:id/custom_attributes2768 with an unauthorized user2769 behaves like an unauthorized API user2770 should eq 4032771 with an authorized user2772 returns all custom attributes2773 GET /groups/:id/custom_attributes/:key2774 with an unauthorized user2775 behaves like an unauthorized API user2776 should eq 4032777 with an authorized user2778 returns a single custom attribute2779 PUT /groups/:id/custom_attributes/:key2780 with an unauthorized user2781 behaves like an unauthorized API user2782 should eq 4032783 with an authorized user2784 creates a new custom attribute2785 updates an existing custom attribute2786 DELETE /groups/:id/custom_attributes/:key2787 with an unauthorized user2788 behaves like an unauthorized API user2789 should eq 4032790 with an authorized user2791 deletes an existing custom attribute2792API::Issues2793 GET /groups/:id/issues2794 when group has subgroups2795 when user is unauthenticated2796 also returns subgroups public projects issues2797 also returns subgroups public projects issues filtered by milestone2798 issues_statistics2799 no state is treated as all state2800 behaves like group issues statistics2801 returns issues statistics2802 statistics when all state is passed2803 behaves like group issues statistics2804 returns issues statistics2805 closed state is treated as all state2806 behaves like group issues statistics2807 returns issues statistics2808 opened state is treated as all state2809 behaves like group issues statistics2810 returns issues statistics2811 when filtering by milestone and no state treated as all state2812 behaves like group issues statistics2813 returns issues statistics2814 when filtering by milestone and all state2815 behaves like group issues statistics2816 returns issues statistics2817 when filtering by milestone and closed state treated as all state2818 behaves like group issues statistics2819 returns issues statistics2820 when filtering by milestone and opened state treated as all state2821 behaves like group issues statistics2822 returns issues statistics2823 when user is a group member2824 also returns subgroups projects issues2825 also returns subgroups public projects issues filtered by milestone2826 issues_statistics2827 no state is treated as all state2828 behaves like group issues statistics2829 returns issues statistics2830 statistics when all state is passed2831 behaves like group issues statistics2832 returns issues statistics2833 closed state is treated as all state2834 behaves like group issues statistics2835 returns issues statistics2836 opened state is treated as all state2837 behaves like group issues statistics2838 returns issues statistics2839 when filtering by milestone and no state treated as all state2840 behaves like group issues statistics2841 returns issues statistics2842 when filtering by milestone and all state2843 behaves like group issues statistics2844 returns issues statistics2845 when filtering by milestone and closed state treated as all state2846 behaves like group issues statistics2847 returns issues statistics2848 when filtering by milestone and opened state treated as all state2849 behaves like group issues statistics2850 returns issues statistics2851 when returns issue merge_requests_count for different access levels2852 behaves like accessible merge requests count2853 returns anonymous accessible merge requests count2854 returns guest accessible merge requests count2855 returns reporter accessible merge requests count2856 returns admin accessible merge requests count2857 when user is unauthenticated2858 lists all issues in public projects2859 also returns subgroups public projects issues filtered by milestone2860 issues_statistics2861 no state is treated as all state2862 behaves like group issues statistics2863 returns issues statistics2864 statistics when all state is passed2865 behaves like group issues statistics2866 returns issues statistics2867 closed state is treated as all state2868 behaves like group issues statistics2869 returns issues statistics2870 opened state is treated as all state2871 behaves like group issues statistics2872 returns issues statistics2873 when filtering by milestone and no state treated as all state2874 behaves like group issues statistics2875 returns issues statistics2876 when filtering by milestone and all state2877 behaves like group issues statistics2878 returns issues statistics2879 when filtering by milestone and closed state treated as all state2880 behaves like group issues statistics2881 returns issues statistics2882 when filtering by milestone and opened state treated as all state2883 behaves like group issues statistics2884 returns issues statistics2885 when user is a group member2886 exposes known attributes2887 returns all group issues (including opened and closed)2888 returns group issues without confidential issues for non project members2889 returns group confidential issues for author2890 returns group confidential issues for assignee2891 returns group issues with confidential issues for project members2892 returns group confidential issues for admin2893 returns only confidential issues2894 returns only public issues2895 returns an array of labeled group issues2896 returns an array of labeled group issues with labels param as array2897 returns an array of labeled group issues where all labels match2898 returns an array of labeled group issues where all labels match with labels param as array2899 returns issues matching given search string for title2900 returns issues matching given search string for description2901 returns an array of issues found by iids2902 returns an empty array if iid does not exist2903 returns an empty array if no group issue matches labels2904 returns an array of group issues with any label2905 returns an array of group issues with any label with labels param as array2906 returns an array of group issues with no label2907 returns an array of group issues with no label with labels param as array2908 returns an empty array if no issue matches milestone2909 returns an empty array if milestone does not exist2910 returns an array of issues in given milestone2911 returns an array of issues matching state in milestone2912 returns an array of issues with no milestone2913 sorts ascending when requested2914 sorts by updated_at descending when requested2915 sorts by updated_at ascending when requested2916 with labeled issues2917 behaves like labeled issues with labels and label_name params2918 array of labeled issues when all labels match2919 behaves like returns label names2920 returns label names2921 array of labeled issues when all labels match with labels param as array2922 behaves like returns label names2923 returns label names2924 negation2925 array of labeled issues when all labels match with negation2926 behaves like returns negated label names2927 returns label names2928 array of labeled issues when all labels match with negation with label params as array2929 behaves like returns negated label names2930 returns label names2931 when with_labels_details provided2932 array of labeled issues when all labels match2933 behaves like returns basic label entity2934 returns basic label entity2935 array of labeled issues when all labels match with labels param as array2936 behaves like returns basic label entity2937 returns basic label entity2938 without sort params2939 sorts by created_at descending by default2940 with 2 issues with same created_at2941 page breaks first page correctly2942 page breaks second page correctly2943 issues_statistics2944 no state is treated as all state2945 behaves like group issues statistics2946 returns issues statistics2947 statistics when all state is passed2948 behaves like group issues statistics2949 returns issues statistics2950 closed state is treated as all state2951 behaves like group issues statistics2952 returns issues statistics2953 opened state is treated as all state2954 behaves like group issues statistics2955 returns issues statistics2956 when filtering by milestone and no state treated as all state2957 behaves like group issues statistics2958 returns issues statistics2959 when filtering by milestone and all state2960 behaves like group issues statistics2961 returns issues statistics2962 when filtering by milestone and closed state treated as all state2963 behaves like group issues statistics2964 returns issues statistics2965 when filtering by milestone and opened state treated as all state2966 behaves like group issues statistics2967 returns issues statistics2968 sort does not affect statistics2969 behaves like group issues statistics2970 returns issues statistics2971 filtering by assignee_username2972 returns issues with by assignee_username2973 returns issues by assignee_username as string2974 returns error when multiple assignees are passed2975 returns error when assignee_username and assignee_id are passed together2976Git LFS API and storage2977 when LFS is disabled2978 behaves like LFS http 501 response2979 behaves like LFS http expected response code and message2980 responds with the expected response code and message2981 project specific LFS settings2982 with LFS disabled globally2983 LFS disabled in project2984 when uploading2985 behaves like LFS http 501 response2986 behaves like LFS http expected response code and message2987 responds with the expected response code and message2988 when downloading2989 behaves like LFS http 501 response2990 behaves like LFS http expected response code and message2991 responds with the expected response code and message2992 LFS enabled in project2993 when uploading2994 behaves like LFS http 501 response2995 behaves like LFS http expected response code and message2996 responds with the expected response code and message2997 when downloading2998 behaves like LFS http 501 response2999 behaves like LFS http expected response code and message3000 responds with the expected response code and message3001 with LFS enabled globally3002 LFS disabled in project3003 when uploading3004 behaves like LFS http 403 response3005 behaves like LFS http expected response code and message3006 responds with the expected response code and message3007 when downloading3008 behaves like LFS http 403 response3009 behaves like LFS http expected response code and message3010 responds with the expected response code and message3011 LFS enabled in project3012 when uploading3013 behaves like LFS http 200 response3014 behaves like LFS http expected response code and message3015 responds with the expected response code and message3016 when downloading3017 behaves like LFS http 200 response3018 behaves like LFS http expected response code and message3019 responds with the expected response code and message3020 deprecated API3021 when fetching LFS object using deprecated API3022 behaves like deprecated request3023 behaves like LFS http expected response code and message3024 responds with the expected response code and message3025 when handling LFS request using deprecated API3026 behaves like deprecated request3027 behaves like LFS http expected response code and message3028 responds with the expected response code and message3029 when fetching LFS object3030 and request comes from gitlab-workhorse3031 without user being authorized3032 behaves like LFS http 401 response3033 behaves like LFS http expected response code and message3034 responds with the expected response code and message3035 with required headers3036 with user is authorized3037 and does not have project access3038 behaves like LFS http 404 response3039 behaves like LFS http expected response code and message3040 responds with the expected response code and message3041 and does have project access3042 behaves like responds with a file3043 responds with the file location3044 behaves like LFS http 200 response3045 behaves like LFS http expected response code and message3046 responds with the expected response code and message3047 when LFS uses object storage3048 when proxy download is enabled3049 responds with the workhorse send-url3050 behaves like LFS http 200 response3051 behaves like LFS http expected response code and message3052 responds with the expected response code and message3053 when proxy download is disabled3054 responds with redirect3055 responds with the file location3056 when deploy key is authorized3057 behaves like responds with a file3058 responds with the file location3059 behaves like LFS http 200 response3060 behaves like LFS http expected response code and message3061 responds with the expected response code and message3062 when using a user key (LFSToken)3063 when user allowed3064 behaves like responds with a file3065 responds with the file location3066 behaves like LFS http 200 response3067 behaves like LFS http expected response code and message3068 responds with the expected response code and message3069 when user password is expired3070 behaves like LFS http 401 response3071 behaves like LFS http expected response code and message3072 responds with the expected response code and message3073 when user is blocked3074 behaves like LFS http 401 response3075 behaves like LFS http expected response code and message3076 responds with the expected response code and message3077 when user not allowed3078 behaves like LFS http 404 response3079 behaves like LFS http expected response code and message3080 responds with the expected response code and message3081 when build is authorized as3082 administrator3083 behaves like can download LFS only from own projects3084 for owned project3085 behaves like responds with a file3086 responds with the file location3087 behaves like LFS http 200 response3088 behaves like LFS http expected response code and message3089 responds with the expected response code and message3090 for member of project3091 behaves like responds with a file3092 responds with the file location3093 behaves like LFS http 200 response3094 behaves like LFS http expected response code and message3095 responds with the expected response code and message3096 for other project3097 rejects downloading code3098 regular user3099 behaves like can download LFS only from own projects3100 for owned project3101 behaves like responds with a file3102 responds with the file location3103 behaves like LFS http 200 response3104 behaves like LFS http expected response code and message3105 responds with the expected response code and message3106 for member of project3107 behaves like responds with a file3108 responds with the file location3109 behaves like LFS http 200 response3110 behaves like LFS http expected response code and message3111 responds with the expected response code and message3112 for other project3113 rejects downloading code3114 does not have user3115 behaves like can download LFS only from own projects3116 for owned project3117 behaves like responds with a file3118 responds with the file location3119 behaves like LFS http 200 response3120 behaves like LFS http expected response code and message3121 responds with the expected response code and message3122 for member of project3123 behaves like responds with a file3124 responds with the file location3125 behaves like LFS http 200 response3126 behaves like LFS http expected response code and message3127 responds with the expected response code and message3128 for other project3129 rejects downloading code3130 without required headers3131 behaves like LFS http 404 response3132 behaves like LFS http expected response code and message3133 responds with the expected response code and message3134 when handling LFS batch request3135 download3136 when user is authenticated3137 behaves like an authorized request3138 when downloading an LFS object that is assigned to our project3139 with href to download3140 behaves like LFS http 200 response3141 behaves like LFS http expected response code and message3142 responds with the expected response code and message3143 behaves like process authorization header3144 when the authorization comes from a user3145 returns a new valid LFS token authorization3146 returns a a valid token3147 generates only one new token per each request3148 when downloading an LFS object that is assigned to other project3149 with an 404 for specific object3150 behaves like LFS http 200 response3151 behaves like LFS http expected response code and message3152 responds with the expected response code and message3153 when downloading a LFS object that does not exist3154 with an 404 for specific object3155 behaves like LFS http 200 response3156 behaves like LFS http expected response code and message3157 responds with the expected response code and message3158 when downloading one new and one existing LFS object3159 responds with download hypermedia link for the new object3160 behaves like LFS http 200 response3161 behaves like LFS http expected response code and message3162 responds with the expected response code and message3163 behaves like process authorization header3164 when the authorization comes from a user3165 returns a new valid LFS token authorization3166 returns a a valid token3167 generates only one new token per each request3168 when downloading two existing LFS objects3169 responds with the download hypermedia link for each object3170 behaves like process authorization header3171 when the authorization comes from a user3172 returns a new valid LFS token authorization3173 returns a a valid token3174 generates only one new token per each request3175 when user does is not member of the project3176 behaves like LFS http 404 response3177 behaves like LFS http expected response code and message3178 responds with the expected response code and message3179 when user does not have download access3180 behaves like LFS http 403 response3181 behaves like LFS http expected response code and message3182 responds with the expected response code and message3183 when user password is expired3184 with an 404 for specific object3185 when user is blocked3186 behaves like LFS http 401 response3187 behaves like LFS http expected response code and message3188 responds with the expected response code and message3189 when using Deploy Tokens3190 when Deploy Token is valid3191 behaves like an authorized request3192 when downloading an LFS object that is assigned to our project3193 with href to download3194 behaves like LFS http 200 response3195 behaves like LFS http expected response code and message3196 responds with the expected response code and message3197 behaves like process authorization header3198 when the authorization comes from a token3199 returns the same authorization header3200 when downloading an LFS object that is assigned to other project3201 with an 404 for specific object3202 behaves like LFS http 200 response3203 behaves like LFS http expected response code and message3204 responds with the expected response code and message3205 when downloading a LFS object that does not exist3206 with an 404 for specific object3207 behaves like LFS http 200 response3208 behaves like LFS http expected response code and message3209 responds with the expected response code and message3210 when downloading one new and one existing LFS object3211 responds with download hypermedia link for the new object3212 behaves like LFS http 200 response3213 behaves like LFS http expected response code and message3214 responds with the expected response code and message3215 behaves like process authorization header3216 when the authorization comes from a token3217 returns the same authorization header3218 when downloading two existing LFS objects3219 responds with the download hypermedia link for each object3220 behaves like process authorization header3221 when the authorization comes from a token3222 returns the same authorization header3223 when Deploy Token is not valid3224 behaves like LFS http 401 response3225 behaves like LFS http expected response code and message3226 responds with the expected response code and message3227 when Deploy Token is not related to the project3228 behaves like LFS http 404 response3229 behaves like LFS http expected response code and message3230 responds with the expected response code and message3231 when build is authorized as3232 administrator3233 behaves like can download LFS only from own projects3234 for own project3235 behaves like an authorized request3236 when downloading an LFS object that is assigned to our project3237 with href to download3238 behaves like LFS http 200 response3239 behaves like LFS http expected response code and message3240 responds with the expected response code and message3241 behaves like process authorization header3242 when the authorization comes from a user3243 returns a new valid LFS token authorization3244 returns a a valid token3245 generates only one new token per each request3246 when downloading an LFS object that is assigned to other project3247 with an 404 for specific object3248 behaves like LFS http 200 response3249 behaves like LFS http expected response code and message3250 responds with the expected response code and message3251 when downloading a LFS object that does not exist3252 with an 404 for specific object3253 behaves like LFS http 200 response3254 behaves like LFS http expected response code and message3255 responds with the expected response code and message3256 when downloading one new and one existing LFS object3257 responds with download hypermedia link for the new object3258 behaves like LFS http 200 response3259 behaves like LFS http expected response code and message3260 responds with the expected response code and message3261 behaves like process authorization header3262 when the authorization comes from a user3263 returns a new valid LFS token authorization3264 returns a a valid token3265 generates only one new token per each request3266 when downloading two existing LFS objects3267 responds with the download hypermedia link for each object3268 behaves like process authorization header3269 when the authorization comes from a user3270 returns a new valid LFS token authorization3271 returns a a valid token3272 generates only one new token per each request3273 for other project3274 rejects downloading code3275 regular user3276 behaves like can download LFS only from own projects3277 for own project3278 behaves like an authorized request3279 when downloading an LFS object that is assigned to our project3280 with href to download3281 behaves like LFS http 200 response3282 behaves like LFS http expected response code and message3283 responds with the expected response code and message3284 behaves like process authorization header3285 when the authorization comes from a user3286 returns a new valid LFS token authorization3287 returns a a valid token3288 generates only one new token per each request3289 when downloading an LFS object that is assigned to other project3290 with an 404 for specific object3291 behaves like LFS http 200 response3292 behaves like LFS http expected response code and message3293 responds with the expected response code and message3294 when downloading a LFS object that does not exist3295 with an 404 for specific object3296 behaves like LFS http 200 response3297 behaves like LFS http expected response code and message3298 responds with the expected response code and message3299 when downloading one new and one existing LFS object3300 responds with download hypermedia link for the new object3301 behaves like LFS http 200 response3302 behaves like LFS http expected response code and message3303 responds with the expected response code and message3304 behaves like process authorization header3305 when the authorization comes from a user3306 returns a new valid LFS token authorization3307 returns a a valid token3308 generates only one new token per each request3309 when downloading two existing LFS objects3310 responds with the download hypermedia link for each object3311 behaves like process authorization header3312 when the authorization comes from a user3313 returns a new valid LFS token authorization3314 returns a a valid token3315 generates only one new token per each request3316 for other project3317 rejects downloading code3318 does not have user3319 behaves like can download LFS only from own projects3320 for own project3321 behaves like an authorized request3322 when downloading an LFS object that is assigned to our project3323 with href to download3324 behaves like LFS http 200 response3325 behaves like LFS http expected response code and message3326 responds with the expected response code and message3327 behaves like process authorization header3328 when the authorization comes from a token3329 returns the same authorization header3330 when downloading an LFS object that is assigned to other project3331 with an 404 for specific object3332 behaves like LFS http 200 response3333 behaves like LFS http expected response code and message3334 responds with the expected response code and message3335 when downloading a LFS object that does not exist3336 with an 404 for specific object3337 behaves like LFS http 200 response3338 behaves like LFS http expected response code and message3339 responds with the expected response code and message3340 when downloading one new and one existing LFS object3341 responds with download hypermedia link for the new object3342 behaves like LFS http 200 response3343 behaves like LFS http expected response code and message3344 responds with the expected response code and message3345 behaves like process authorization header3346 when the authorization comes from a token3347 returns the same authorization header3348 when downloading two existing LFS objects3349 responds with the download hypermedia link for each object3350 behaves like process authorization header3351 when the authorization comes from a token3352 returns the same authorization header3353 for other project3354 rejects downloading code3355 when user is not authenticated3356 is accessing public project3357 returns href to download3358 behaves like LFS http 200 response3359 behaves like LFS http expected response code and message3360 responds with the expected response code and message3361 is accessing non-public project3362 behaves like LFS http 401 response3363 behaves like LFS http expected response code and message3364 responds with the expected response code and message3365 upload3366 when request is authenticated3367 when user has project push access3368 when pushing an LFS object that already exists3369 responds with links the object to the project3370 behaves like LFS http 200 response3371 behaves like LFS http expected response code and message3372 responds with the expected response code and message3373 behaves like process authorization header3374 when the authorization comes from a user3375 returns a new valid LFS token authorization3376 returns a a valid token3377 generates only one new token per each request3378 when pushing a LFS object that does not exist3379 behaves like pushes new LFS objects3380 responds with upload hypermedia link3381 behaves like LFS http 200 response3382 behaves like LFS http expected response code and message3383 responds with the expected response code and message3384 behaves like process authorization header3385 when the authorization comes from a user3386 returns a new valid LFS token authorization3387 returns a a valid token3388 generates only one new token per each request3389 when pushing one new and one existing LFS object3390 responds with upload hypermedia link for the new object3391 behaves like LFS http 200 response3392 behaves like LFS http expected response code and message3393 responds with the expected response code and message3394 behaves like process authorization header3395 when the authorization comes from a user3396 returns a new valid LFS token authorization3397 returns a a valid token3398 generates only one new token per each request3399 when user does not have push access3400 behaves like LFS http 403 response3401 behaves like LFS http expected response code and message3402 responds with the expected response code and message3403 when build is authorized3404 build has an user3405 tries to push to own project3406 behaves like LFS http 403 response3407 behaves like LFS http expected response code and message3408 responds with the expected response code and message3409 tries to push to other project3410 behaves like LFS http 403 response3411 behaves like LFS http expected response code and message3412 responds with the expected response code and message3413 does not have user3414 behaves like LFS http 403 response3415 behaves like LFS http expected response code and message3416 responds with the expected response code and message3417 when deploy key has project push access3418 behaves like pushes new LFS objects3419 responds with upload hypermedia link3420 behaves like LFS http 200 response3421 behaves like LFS http expected response code and message3422 responds with the expected response code and message3423 behaves like process authorization header3424 when the authorization comes from a token3425 returns the same authorization header3426 when user is not authenticated3427 when user has push access3428 behaves like LFS http 401 response3429 behaves like LFS http expected response code and message3430 responds with the expected response code and message3431 when user does not have push access3432 behaves like LFS http 401 response3433 behaves like LFS http expected response code and message3434 responds with the expected response code and message3435 unsupported3436 behaves like LFS http 404 response3437 behaves like LFS http expected response code and message3438 responds with the expected response code and message3439 when handling LFS batch request on a read-only GitLab instance3440 when downloading3441 behaves like LFS http 200 response3442 behaves like LFS http expected response code and message3443 responds with the expected response code and message3444 when uploading3445 behaves like LFS http expected response code and message3446 responds with the expected response code and message3447 when pushing a LFS object3448 to one project3449 when user is authenticated3450 when user has push access to the project3451 and the request bypassed workhorse3452 raises an exception3453 and request is sent by gitlab-workhorse to authorize the request3454 when using local storage3455 behaves like a local file3456 behaves like a valid response3457 uses the gitlab-workhorse content type3458 responds with status 200, location of LFS store and object details3459 behaves like LFS http 200 response3460 behaves like LFS http expected response code and message3461 responds with the expected response code and message3462 when using remote storage3463 when direct upload is enabled3464 behaves like a valid response3465 uses the gitlab-workhorse content type3466 responds with status 200, location of LFS remote store and object details3467 behaves like LFS http 200 response3468 behaves like LFS http expected response code and message3469 responds with the expected response code and message3470 when direct upload is disabled3471 behaves like a local file3472 behaves like a valid response3473 uses the gitlab-workhorse content type3474 responds with status 200, location of LFS store and object details3475 behaves like LFS http 200 response3476 behaves like LFS http expected response code and message3477 responds with the expected response code and message3478 and request is sent by gitlab-workhorse to finalize the upload3479 LFS object is linked to the project3480 behaves like LFS http 200 response3481 behaves like LFS http expected response code and message3482 responds with the expected response code and message3483 and request to finalize the upload is not sent by gitlab-workhorse3484 fails with a JWT decode error3485 and workhorse requests upload finalize for a new LFS object3486 with object storage disabled3487 doesn't attempt to migrate file to object storage3488 with object storage enabled3489 and direct upload enabled3490 with invalid remote_id: 1231233491 responds with status 4033492 with invalid remote_id: ../../1231233493 responds with status 4033494 with valid remote_id3495 responds with status 2003496 schedules migration of file to object storage3497 have valid file3498 and background upload enabled3499 schedules migration of file to object storage3500 invalid tempfiles3501 rejects slashes in the tempfile name (path traversal)3502 and user does not have push access3503 behaves like forbidden3504 and request is sent by gitlab-workhorse to authorize the request3505 behaves like LFS http 403 response3506 behaves like LFS http expected response code and message3507 responds with the expected response code and message3508 and request is sent by gitlab-workhorse to finalize the upload3509 behaves like LFS http 403 response3510 behaves like LFS http expected response code and message3511 responds with the expected response code and message3512 and request is sent with a malformed headers3513 behaves like LFS http 403 response3514 behaves like LFS http expected response code and message3515 responds with the expected response code and message3516 when build is authorized3517 build has an user3518 tries to push to own project3519 behaves like LFS http 403 response3520 behaves like LFS http expected response code and message3521 responds with the expected response code and message3522 tries to push to other project3523 behaves like LFS http 404 response3524 behaves like LFS http expected response code and message3525 responds with the expected response code and message3526 does not have user3527 behaves like LFS http 404 response3528 behaves like LFS http expected response code and message3529 responds with the expected response code and message3530 when using a user key (LFSToken)3531 when user allowed3532 behaves like LFS http 200 response3533 behaves like LFS http expected response code and message3534 responds with the expected response code and message3535 when user password is expired3536 behaves like LFS http 401 response3537 behaves like LFS http expected response code and message3538 responds with the expected response code and message3539 when user is blocked3540 behaves like LFS http 401 response3541 behaves like LFS http expected response code and message3542 responds with the expected response code and message3543 when user not allowed3544 behaves like LFS http 404 response3545 behaves like LFS http expected response code and message3546 responds with the expected response code and message3547 for unauthenticated3548 behaves like unauthorized3549 and request is sent by gitlab-workhorse to authorize the request3550 behaves like LFS http 401 response3551 behaves like LFS http expected response code and message3552 responds with the expected response code and message3553 and request is sent by gitlab-workhorse to finalize the upload3554 behaves like LFS http 401 response3555 behaves like LFS http expected response code and message3556 responds with the expected response code and message3557 and request is sent with a malformed headers3558 behaves like LFS http 401 response3559 behaves like LFS http expected response code and message3560 responds with the expected response code and message3561 to a forked project3562 when user is authenticated3563 when user has push access to the project3564 and request is sent by gitlab-workhorse to authorize the request3565 with location of LFS store and object details3566 behaves like LFS http 200 response3567 behaves like LFS http expected response code and message3568 responds with the expected response code and message3569 and request is sent by gitlab-workhorse to finalize the upload3570 LFS object is linked to the source project3571 behaves like LFS http 200 response3572 behaves like LFS http expected response code and message3573 responds with the expected response code and message3574 and user does not have push access3575 behaves like forbidden3576 and request is sent by gitlab-workhorse to authorize the request3577 behaves like LFS http 403 response3578 behaves like LFS http expected response code and message3579 responds with the expected response code and message3580 and request is sent by gitlab-workhorse to finalize the upload3581 behaves like LFS http 403 response3582 behaves like LFS http expected response code and message3583 responds with the expected response code and message3584 and request is sent with a malformed headers3585 behaves like LFS http 403 response3586 behaves like LFS http expected response code and message3587 responds with the expected response code and message3588 when build is authorized3589 build has an user3590 tries to push to own project3591 behaves like LFS http 403 response3592 behaves like LFS http expected response code and message3593 responds with the expected response code and message3594 tries to push to other project3595 behaves like LFS http 403 response3596 behaves like LFS http expected response code and message3597 responds with the expected response code and message3598 does not have user3599 behaves like LFS http 403 response3600 behaves like LFS http expected response code and message3601 responds with the expected response code and message3602 for unauthenticated3603 behaves like unauthorized3604 and request is sent by gitlab-workhorse to authorize the request3605 behaves like LFS http 401 response3606 behaves like LFS http expected response code and message3607 responds with the expected response code and message3608 and request is sent by gitlab-workhorse to finalize the upload3609 behaves like LFS http 401 response3610 behaves like LFS http expected response code and message3611 responds with the expected response code and message3612 and request is sent with a malformed headers3613 behaves like LFS http 401 response3614 behaves like LFS http expected response code and message3615 responds with the expected response code and message3616 and second project not related to fork or a source project3617 when pushing the same LFS object to the second project3618 links the LFS object to the project3619 behaves like LFS http 200 response3620 behaves like LFS http expected response code and message3621 responds with the expected response code and message3622API::Todos3623 GET /todos3624 avoids N+1 queries3625 when unauthenticated3626 returns authentication error3627 when authenticated3628 returns an array of pending todos for current user3629 and using the author filter3630 filters based on author_id param3631 and using the type filter3632 filters based on type param3633 and using the state filter3634 filters based on state param3635 and using the project filter3636 filters based on project_id param3637 and using the group filter3638 filters based on project_id param3639 and using the action filter3640 filters based on action param3641 POST /todos/:id/mark_as_done3642 when unauthenticated3643 returns authentication error3644 when authenticated3645 marks a todo as done3646 updates todos cache3647 returns 404 if the todo does not belong to the current user3648 POST /mark_as_done3649 when unauthenticated3650 returns authentication error3651 when authenticated3652 marks all todos as done3653 updates todos cache3654 POST :id/issuable_type/:issueable_id/todo3655 for an issue3656 behaves like an issuable3657 creates a todo on an issuable3658 returns 304 there already exist a todo on that issuable3659 returns 404 if the issuable is not found3660 returns an error if the issuable is not accessible3661 for a merge request3662 behaves like an issuable3663 creates a todo on an issuable3664 returns 304 there already exist a todo on that issuable3665 returns 404 if the issuable is not found3666 returns an error if the issuable is not accessible3667API::Issues3668 POST /projects/:id/issues3669 creates a new project issue3670 creates a new project issue with labels param as array3671 creates a new confidential project issue3672 creates a new confidential project issue with a different param3673 creates a public issue when confidential param is false3674 creates a public issue when confidential param is invalid3675 returns a 400 bad request if title not given3676 allows special label names3677 allows special label names with labels param as array3678 returns 400 if title is too long3679 support for deprecated assignee_id3680 creates a new project issue3681 creates a new project issue when assignee_id is empty3682 single assignee restrictions3683 creates a new project issue with no more than one assignee3684 user does not have permissions to create issue3685 renders 4033686 an internal ID is provided3687 by an admin3688 sets the internal ID on the new issue3689 by an owner3690 sets the internal ID on the new issue3691 by a group owner3692 sets the internal ID on the new issue3693 by another user3694 ignores the given internal ID3695 resolving discussions3696 resolving all discussions in a merge request3697 behaves like creating an issue resolving discussions through the API3698 creates a new project issue3699 resolves the discussions in a merge request3700 assigns a description to the issue mentioning the merge request3701 resolving a single discussion3702 behaves like creating an issue resolving discussions through the API3703 creates a new project issue3704 resolves the discussions in a merge request3705 assigns a description to the issue mentioning the merge request3706 with due date3707 creates a new project issue3708 setting created_at3709 by an admin3710 sets the creation time on the new issue3711 by a project owner3712 sets the creation time on the new issue3713 by a group owner3714 sets the creation time on the new issue3715 by another user3716 ignores the given creation time3717 the user can only read the issue3718 cannot create new labels3719 cannot create new labels with labels param as array3720 POST /projects/:id/issues with spam filtering3721 when allow_possible_spam feature flag is false3722 does not create a new project issue3723 returns correct status and message3724 creates a new spam log entry3725 when allow_possible_spam feature flag is true3726 does creates a new project issue3727 returns correct status3728 creates a new spam log entry3729 /projects/:id/issues/:issue_iid/move3730 moves an issue3731 moves the issue to another namespace if I am admin3732 when source and target projects are the same3733 returns 400 when trying to move an issue3734 when the user does not have the permission to move issues3735 returns 400 when trying to move an issue3736 when using the issue ID instead of iid3737 returns 404 when trying to move an issue3738 when issue does not exist3739 returns 404 when trying to move an issue3740 when source project does not exist3741 returns 404 when trying to move an issue3742 when target project does not exist3743 returns 404 when trying to move an issue3744 POST :id/issues/:issue_iid/subscribe3745 subscribes to an issue3746 returns 304 if already subscribed3747 returns 404 if the issue is not found3748 returns 404 if the issue ID is used instead of the iid3749 returns 404 if the issue is confidential3750 POST :id/issues/:issue_id/unsubscribe3751 unsubscribes from an issue3752 returns 304 if not subscribed3753 returns 404 if the issue is not found3754 returns 404 if using the issue ID instead of iid3755 returns 404 if the issue is confidential3756Projects::BranchesController3757 POST create with HTML format3758 on creation of a new branch3759 valid branch name, valid source3760 redirects3761 invalid branch name, valid ref3762 redirects3763 valid branch name, invalid ref3764 should render template new3765 invalid branch name, invalid ref3766 should render template new3767 valid branch name with encoded slashes3768 should render template new3769 example at ./spec/controllers/projects/branches_controller_spec.rb:693770 created from the new branch button on issues3771 redirects3772 posts a system note3773 confidential_issue_project_id is present3774 create_confidential_merge_request feature is enabled3775 user cannot update issue3776 does not post a system note3777 user can update issue3778 issue is under the specified project3779 posts a system note3780 issue is not under the specified project3781 does not post a system note3782 create_confidential_merge_request feature is disabled3783 posts a system note on project3784 repository-less project3785 redirects to newly created branch3786 redirects to autodeploy setup page3787 when user configured kubernetes from CI/CD > Clusters3788 redirects to autodeploy setup page3789 when create branch service fails3790 doesn't post a system note3791 without issue feature access3792 doesn't post a system note3793 POST create with JSON format3794 with valid params3795 returns a successful 200 response3796 returns the created branch3797 with invalid params3798 returns an unprocessable entity 422 response3799 POST destroy with HTML format3800 returns 3033801 POST destroy3802 as JS3803 valid branch name, valid source3804 should respond with numeric status code 2003805 should be blank3806 valid branch name with unencoded slashes3807 should respond with numeric status code 2003808 should be blank3809 valid branch name with encoded slashes3810 should respond with numeric status code 2003811 should be blank3812 invalid branch name, valid ref3813 should respond with numeric status code 4043814 should be blank3815 as JSON3816 valid branch name, valid source3817 returns JSON response with message3818 should respond with numeric status code 2003819 valid branch name with unencoded slashes3820 returns JSON response with message3821 should respond with numeric status code 2003822 valid branch name with encoded slashes3823 returns JSON response with message3824 should respond with numeric status code 2003825 invalid branch name, valid ref3826 returns JSON response with message3827 should respond with numeric status code 4043828 as HTML3829 redirects to branches path3830 DELETE destroy_all_merged3831 when user is allowed to push3832 redirects to branches3833 starts worker to delete merged branches3834 when user is not allowed to push3835 responds with status 4043836 GET index3837 when rendering a JSON format3838 filters branches by name3839 when cache is enabled yet cold3840 return with a status 2003841 when branch contains an invalid UTF-8 sequence3842 return with a status 2003843 when deprecated sort/search/page parameters are specified3844 returns with a status 301 when sort specified3845 returns with a status 301 when search specified3846 returns with a status 301 when page specified3847 GET diverging_commit_counts3848 returns the commit counts behind and ahead of default branch3849 returns the commits counts with no names provided3850 with many branches3851 returns 422 if no names are specified3852 returns the list of counts3853Projects::SnippetsController3854 GET #index3855 behaves like paginated collection3856 renders a page number that is not ouf of range3857 redirects to last_page if page number is larger than number of pages3858 does not redirect to external sites when provided a host field3859 when the project snippet is private3860 when anonymous3861 does not include the private snippet3862 when signed in as the author3863 renders the snippet3864 when signed in as a project member3865 renders the snippet3866 POST #create3867 creates the snippet correctly3868 when the snippet is spam3869 when the snippet is private3870 creates the snippet3871 when the snippet is public3872 rejects the shippet3873 creates a spam log3874 renders :new with recaptcha disabled3875 recaptcha enabled3876 renders :verify with recaptcha enabled3877 renders snippet page when recaptcha verified3878 PUT #update3879 when the snippet is spam3880 when the snippet is private3881 updates the snippet3882 when the snippet is public3883 rejects the shippet3884 creates a spam log3885 renders :edit with recaptcha disabled3886 recaptcha enabled3887 renders :verify with recaptcha enabled3888 renders snippet page when recaptcha verified3889 when the private snippet is made public3890 rejects the shippet3891 creates a spam log3892 renders :edit with recaptcha disabled3893 recaptcha enabled3894 renders :verify with recaptcha enabled3895 renders snippet page when recaptcha verified3896 POST #mark_as_spam3897 updates the snippet3898 GET #show3899 when the project snippet is private3900 when anonymous3901 responds with status 4043902 when signed in as the author3903 renders the snippet3904 when signed in as a project member3905 renders the snippet3906 when the project snippet does not exist3907 when anonymous3908 responds with status 4043909 when signed in3910 responds with status 4043911 GET #raw3912 when the project snippet is private3913 when anonymous3914 responds with status 4043915 when signed in as the author3916 renders the snippet3917 when signed in as a project member3918 renders the snippet3919 when the project snippet does not exist3920 when anonymous3921 responds with status 4043922 when signed in3923 responds with status 4043924 GET #show for embeddable content3925 when snippet is private3926 responds with status 4043927 when snippet is public3928 responds with status 2003929 when the project is private3930 when snippet is public3931 responds with status 4043932 GET #raw3933 CRLF line ending3934 returns LF line endings by default3935 does not convert line endings when parameter present3936Projects::Clusters::ApplicationsController3937 POST create3938 functionality3939 schedule an application installation3940 when cluster do not exists3941 return 4043942 when application is unknown3943 return 4043944 when application is already installing3945 returns 4003946 security3947 behaves like a secure endpoint3948 should be allowed for admin. Expected: 200,201,204,302 Got: 2043949 should be allowed for owner. Expected: 200,201,204,302 Got: 2043950 should be allowed for maintainer. Expected: 200,201,204,302 Got: 2043951 should be denied for developer. Expected: 401,404 Got: 4043952 should be denied for reporter. Expected: 401,404 Got: 4043953 should be denied for guest. Expected: 401,404 Got: 4043954 should be denied for user. Expected: 401,404 Got: 4043955 should be denied for external. Expected: 401,404 Got: 4043956 PATCH update3957 functionality3958 when cluster and app exists3959 schedules an application update3960 when cluster do not exists3961 should respond with a not_found status code (404)3962 when application is unknown3963 should respond with a not_found status code (404)3964 when application is already scheduled3965 should respond with status code :bad_request (400)3966 security3967 behaves like a secure endpoint3968 should be allowed for admin. Expected: 200,201,204,302 Got: 2043969 should be allowed for owner. Expected: 200,201,204,302 Got: 2043970 should be allowed for maintainer. Expected: 200,201,204,302 Got: 2043971 should be denied for developer. Expected: 401,404 Got: 4043972 should be denied for reporter. Expected: 401,404 Got: 4043973 should be denied for guest. Expected: 401,404 Got: 4043974 should be denied for user. Expected: 401,404 Got: 4043975 should be denied for external. Expected: 401,404 Got: 4043976 DELETE destroy3977 functionality3978 when cluster and app exists3979 schedules an application update3980 when cluster do not exists3981 should respond with a not_found status code (404)3982 when application is unknown3983 should respond with a not_found status code (404)3984 when application is already scheduled3985 should respond with status code :bad_request (400)3986 security3987 behaves like a secure endpoint3988 should be allowed for admin. Expected: 200,201,204,302 Got: 2043989 should be allowed for owner. Expected: 200,201,204,302 Got: 2043990 should be allowed for maintainer. Expected: 200,201,204,302 Got: 2043991 should be denied for developer. Expected: 401,404 Got: 4043992 should be denied for reporter. Expected: 401,404 Got: 4043993 should be denied for guest. Expected: 401,404 Got: 4043994 should be denied for user. Expected: 401,404 Got: 4043995 should be denied for external. Expected: 401,404 Got: 4043996API::Deployments3997 GET /projects/:id/deployments3998 as member of the project3999 returns projects deployments sorted by id asc4000 ordering4001 order_by: "created_at", sort: "asc", ordered_deployments: [:deployment_3, :deployment_2, :deployment_1]4002 returns the deployments ordered4003 order_by: "created_at", sort: "desc", ordered_deployments: [:deployment_1, :deployment_2, :deployment_3]4004 returns the deployments ordered4005 order_by: "id", sort: "asc", ordered_deployments: [:deployment_1, :deployment_2, :deployment_3]4006 returns the deployments ordered4007 order_by: "id", sort: "desc", ordered_deployments: [:deployment_3, :deployment_2, :deployment_1]4008 returns the deployments ordered4009 order_by: "iid", sort: "asc", ordered_deployments: [:deployment_3, :deployment_1, :deployment_2]4010 returns the deployments ordered4011 order_by: "iid", sort: "desc", ordered_deployments: [:deployment_2, :deployment_1, :deployment_3]4012 returns the deployments ordered4013 order_by: "ref", sort: "asc", ordered_deployments: [:deployment_2, :deployment_1, :deployment_3]4014 returns the deployments ordered4015 order_by: "ref", sort: "desc", ordered_deployments: [:deployment_3, :deployment_1, :deployment_2]4016 returns the deployments ordered4017 as non member4018 returns a 404 status code4019 GET /projects/:id/deployments/:deployment_id4020 as a member of the project4021 returns the projects deployment4022 as non member4023 returns a 404 status code4024 POST /projects/:id/deployments4025 as a maintainer4026 creates a new deployment4027 errors when creating a deployment with an invalid name4028 as a developer4029 creates a new deployment4030 as non member4031 returns a 404 status code4032 PUT /projects/:id/deployments/:deployment_id4033 as a maintainer4034 returns a 403 when updating a deployment with a build4035 updates a deployment without an associated build4036 as a developer4037 returns a 403 when updating a deployment with a build4038 updates a deployment without an associated build4039 as non member4040 returns a 404 status code4041API::Search4042 GET /search4043 when user is not authenticated4044 returns 401 error4045 when scope is not supported4046 returns 400 error4047 when scope is missing4048 returns 400 error4049 with correct params4050 for projects scope4051 behaves like response is correct4052 should respond with numeric status code 2004053 should match response schema "public_api/v4/projects"4054 should include limited pagination headers4055 should eq 14056 for issues scope4057 behaves like response is correct4058 should respond with numeric status code 2004059 should match response schema "public_api/v4/issues"4060 should include limited pagination headers4061 should eq 14062 for merge_requests scope4063 behaves like response is correct4064 should respond with numeric status code 2004065 should match response schema "public_api/v4/merge_requests"4066 should include limited pagination headers4067 should eq 14068 for milestones scope4069 when user can read project milestones4070 behaves like response is correct4071 should respond with numeric status code 2004072 should match response schema "public_api/v4/milestones"4073 should include limited pagination headers4074 should eq 14075 when user cannot read project milestones4076 returns empty array4077 for users scope4078 behaves like response is correct4079 should respond with numeric status code 2004080 should match response schema "public_api/v4/user/basics"4081 should include limited pagination headers4082 should eq 14083 when users search feature is disabled4084 returns 400 error4085 for snippet_titles scope4086 behaves like response is correct4087 should respond with numeric status code 2004088 should match response schema "public_api/v4/snippets"4089 should include limited pagination headers4090 should eq 14091 for snippet_blobs scope4092 behaves like response is correct4093 should respond with numeric status code 2004094 should match response schema "public_api/v4/snippets"4095 should include limited pagination headers4096 should eq 14097 GET /groups/:id/search4098 when user is not authenticated4099 returns 401 error4100 when scope is not supported4101 returns 400 error4102 when scope is missing4103 returns 400 error4104 when group does not exist4105 returns 404 error4106 when user does can not see the group4107 returns 404 error4108 with correct params4109 for projects scope4110 behaves like response is correct4111 should respond with numeric status code 2004112 should match response schema "public_api/v4/projects"4113 should include limited pagination headers4114 should eq 14115 for issues scope4116 behaves like response is correct4117 should respond with numeric status code 2004118 should match response schema "public_api/v4/issues"4119 should include limited pagination headers4120 should eq 14121 for merge_requests scope4122 behaves like response is correct4123 should respond with numeric status code 2004124 should match response schema "public_api/v4/merge_requests"4125 should include limited pagination headers4126 should eq 14127 for milestones scope4128 behaves like response is correct4129 should respond with numeric status code 2004130 should match response schema "public_api/v4/milestones"4131 should include limited pagination headers4132 should eq 14133 for milestones scope with group path as id4134 behaves like response is correct4135 should respond with numeric status code 2004136 should match response schema "public_api/v4/milestones"4137 should include limited pagination headers4138 should eq 14139 for users scope4140 behaves like response is correct4141 should respond with numeric status code 2004142 should match response schema "public_api/v4/user/basics"4143 should include limited pagination headers4144 should eq 14145 when users search feature is disabled4146 returns 400 error4147 for users scope with group path as id4148 behaves like response is correct4149 should respond with numeric status code 2004150 should match response schema "public_api/v4/user/basics"4151 should include limited pagination headers4152 should eq 14153 GET /projects/:id/search4154 when user is not authenticated4155 returns 401 error4156 when scope is not supported4157 returns 400 error4158 when scope is missing4159 returns 400 error4160 when project does not exist4161 returns 404 error4162 when user does can not see the project4163 returns 404 error4164 with correct params4165 for issues scope4166 behaves like response is correct4167 should respond with numeric status code 2004168 should match response schema "public_api/v4/issues"4169 should include limited pagination headers4170 should eq 14171 for merge_requests scope4172 behaves like response is correct4173 should respond with numeric status code 2004174 should match response schema "public_api/v4/merge_requests"4175 should include limited pagination headers4176 should eq 14177 for milestones scope4178 when user can read milestones4179 behaves like response is correct4180 should respond with numeric status code 2004181 should match response schema "public_api/v4/milestones"4182 should include limited pagination headers4183 should eq 14184 when user cannot read project milestones4185 returns empty array4186 for users scope4187 behaves like response is correct4188 should respond with numeric status code 2004189 should match response schema "public_api/v4/user/basics"4190 should include limited pagination headers4191 should eq 14192 when users search feature is disabled4193 returns 400 error4194 for notes scope4195 behaves like response is correct4196 should respond with numeric status code 2004197 should match response schema "public_api/v4/notes"4198 should include limited pagination headers4199 should eq 14200 for wiki_blobs scope4201 behaves like response is correct4202 should respond with numeric status code 2004203 should match response schema "public_api/v4/blobs"4204 should include limited pagination headers4205 should eq 14206 for commits scope4207 behaves like response is correct4208 should respond with numeric status code 2004209 should match response schema "public_api/v4/commits_details"4210 should include limited pagination headers4211 should eq 14212 for commits scope with project path as id4213 behaves like response is correct4214 should respond with numeric status code 2004215 should match response schema "public_api/v4/commits_details"4216 should include limited pagination headers4217 should eq 14218 for blobs scope4219 behaves like response is correct4220 should respond with numeric status code 2004221 should match response schema "public_api/v4/blobs"4222 should include limited pagination headers4223 should eq 24224 filters4225 by filename4226 by path4227 by extension4228 by ref4229Private Project Pages Access4230 Project should be private4231 #private?4232 should be truthy4233 GET /projects/:id/pages_access4234 access depends on the level4235 pages_access_level: 0, with_user: "admin", expected_result: 4034236 correct return value4237 pages_access_level: 0, with_user: "owner", expected_result: 4034238 correct return value4239 pages_access_level: 0, with_user: "master", expected_result: 4034240 correct return value4241 pages_access_level: 0, with_user: "developer", expected_result: 4034242 correct return value4243 pages_access_level: 0, with_user: "reporter", expected_result: 4034244 correct return value4245 pages_access_level: 0, with_user: "guest", expected_result: 4034246 correct return value4247 pages_access_level: 0, with_user: "user", expected_result: 4044248 correct return value4249 pages_access_level: 0, with_user: nil, expected_result: 4044250 correct return value4251 pages_access_level: 30, with_user: "admin", expected_result: 2004252 correct return value4253 pages_access_level: 30, with_user: "owner", expected_result: 2004254 correct return value4255 pages_access_level: 30, with_user: "master", expected_result: 2004256 correct return value4257 pages_access_level: 30, with_user: "developer", expected_result: 2004258 correct return value4259 pages_access_level: 30, with_user: "reporter", expected_result: 2004260 correct return value4261 pages_access_level: 30, with_user: "guest", expected_result: 2004262 correct return value4263 pages_access_level: 30, with_user: "user", expected_result: 4044264 correct return value4265 pages_access_level: 30, with_user: nil, expected_result: 4044266 correct return value4267 pages_access_level: 20, with_user: "admin", expected_result: 2004268 correct return value4269 pages_access_level: 20, with_user: "owner", expected_result: 2004270 correct return value4271 pages_access_level: 20, with_user: "master", expected_result: 2004272 correct return value4273 pages_access_level: 20, with_user: "developer", expected_result: 2004274 correct return value4275 pages_access_level: 20, with_user: "reporter", expected_result: 2004276 correct return value4277 pages_access_level: 20, with_user: "guest", expected_result: 2004278 correct return value4279 pages_access_level: 20, with_user: "user", expected_result: 4044280 correct return value4281 pages_access_level: 20, with_user: nil, expected_result: 4044282 correct return value4283 pages_access_level: 10, with_user: "admin", expected_result: 2004284 correct return value4285 pages_access_level: 10, with_user: "owner", expected_result: 2004286 correct return value4287 pages_access_level: 10, with_user: "master", expected_result: 2004288 correct return value4289 pages_access_level: 10, with_user: "developer", expected_result: 2004290 correct return value4291 pages_access_level: 10, with_user: "reporter", expected_result: 2004292 correct return value4293 pages_access_level: 10, with_user: "guest", expected_result: 2004294 correct return value4295 pages_access_level: 10, with_user: "user", expected_result: 4044296 correct return value4297 pages_access_level: 10, with_user: nil, expected_result: 4044298 correct return value4299Projects::MergeRequests::ConflictsController4300 GET show4301 when the conflicts cannot be resolved in the UI4302 returns a 200 status code4303 returns JSON with a message4304 with valid conflicts4305 matches the schema4306 includes meta info about the MR4307 includes each file that has conflicts4308 splits files into sections with lines4309 has unique section IDs across files4310 GET conflict_for_path4311 when the conflicts cannot be resolved in the UI4312 returns a 404 status code4313 when the file does not exist cannot be resolved in the UI4314 returns a 404 status code4315 with an existing file4316 returns a 200 status code4317 returns the file in JSON format4318 POST resolve_conflicts4319 with valid params4320 creates a new commit on the branch4321 returns an OK response4322 when sections are missing4323 returns a 400 error4324 has a message with the name of the first missing section4325 does not create a new commit4326 when files are missing4327 returns a 400 error4328 has a message with the name of the missing file4329 does not create a new commit4330 when a file has identical content to the conflict4331 returns a 400 error4332 has a message with the path of the problem file4333 does not create a new commit4334Projects::ProjectMembersController4335 GET index4336 has the project_members address with a 200 status code4337 POST create4338 when user does not have enough rights4339 returns 4044340 when user has enough rights4341 adds user to members4342 adds no user to members4343 PUT update4344 can change the access level to Guest4345 can change the access level to Reporter4346 can change the access level to Developer4347 can change the access level to Maintainer4348 DELETE destroy4349 when member is not found4350 returns 4044351 when member is found4352 when user does not have enough rights4353 returns 4044354 when user has enough rights4355 [HTML] removes user from members4356 [JS] removes user from members4357 DELETE leave4358 when member is not found4359 returns 4044360 when member is found4361 and is not an owner4362 removes user from members4363 and is an owner4364 cannot remove themselves from the project4365 and is a requester4366 removes user from members4367 POST request_access4368 creates a new ProjectMember that is not a team member4369 POST approve4370 when member is not found4371 returns 4044372 when member is found4373 when user does not have enough rights4374 returns 4044375 when user has enough rights4376 adds user to members4377 POST apply_import4378 when user can access source project members4379 imports source project members4380 when user is not member of a source project4381 does not import team members4382 responds with not found4383 POST create4384 when creating owner4385 does not create a member4386 when create maintainer4387 creates a member4388Projects::EnvironmentsController4389 GET index4390 when a request for the HTML is made4391 responds with status code 2004392 expires etag cache to force reload environments list4393 when requesting JSON response for folders4394 with default parameters4395 responds with a flat payload describing available environments4396 sets the polling interval header4397 when a folder-based nested structure is requested4398 responds with a payload containing the latest environment for each folder4399 when requesting available environments scope4400 responds with a payload describing available environments4401 contains values describing environment scopes sizes4402 when requesting stopped environments scope4403 responds with a payload describing stopped environments4404 contains values describing environment scopes sizes4405 GET folder4406 when using default format4407 responds with HTML4408 when using JSON format4409 sorts the subfolders lexicographically4410 GET show4411 with valid id4412 responds with a status code 2004413 with invalid id4414 responds with a status code 4044415 GET edit4416 responds with a status code 2004417 PATCH #update4418 responds with a 3024419 PATCH #stop4420 when env not available4421 returns 4044422 when stop action4423 returns action url4424 when no stop action4425 returns env url4426 GET #terminal4427 with valid id4428 responds with a status code 2004429 loads the terminals for the environment4430 with invalid id4431 responds with a status code 4044432 GET #terminal_websocket_authorize4433 with valid workhorse signature4434 and valid id4435 returns the first terminal for the environment4436 and invalid id4437 returns 4044438 with invalid workhorse signature4439 aborts with an exception4440 GET #metrics_redirect4441DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "(CASE WHEN name = 'production' THEN 0 ELSE 1 END), id ASC". Non-attribute arguments will be disallowed in Rails 6.0. This method should not be called with user-provided values, such as request parameters or model attributes. Known-safe values can be passed by wrapping them in Arel.sql(). (called from default_environment at /builds/gitlab-org/gitlab/app/models/project.rb:1898)4442 redirects to environment if it exists4443DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "(CASE WHEN name = 'production' THEN 0 ELSE 1 END), id ASC". Non-attribute arguments will be disallowed in Rails 6.0. This method should not be called with user-provided values, such as request parameters or model attributes. Known-safe values can be passed by wrapping them in Arel.sql(). (called from default_environment at /builds/gitlab-org/gitlab/app/models/project.rb:1898)4444 redirects to empty page if no environment exists4445 GET #metrics4446 when environment has no metrics4447 returns a metrics page4448 when requesting metrics as JSON4449 returns a metrics JSON document4450 when environment has some metrics4451 returns a metrics JSON document4452 GET #additional_metrics4453 when environment has no metrics4454 when requesting metrics as JSON4455 returns a metrics JSON document4456 when environment has some metrics4457 returns a metrics JSON document4458 when time params are missing4459 raises an error when window params are missing4460 when only one time param is provided4461 raises an error when start is missing4462 raises an error when end is missing4463 GET #metrics_dashboard4464 behaves like the default dashboard4465 is the default dashboard4466 behaves like 200 response4467 behaves like correctly formatted response4468 returns a json object with the correct keys4469 behaves like includes all dashboards4470 includes info for all findable dashboard4471 behaves like dashboard can be specified4472 when dashboard is specified4473 behaves like error response4474 behaves like correctly formatted response4475 returns a json object with the correct keys4476 when the project dashboard is available4477 behaves like the specified dashboard4478 has the correct name4479 behaves like 200 response4480 behaves like correctly formatted response4481 returns a json object with the correct keys4482 behaves like includes all dashboards4483 includes info for all findable dashboard4484 when the dashboard cannot not be processed4485 behaves like error response4486 behaves like correctly formatted response4487 returns a json object with the correct keys4488 when the specified dashboard is the default dashboard4489 behaves like the default dashboard4490 is the default dashboard4491 behaves like 200 response4492 behaves like correctly formatted response4493 returns a json object with the correct keys4494 behaves like includes all dashboards4495 includes info for all findable dashboard4496 behaves like dashboard can be embedded4497 when the embedded flag is included4498 behaves like the default dynamic dashboard4499 behaves like specified dashboard embed4500 contains only the specified charts4501 behaves like 200 response4502 behaves like correctly formatted response4503 returns a json object with the correct keys4504 when incomplete dashboard params are provided4505 behaves like the default dynamic dashboard4506 behaves like specified dashboard embed4507 contains only the specified charts4508 behaves like 200 response4509 behaves like correctly formatted response4510 returns a json object with the correct keys4511 when invalid params are provided4512 behaves like the default dynamic dashboard4513 behaves like specified dashboard embed4514 contains only the specified charts4515 behaves like 200 response4516 behaves like correctly formatted response4517 returns a json object with the correct keys4518 when the dashboard is correctly specified4519 behaves like error response4520 behaves like correctly formatted response4521 returns a json object with the correct keys4522 and exists4523 behaves like specified dashboard embed4524 contains only the specified charts4525 behaves like 200 response4526 behaves like correctly formatted response4527 returns a json object with the correct keys4528 GET #search4529 responds with status code 2004530 returns matched results4531 when query is review4532 returns matched results4533 when query is empty4534 returns matched results4535 when query is review/patch-34536 responds with status code 2044537 when query is partially matched in the middle of environment name4538 responds with status code 2044539 when query contains a wildcard character4540 prevents wildcard injection4541 when query matches case insensitively4542 returns matched results4543Admin::ApplicationSettingsController4544 GET #usage_data with no access4545 returns 4044546 GET #usage_data4547unknown OID 28: failed to recognize type of 'relfrozenxid'. It will be treated as String.4548unknown OID 1034: failed to recognize type of 'relacl'. It will be treated as String.4549 returns HTML data4550 returns JSON data4551 PUT #update4552 updates the password_authentication_enabled_for_git setting4553 updates the default_project_visibility for string value4554 update the restricted levels for string values4555 updates the restricted_visibility_levels when empty array is passed4556 updates the receive_max_input_size setting4557 updates the default_project_creation for string value4558 external policy classification settings4559 updates settings when the feature is available4560 verify panel actions4561 behaves like renders correct panels4562 renders correct action on error4563 redirects to same panel on success4564 behaves like renders correct panels4565 renders correct action on error4566 redirects to same panel on success4567 behaves like renders correct panels4568 renders correct action on error4569 redirects to same panel on success4570 behaves like renders correct panels4571 renders correct action on error4572 redirects to same panel on success4573 behaves like renders correct panels4574 renders correct action on error4575 redirects to same panel on success4576 behaves like renders correct panels4577 renders correct action on error4578 redirects to same panel on success4579 behaves like renders correct panels4580 renders correct action on error4581 redirects to same panel on success4582 behaves like renders correct panels4583 renders correct action on error4584 redirects to same panel on success4585 PUT #reset_registration_token4586 resets runner registration token4587 redirects the user to admin runners page4588 GET #lets_encrypt_terms_of_service4589 redirects the user to the terms of service page4590API::ProjectContainerRepositories4591 GET /projects/:id/registry/repositories4592 behaves like rejected container repository access4593 for guest4594 returns forbidden4595 behaves like rejected container repository access4596 for anonymous4597 returns not_found4598 behaves like returns repositories for allowed users4599 for reporter4600 returns a list of repositories4601 returns a matching schema4602 with tags param4603 returns a list of repositories and their tags4604 returns a matching schema4605 DELETE /projects/:id/registry/repositories/:repository_id4606 behaves like rejected container repository access4607 for developer4608 returns forbidden4609 behaves like rejected container repository access4610 for anonymous4611 returns not_found4612 for maintainer4613 schedules removal of repository4614 GET /projects/:id/registry/repositories/:repository_id/tags4615 behaves like rejected container repository access4616 for guest4617 returns forbidden4618 behaves like rejected container repository access4619 for anonymous4620 returns not_found4621 for reporter4622 returns a list of tags4623 returns a matching schema4624 DELETE /projects/:id/registry/repositories/:repository_id/tags4625 disallowed4626 behaves like rejected container repository access4627 for developer4628 returns forbidden4629 behaves like rejected container repository access4630 for anonymous4631 returns not_found4632 for maintainer4633 without required parameters4634 returns bad request4635 passes all declared parameters4636 schedules cleanup of tags repository4637 called multiple times in one hour4638 returns 400 with an error message4639 executes service only for the first time4640 GET /projects/:id/registry/repositories/:repository_id/tags/:tag_name4641 behaves like rejected container repository access4642 for guest4643 returns forbidden4644 behaves like rejected container repository access4645 for anonymous4646 returns not_found4647 for reporter4648 returns a details of tag4649 returns a matching schema4650 DELETE /projects/:id/registry/repositories/:repository_id/tags/:tag_name4651 behaves like rejected container repository access4652 for reporter4653 returns forbidden4654 behaves like rejected container repository access4655 for anonymous4656 returns not_found4657 for developer4658 when there are multiple tags4659 properly removes tag4660 when there's only one tag4661 properly removes tag4662Projects::DeployKeysController4663 GET index4664 when html requested4665 redirects to project settings with the correct anchor4666 when json requested4667 returns json in a correct format4668 POST create4669 creates a new deploy key for the project4670 redirects to project settings with the correct anchor4671 when the deploy key is invalid4672 shows an alert with the validations errors4673 /enable/:id4674 with anonymous user4675 redirects to login4676 with user with no permission4677 returns 4044678 with user with permission4679 returns 3024680 returns 4044681 with admin4682 returns 3024683 /disable/:id4684 with anonymous user4685 redirects to login4686 with user with no permission4687 returns 4044688 with user with permission4689 returns 3024690 returns 4044691 with admin4692 returns 3024693Projects::ArtifactsController4694 GET index4695 when feature flag is on4696 sets the artifacts variable4697 sets the total size variable4698 pagination4699 paginates artifacts4700 when feature flag is off4701 renders no content4702 does not set the artifacts variable4703 does not set the total size variable4704 DELETE destroy4705 deletes the artifact4706 redirects to artifacts index page4707 sets the notice4708 when artifact deletion fails4709 redirects to artifacts index page4710 sets the notice4711 when user is not authorized4712 does not delete the artifact4713 GET download4714 when no file type is supplied4715 sends the artifacts file4716 when a file type is supplied4717 when an invalid file type is supplied4718 returns 4044719 when codequality file type is supplied4720 when file is stored locally4721 sends the codequality report4722 when file is stored remotely4723 sends the codequality report4724 when proxied4725 sends the codequality report4726 GET browse4727 when the directory exists4728 renders the browse view4729 when the directory does not exist4730 responds Not Found4731 GET file4732 when the file is served by GitLab Pages4733 when the file exists4734 renders the file view4735 when the file does not exist4736 responds Not Found4737 when the file is served through Rails4738 when the file exists4739 renders the file view4740 when the file does not exist4741 responds Not Found4742 when the project is private4743 does not redirect the request4744 when the project is private and pages access control is enabled4745 renders the file view4746 GET raw4747 when the file exists4748 when using local file storage4749 behaves like a valid file4750 serves the file using workhorse4751 when using remote file storage4752 behaves like a valid file4753 serves the file using workhorse4754 GET latest_succeeded4755 cannot find the job4756 has no such ref4757 behaves like not found4758 should respond with numeric status code not_found4759 has no such job4760 behaves like not found4761 should respond with numeric status code not_found4762 has no path4763 behaves like not found4764 should respond with numeric status code not_found4765 found the job and redirect4766 with regular branch4767 behaves like redirect to the job4768 redirects4769 with branch name containing slash4770 behaves like redirect to the job4771 redirects4772 with branch name and path containing slashes4773 redirects4774Projects::LabelsController4775 GET #index4776 @prioritized_labels4777 does not include labels without priority4778 is sorted by priority, then label title4779 @labels4780 is sorted by label title4781 does not include labels with priority4782 does not include group labels when project does not belong to a group4783 POST #generate4784 personal project4785 creates labels4786 project belonging to a group4787 creates labels4788 POST #toggle_subscription4789 allows user to toggle subscription on project labels4790 allows user to toggle subscription on group labels4791 POST #promote4792 not group reporters4793 denies access4794 group reporter4795DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "MAX(id)". Non-attribute arguments will be disallowed in Rails 6.0. This method should not be called with user-provided values, such as request parameters or model attributes. Known-safe values can be passed by wrapping them in Arel.sql(). (called from subscribe_users at /builds/gitlab-org/gitlab/app/services/labels/promote_service.rb:41)4796 gives access4797DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "MAX(id)". Non-attribute arguments will be disallowed in Rails 6.0. This method should not be called with user-provided values, such as request parameters or model attributes. Known-safe values can be passed by wrapping them in Arel.sql(). (called from subscribe_users at /builds/gitlab-org/gitlab/app/services/labels/promote_service.rb:41)4798 promotes the label4799 renders label name without parsing it as HTML4800 service raising InvalidRecord4801 returns to label list4802 #ensure_canonical_path4803 for a GET request4804 when requesting the canonical path4805 non-show path4806 with exactly matching casing4807 does not redirect4808 with different casing4809 redirects to the correct casing4810 when requesting a redirected path4811 redirects to the canonical path4812 for a non-GET request4813 when requesting the canonical path with different casing4814 does not 4044815 does not redirect to the correct casing4816 when requesting a redirected path4817 returns not found4818Projects::DeploymentsController4819 GET #index4820 returns list of deployments from last 8 hours4821 returns a list with deployments information4822 GET #metrics4823 when metrics are disabled4824 responds with not found4825 when metrics are enabled4826 when environment has no metrics4827 returns a empty response 204 resposne4828 when environment has some metrics4829 returns a metrics JSON document4830 returns a 404 if the deployment failed4831 GET #additional_metrics4832 when metrics are disabled4833 responds with not found4834 when metrics are enabled4835 when environment has no metrics4836 returns a empty response 204 response4837 when environment has some metrics4838 returns a metrics JSON document4839RoutableActions4840 #find_routable!4841 when signed in4842 with a project4843 prevents access when not authorized4844 when authorized4845 returns the project4846 allows access4847 with a group4848 prevents access when not authorized4849 when authorized4850 returns the group4851 allows access4852 with a user4853 allows access when authorized4854 prevents access when unauthorized4855 when not signed in4856 redirects to sign in for private resouces4857 #perform_not_found_actions4858 performs multiple checks4859 performs checks in the context of the controller4860 skips checks once one has resulted in a render/redirect4861Adding an image DiffNote4862 behaves like a Note mutation when the user does not have permission4863 behaves like a Note mutation that does not create a Note4864 should not change `Note.count`4865 behaves like a mutation that returns top-level errors4866 should eq ["The resource that you are attempting to access does not exist or you don't have permission to perform this action"]4867 when the user has permission4868 returns the note with the correct position4869 behaves like a Note mutation that creates a Note4870 should change `Note.count` by 14871 behaves like a Note mutation when there are active record validation errors4872 returns an empty Note4873 behaves like a Note mutation that does not create a Note4874 should not change `Note.count`4875 behaves like a mutation that returns errors in the response4876 should eq ["Error 1", "Error 2"]4878 behaves like a Note mutation when the given resource id is not for a Noteable4879 behaves like a Note mutation that does not create a Note4880 should not change `Note.count`4881 behaves like a mutation that returns top-level errors4882 should eq ["Cannot add notes to this resource"]4883Projects::AvatarsController4884 GET #show4885 when repository has no avatar4886 shows 4044887 when repository has an avatar4888 when the avatar is stored in the repository4889 sends the avatar4890 when the avatar is stored in lfs4891 behaves like a controller that can serve LFS files4892 when lfs is enabled4893 when the project is linked to the LfsObject4894 serves the file4895 and lfs uses object storage4896 responds with redirect to file4897 sets content disposition4898 when project is not linked to the LfsObject4899 does not serve the file4900 when the project is part of a fork network4901 when the project is the root of the fork network4902 behaves like a controller that correctly serves lfs files within a fork network4903 should not eq #<Project id:1251 namespace605/project1234>4904 does not serve the file if no members are linked to the LfsObject4905 serves the file when the fork network root is linked to the LfsObject4906 serves the file when the fork network member is linked to the LfsObject4907 when the project is a downstream member of the fork network4908 behaves like a controller that correctly serves lfs files within a fork network4909 should not eq #<Project id:1260 namespace614/project1243>4910 does not serve the file if no members are linked to the LfsObject4911 serves the file when the fork network root is linked to the LfsObject4912 serves the file when the fork network member is linked to the LfsObject4913 when lfs is not enabled4914 delivers ASCII file4915 DELETE #destroy4916 removes avatar from DB by calling destroy4917Adding a Note4918 behaves like a Note mutation when the user does not have permission4919 behaves like a Note mutation that does not create a Note4920 should not change `Note.count`4921 behaves like a mutation that returns top-level errors4922 should eq ["The resource that you are attempting to access does not exist or you don't have permission to perform this action"]4923 when the user has permission4924 returns the note4925 behaves like a Note mutation that creates a Note4926 should change `Note.count` by 14927 behaves like a Note mutation when there are active record validation errors4928 returns an empty Note4929 behaves like a Note mutation that does not create a Note4930 should not change `Note.count`4931 behaves like a mutation that returns errors in the response4932 should eq ["Error 1", "Error 2"]4933 behaves like a Note mutation when the given resource id is not for a Noteable4934 behaves like a Note mutation that does not create a Note4935 should not change `Note.count`4936 behaves like a mutation that returns top-level errors4937 should eq ["Cannot add notes to this resource"]4938 creating Notes in reply to a discussion4939 when the user does not have permission to create notes on the discussion4940 behaves like a mutation that returns top-level errors4941 should eq ["The discussion does not exist or you don't have permission to perform this action"]4942 when the user has permission to create notes on the discussion4943 creates a Note in a discussion4944OpenID Connect requests4945 Application without OpenID scope4946 token response does not include an ID token4947 userinfo response is unauthorized4948 Application with OpenID scope4949 token response includes an ID token4950 UserInfo payload4951 includes all user information and group memberships4952 does not include any unknown claims4953 includes email and email_verified claims4954 has public email in email claim4955 has false in email_verified claim4956 ID token payload4957 includes the subject claims4958 includes the GitLab root URL4959 includes the time of the last authentication4960 does not include any unknown properties4961 when user is blocked4962 redirects to login page4963 when user is ldap_blocked4964 redirects to login page4965 OpenID configuration information4966 correctly returns the configuration4967 Application with OpenID and email scopes4968 token response includes an ID token4969 UserInfo payload4970 includes the email and email_verified claims4971 has private email in email claim4972 has true in email_verified claim4973Emails::PagesDomains4974 #pages_domain_enabled_email4975 should have body including "has been enabled"4976 behaves like a pages domain email4977 has the expected content4978 behaves like an email sent to a user4979 is sent to user's global notification email address4980 with group notification email4981 is sent to user's group notification email4982 behaves like an email sent from GitLab4983 has the characteristics of an email sent from GitLab4984 behaves like it should not have Gmail Actions links4985 should not have body including "ViewAction"4986 behaves like a user cannot unsubscribe through footer link4987 does not have a List-Unsubscribe header or a body link4988 #pages_domain_disabled_email4989 should have body including "has been disabled"4990 behaves like a pages domain email4991 has the expected content4992 behaves like an email sent to a user4993 is sent to user's global notification email address4994 with group notification email4995 is sent to user's group notification email4996 behaves like an email sent from GitLab4997 has the characteristics of an email sent from GitLab4998 behaves like it should not have Gmail Actions links4999 should not have body including "ViewAction"5000 behaves like a user cannot unsubscribe through footer link5001 does not have a List-Unsubscribe header or a body link5002 behaves like notification about upcoming domain removal5003 when domain is not scheduled for removal5004 asks user to remove it5005 when domain is scheduled for removal5006 notifies user that domain will be removed automatically5007 #pages_domain_verification_succeeded_email5008 should have body including "successfully verified"5009 behaves like a pages domain email5010 has the expected content5011 behaves like an email sent to a user5012 is sent to user's global notification email address5013 with group notification email5014 is sent to user's group notification email5015 behaves like an email sent from GitLab5016 has the characteristics of an email sent from GitLab5017 behaves like it should not have Gmail Actions links5018 should not have body including "ViewAction"5019 behaves like a user cannot unsubscribe through footer link5020 does not have a List-Unsubscribe header or a body link5021 #pages_domain_verification_failed_email5022 says verification has failed and when the domain is enabled until5023 behaves like a pages domain email5024 has the expected content5025 behaves like an email sent to a user5026 is sent to user's global notification email address5027 with group notification email5028 is sent to user's group notification email5029 behaves like an email sent from GitLab5030 has the characteristics of an email sent from GitLab5031 behaves like it should not have Gmail Actions links5032 should not have body including "ViewAction"5033 behaves like a user cannot unsubscribe through footer link5034 does not have a List-Unsubscribe header or a body link5035 behaves like notification about upcoming domain removal5036 when domain is not scheduled for removal5037 asks user to remove it5038 when domain is scheduled for removal5039 notifies user that domain will be removed automatically5040Projects::MergeRequests::ContentController5041 user has access to the project5042 GET cached_widget5043 renders widget MR entity as json5044 closes an MR with moved source project5045 GET widget5046 checks whether the MR can be merged5047 merged merge request5048 renders widget MR entity as json5049 user does not have access to the project5050 GET cached_widget5051 returns 4045052 GET widget5053 returns 4045054API::Snippets5055 GET /snippets/5056 returns snippets available5057 hides private snippets from regular user5058 returns 404 for non-authenticated5059 does not return snippets related to a project with disable feature visibility5060 GET /snippets/public5061 returns all snippets with public visibility from all users5062 GET /snippets/:id/raw5063 requires authentication5064 returns raw text5065 forces attachment content disposition5066 returns 404 for invalid snippet id5067 hides private snippets from ordinary users5068 shows internal snippets to ordinary users5069 GET /snippets/:id5070 requires authentication5071 returns snippet json5072 shows private snippets to an admin5073 hides private snippets from an ordinary user5074 shows internal snippets to an ordinary user5075 returns 404 for invalid snippet id5076 POST /snippets/5077 returns 400 for missing parameters5078 with restricted visibility settings5079 behaves like snippet creation5080 creates a new snippet5081 behaves like snippet creation5082 creates a new snippet5083 when the snippet is spam5084 when the snippet is private5085 creates the snippet5086 when the snippet is public5087 rejects the shippet5088 creates a spam log5089 PUT /snippets/:id5090 returns 404 for invalid snippet id5091 returns 404 for another user's snippet5092 returns 400 for missing parameters5093 with restricted visibility settings5094 behaves like snippet updates5095 updates a snippet5096 behaves like snippet updates5097 updates a snippet5098 when the snippet is spam5099 when the snippet is private5100 updates the snippet5101 when the snippet is public5102 rejects the shippet5103 creates a spam log5104 when a private snippet is made public5105 rejects the snippet5106 creates a spam log5107 DELETE /snippets/:id5108 deletes snippet5109 returns 404 for invalid snippet id5110 behaves like 412 response5111 for a modified ressource5112 returns 4125113 for an unmodified ressource5114 returns accepted5115 GET /snippets/:id/user_agent_detail5116 exposes known attributes5117 returns unauthorized for non-admin users5118Updating a Note5119 when the user does not have permission5120 does not update the Note5121 behaves like a mutation that returns top-level errors5122 should eq ["The resource that you are attempting to access does not exist or you don't have permission to perform this action"]5123 when the user has permission5124 updates the Note5125 returns the updated Note5126 behaves like a Note mutation when the given resource id is not for a Note5127 behaves like a mutation that returns top-level errors5128 should eq ["Resource is not a note"]5129 when there are ActiveRecord validation errors5130 does not update the Note5131 returns the Note with its original body5132 behaves like a mutation that returns errors in the response5133 should eq ["Note can't be blank"]5134Projects::Tags::ReleasesController5135 GET #edit5136 initializes a new release5137 retrieves an existing release5138 PUT #update5139 updates release note description5140 creates a release if one does not exist5141 sets the release name, sha, and author for a new release5142 deletes release when description is empty5143 does nothing when description is empty and the tag does not have a release5144Groups::RunnersController5145 #show5146 when user is owner5147 renders show with 200 status code5148 when user is not owner5149 renders a 4045150 #edit5151 when user is owner5152 renders show with 200 status code5153 when user is not owner5154 renders a 4045155 #update5156 when user is an owner5157 updates the runner, ticks the queue, and redirects5158 when user is not an owner5159 rejects the update and responds 4045160 #destroy5161 when user is an owner5162 destroys the runner and redirects5163 when user is not an owner5164 responds 404 and does not destroy the runner5165 #resume5166 when user is an owner5167 marks the runner as active, ticks the queue, and redirects5168 when user is not an owner5169 responds 404 and does not activate the runner5170 #pause5171 when user is an owner5172 marks the runner as inactive, ticks the queue, and redirects5173 when user is not an owner5174 responds 404 and does not update the runner or queue5175Groups::BoardsController5176 GET index5177 creates a new board when group does not have one5178 when format is HTML5179 renders template5180 with unauthorized user5181 returns a not found 404 response5182 when user is signed out5183 renders template5184 when format is JSON5185 return an array with one group board5186 with unauthorized user5187 returns a not found 404 response5188 behaves like disabled when using an external authorization service5189 works when the feature is not enabled5190 renders a 404 with a message when the feature is enabled5191 GET show5192 when format is HTML5193 renders template5194 with unauthorized user5195 returns a not found 404 response5196 when user is signed out5197 does not save visit5198 when format is JSON5199 returns project board5200 with unauthorized user5201 returns a not found 404 response5202 when board does not belong to group5203 returns a not found 404 response5204 behaves like disabled when using an external authorization service5205 works when the feature is not enabled5206 renders a 404 with a message when the feature is enabled5207API::ProjectStatistics5208 GET /projects/:id/statistics5209 returns the fetch statistics of the last 30 days5210 excludes the fetch statistics older than 30 days5211 responds with 403 when the user is not a maintainer of the repository5212 responds with 404 when daily_statistics_enabled? is false5213getting notes for an issue5214 behaves like exposing regular notes on a noteable in GraphQL5215 for regular notes5216 includes the note5217 behaves like a working graphql query5218 returns a successful response5219 for discussions5220 includes all discussion notes5221 behaves like a working graphql query5222 returns a successful response5223merge requests discussions5224 GET /:namespace/:project/merge_requests/:iid/discussions5225 returns 2005226 avoids N+1 DB queries5227 limits Gitaly queries5228API::Suggestions5229 PUT /suggestions/:id/apply5230 when successfully applies patch5231 returns 200 with json content5232 when not able to apply patch5233 returns 400 with json content5234 when unauthorized5235 returns 403 with json content5236Projects::CycleAnalyticsController5237 counting page views for 'show'5238 increases the counter5239 cycle analytics not set up flag5240 with no data5241 is true5242 with data5243 is false5244Emails::Pipelines5245 #pipeline_success_email5246 behaves like correct pipeline information5247 has a correct information5248 when pipeline for merge requests5249 has a correct information with merge request link5250 #pipeline_failed_email5251 behaves like correct pipeline information5252 has a correct information5253 when pipeline for merge requests5254 has a correct information with merge request link5255Projects::Environments::PrometheusApiController5256 GET #proxy5257 with valid requests5258 with success result5259 returns prometheus response5260 with format string5261 replaces variables with values5262 with nil query5263 does not raise error5264 with nil result5265 returns 204 no_content5266 with 404 result5267 returns body5268 with error result5269 with http_status5270 sets the http response status code5271 without http_status5272 returns bad_request5273 with inappropriate requests5274 with anonymous user5275 redirects to signin page5276 without correct permissions5277 returns 4045278 with invalid environment id5279 returns 4045280API::Statistics Statistics5281 GET /application/statistics5282 when no user5283 returns authentication error5284 when not an admin5285 returns forbidden error5286 when authenticated as admin5287 matches the response schema5288 gives the right statistics5289Projects::Settings::OperationsController5290 GET #show5291 renders show template5292 with insufficient permissions5293 renders 4045294 as an anonymous user5295 redirects to signup page5296 PATCH #update5297 with insufficient permissions5298 renders 4045299 as an anonymous user5300 redirects to signup page5301 error tracking5302 GET #show5303 with existing setting5304 loads existing setting5305 without an existing setting5306 builds a new setting5307 PATCH #update5308 behaves like PATCHable5309 format json5310 when update succeeds5311 returns success status5312 when update fails5313 returns error5314 metrics dashboard setting5315 PATCH #update5316 behaves like PATCHable5317 format json5318 when update succeeds5319 returns success status5320 when update fails5321 returns error5322 grafana integration5323 PATCH #update5324 behaves like PATCHable5325 format json5326 when update succeeds5327 returns success status5328 when update fails5329 returns error5330Projects::RefsController5331 GET #logs_tree5332 never throws MissingTemplate5333 renders 404 for non-JS requests5334 renders JS5335 renders JSON5336Users::TermsController5337 GET #index5338 redirects when no terms exist5339 when terms exist5340 shows terms when they exist5341 shows a message when the user already accepted the terms5342 POST #accept5343 saves that the user accepted the terms5344 redirects to a path when specified5345 redirects to the referer when no redirect specified5346 redirecting to another domain5347 is prevented when passing a redirect param5348 is prevented when redirecting to the referer5349 POST #decline5350 stores that the user declined the terms5351 signs out the user5352Profiles::PreferencesController5353 GET show5354 renders5355 assigns user5356 PATCH update5357 on successful update5358 sets the flash5359 changes the user's preferences5360 on failed update5361 sets the flash5362 on invalid dashboard setting5363 sets the flash5364 as js5365 renders5366 as html5367 redirects5368Projects::ErrorTrackingController5369 GET #index5370 html5371 renders index with 200 status code5372 with insufficient permissions5373 returns 4045374 with an anonymous user5375 redirects to sign-in page5376 format json5377 service result is successful5378 returns a list of errors5379 service result is erroneous5380 without http_status5381 returns 400 with message5382 with explicit http_status5383 returns http_status with message5384 POST #list_projects5385 with insufficient permissions5386 returns 4045387 with an anonymous user5388 redirects to sign-in page5389 with authorized user5390 service result is successful5391 returns a list of projects5392 service result is erroneous5393 without http_status5394 returns 400 with message5395 with explicit http_status5396 returns http_status with message5397API::UserCounts5398 GET /user_counts5399 when unauthenticated5400 returns authentication error5401 when authenticated5402 returns open counts for current user5403 updates the mr count when a new mr is assigned5404API::Internal::Pages5405 GET /internal/pages5406 feature flag disabled5407 responds with 404 Not Found5408 feature flag enabled5409 not authenticated5410 responds with 401 Unauthorized5411 authenticated5412 not existing host5413 responds with 404 Not Found5414 custom domain5415 when there are no pages deployed for the related project5416 responds with 204 No Content5417 when there are pages deployed for the related project5418 responds with the correct domain configuration5419 namespaced domain5420 regular project5421 responds with the correct domain configuration5422 group root project5423 responds with the correct domain configuration5424rendering namespace statistics5425 behaves like a working namespace with storage statistics query5426 includes the packages size if the user can read the statistics5427 behaves like a working graphql query5428 returns a successful response5429 when the namespace is a group5430 behaves like a working namespace with storage statistics query5431 includes the packages size if the user can read the statistics5432 behaves like a working graphql query5433 returns a successful response5434 when the namespace is public5435 hides statistics for unauthenticated requests5436Profiles::AccountsController5437 DELETE unlink5438 renders 404 if someone tries to unlink a non existent provider5439 saml provider5440 does not allow to unlink connected account5441 cas3 provider5442 does not allow to unlink connected account5443 twitter provider5444 allows to unlink connected account5445 facebook provider5446 allows to unlink connected account5447 google_oauth2 provider5448 allows to unlink connected account5449 gitlab provider5450 allows to unlink connected account5451 github provider5452 allows to unlink connected account5453 bitbucket provider5454 allows to unlink connected account5455 crowd provider5456 allows to unlink connected account5457 auth0 provider5458 allows to unlink connected account5459 authentiq provider5460 allows to unlink connected account5461Dashboard::GroupsController5462 renders group trees5463 #index5464 only includes projects the user is a member of5465 works when the external authorization service is enabled5466 when rendering an expanded hierarchy with public groups you are not a member of5467 renders only groups the user is a member of when searching hierarchy correctly5468Oauth::AuthorizationsController5469 GET #new5470 without valid params5471 returns 200 code and renders error view5472 with valid params5473 returns 200 code and renders view5474 deletes session.user_return_to and redirects when skip authorization5475 when there is already an access token for the application5476 when the request scope matches any of the created token scopes5477 authorizes the request and redirects5478Groups::LabelsController5479 GET #index5480 returns group and project labels by default5481 with ancestor group5482 returns ancestor group labels5483 external authorization5484 behaves like disabled when using an external authorization service5485 works when the feature is not enabled5486 renders a 404 with a message when the feature is enabled5487 POST #toggle_subscription5488 allows user to toggle subscription on group labels5489Admin::SpamLogsController5490 #index5491 lists all spam logs5492 #destroy5493 removes only the spam log when removing log5494 removes user and his spam logs when removing the user5495 #mark_as_ham5496 submits the log as ham5497Import::GoogleCodeController5498 POST callback5499 stores Google Takeout dump list in session5500 GET status5501 assigns variables5502 does not show already added project5503 does not show any invalid projects5504Oauth::ApplicationsController5505 project members5506 GET #index5507 shows list of applications5508 redirects back to profile page if OAuth applications are disabled5509 POST #create5510 creates an application5511 redirects back to profile page if OAuth applications are disabled5512 redirect_uri5513 shows an error for a forbidden URI5514File uploads5515 POST /:namespace/:project/create/:branch5516 redirects to blob5517Projects::GrafanaApiController5518 GET #proxy5519 with a successful result5520 returns a grafana datasource response5521 when the request is still unavailable5522 returns 204 no content5523 when an error has occurred5524 with an error accessing grafana5525 behaves like error response5526 returns service_unavailable5527 with a processing error5528 behaves like error response5529 returns bad_request5530API::ImportGithub5531 POST /import/github5532 returns 201 response when the project is imported successfully5533 returns 422 response when user can not create projects in the chosen namespace5534GoogleApi::AuthorizationsController5535 GET|POST #callback5536 session key is present5537 session key matches state param5538 sets token and expires_at in session5539 redirects to the URL stored in state param5540 session key does not match state param5541 behaves like access denied5542 returns a 4045543 state param is blank5544 behaves like access denied5545 returns a 4045546 state param is present, but session key is blank5547 behaves like access denied5548 returns a 4045549Admin::IdentitiesController5550 UPDATE identity5551 repairs ldap blocks5552 DELETE identity5553 repairs ldap blocks5554Explore::GroupsController5555 renders group trees5556 includes public projects5557SendFileUpload5558 #send_upload5559 when local file is used5560 sends a file5561 with inline image5562 sends a file with inline disposition5563 with attachment5564 sends a file with content-type of text/plain5565 with non-ASCII encoded filename5566 sends content-disposition for non-ASCII encoded filenames5567 with a proxied file in object storage5568 sends a file with a custom type5569 when remote file is used5570 and proxying is enabled5571 behaves like proxied file5572 sends a file5573 and proxying is disabled5574 sends a file5575 with proxy requested5576 behaves like proxied file5577 sends a file5578PasswordsController5579 #check_password_authentication_available5580 when password authentication is disabled for the web interface and Git5581 prevents a password reset5582 when reset email belongs to an ldap user5583 prevents a password reset5584IdeController5585 increases the views counter5586Admin::RequestsProfilesController5587 #show5588 when loading HTML profile5589 renders the data5590 when loading TXT profile5591 renders the data5592 when loading PDF profile5593 fails to render the data5594Knapsack report was generated. Preview:5595{5596 "spec/mailers/notify_spec.rb": 200.16832160949707,5597 "spec/requests/api/groups_spec.rb": 116.7713840007782,5598 "spec/requests/api/issues/get_group_issues_spec.rb": 69.03404641151428,5599 "spec/requests/lfs_http_spec.rb": 63.83981394767761,5600 "spec/requests/api/todos_spec.rb": 44.149269819259644,5601 "spec/requests/api/issues/post_projects_issues_spec.rb": 35.3613486289978,5602 "spec/controllers/projects/branches_controller_spec.rb": 26.777750492095947,5603 "spec/controllers/projects/snippets_controller_spec.rb": 20.524527549743652,5604 "spec/controllers/projects/clusters/applications_controller_spec.rb": 20.144799947738647,5605 "spec/requests/api/deployments_spec.rb": 30.182831287384033,5606 "spec/requests/api/search_spec.rb": 25.03100895881653,5607 "spec/requests/api/pages/private_access_spec.rb": 16.429760932922363,5608 "spec/controllers/projects/merge_requests/conflicts_controller_spec.rb": 16.340953826904297,5609 "spec/controllers/projects/project_members_controller_spec.rb": 10.1364905834198,5610 "spec/controllers/projects/environments_controller_spec.rb": 13.071229457855225,5611 "spec/controllers/admin/application_settings_controller_spec.rb": 9.85154128074646,5612 "spec/requests/api/project_container_repositories_spec.rb": 10.822815895080566,5613 "spec/controllers/projects/deploy_keys_controller_spec.rb": 9.247108697891235,5614 "spec/controllers/projects/artifacts_controller_spec.rb": 8.647651672363281,5615 "spec/controllers/projects/labels_controller_spec.rb": 10.379360914230347,5616 "spec/controllers/projects/deployments_controller_spec.rb": 8.75516939163208,5617 "spec/controllers/concerns/routable_actions_spec.rb": 4.3588738441467285,5618 "spec/requests/api/graphql/mutations/notes/create/image_diff_note_spec.rb": 6.33238673210144,5619 "spec/controllers/projects/avatars_controller_spec.rb": 7.024564027786255,5620 "spec/requests/api/graphql/mutations/notes/create/note_spec.rb": 6.303368330001831,5621 "spec/requests/openid_connect_spec.rb": 6.465715169906616,5622 "spec/mailers/emails/pages_domains_spec.rb": 4.238213777542114,5623 "spec/controllers/projects/merge_requests/content_controller_spec.rb": 4.539602756500244,5624 "spec/requests/api/snippets_spec.rb": 5.752202272415161,5625 "spec/requests/api/graphql/mutations/notes/update_spec.rb": 3.9703526496887207,5626 "spec/controllers/projects/tags/releases_controller_spec.rb": 3.405622720718384,5627 "spec/controllers/groups/runners_controller_spec.rb": 3.541480541229248,5628 "spec/controllers/groups/boards_controller_spec.rb": 4.166486978530884,5629 "spec/requests/api/project_statistics_spec.rb": 2.427321672439575,5630 "spec/requests/api/graphql/project/issue/notes_spec.rb": 2.9639627933502197,5631 "spec/requests/projects/merge_requests_discussions_spec.rb": 4.27234673500061,5632 "spec/requests/api/suggestions_spec.rb": 3.254873514175415,5633 "spec/controllers/projects/cycle_analytics_controller_spec.rb": 2.9364354610443115,5634 "spec/mailers/emails/pipelines_spec.rb": 1.2254571914672852,5635 "spec/controllers/projects/environments/prometheus_api_controller_spec.rb": 1.9631257057189941,5636 "spec/requests/api/statistics_spec.rb": 2.500065803527832,5637 "spec/controllers/projects/settings/operations_controller_spec.rb": 2.4462637901306152,5638 "spec/controllers/projects/refs_controller_spec.rb": 2.785597085952759,5639 "spec/controllers/users/terms_controller_spec.rb": 1.3513188362121582,5640 "spec/controllers/profiles/preferences_controller_spec.rb": 1.3251445293426514,5641 "spec/controllers/projects/error_tracking_controller_spec.rb": 1.3935339450836182,5642 "spec/requests/api/user_counts_spec.rb": 1.3806617259979248,5643 "spec/requests/api/internal/pages_spec.rb": 1.3192925453186035,5644 "spec/requests/api/graphql/namespace/root_storage_statistics_spec.rb": 1.1020216941833496,5645 "spec/controllers/profiles/accounts_controller_spec.rb": 1.6579482555389404,5646 "spec/controllers/dashboard/groups_controller_spec.rb": 0.8053646087646484,5647 "spec/controllers/oauth/authorizations_controller_spec.rb": 1.323632001876831,5648 "spec/controllers/groups/labels_controller_spec.rb": 1.8102903366088867,5649 "spec/controllers/admin/spam_logs_controller_spec.rb": 0.5793156623840332,5650 "spec/controllers/import/google_code_controller_spec.rb": 0.8736040592193604,5651 "spec/controllers/oauth/applications_controller_spec.rb": 0.6618151664733887,5652 "spec/requests/projects/uploads_spec.rb": 0.575819730758667,5653 "spec/controllers/projects/grafana_api_controller_spec.rb": 0.5755345821380615,5654 "spec/requests/api/import_github_spec.rb": 0.401597261428833,5655 "spec/controllers/google_api/authorizations_controller_spec.rb": 0.33774805068969727,5656 "spec/controllers/admin/identities_controller_spec.rb": 0.2241957187652588,5657 "spec/controllers/explore/groups_controller_spec.rb": 0.24567222595214844,5658 "spec/controllers/concerns/send_file_upload_spec.rb": 0.159804105758667,5659 "spec/controllers/passwords_controller_spec.rb": 0.13988065719604492,5660 "spec/controllers/ide_controller_spec.rb": 0.12980270385742188,5661 "spec/controllers/admin/requests_profiles_controller_spec.rb": 0.076822042465209965662}5663Knapsack global time execution for tests: 14m 30s5664Finished in 15 minutes 22 seconds (files took 52.91 seconds to load)56652059 examples, 0 failures5666Wed Oct 16 17:22:12 UTC 20195668$ date5669Wed Oct 16 17:22:13 UTC 20195672coverage/: found 5 matching files 5673knapsack/: found 6 matching files 5674rspec_flaky/: found 4 matching files 5675rspec_profiling/: found 1 matching files 5676WARNING: tmp/capybara/: no matching files 5677tmp/memory_test/: found 2 matching files 5678Uploading artifacts to coordinator... ok id=322922910 responseStatus=201 Created token=uaCyVt6b5679Uploading artifacts...5680junit_rspec.xml: found 1 matching files 5681Uploading artifacts to coordinator... ok id=322922910 responseStatus=201 Created token=uaCyVt6b5682Job succeeded