rspec integration pg9 3/6
Passed Started
by
@grzesiek

Grzegorz Bizon
1Running with gitlab-runner 12.3.0 (a8a019e0)2 on prm-com-gitlab-org ae3bfce2 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:18
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:3689b07c936dec3fdafc5ec40ed80a6cfdba089394a505d60f2a6926b0b982a3 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-ae3bfce2-project-278964-concurrent-0 via runner-ae3bfce2-prm-1571122679-dc7bec0e...
00:12
16Reinitialized existing Git repository in /builds/gitlab-org/gitlab/.git/18 * [new ref] refs/pipelines/88859459 -> refs/pipelines/8885945919 d51133ad7..8bd324dc2 master -> origin/master20Checking out f5bf17c9 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 log/api_json.log34Removing log/gitaly-test.log35Removing log/grpc.log36Removing log/test_json.log37Removing tmp/cache/38Removing tmp/tests/39Removing vendor/gitaly-ruby/40Removing vendor/ruby/41Skipping Git submodules setup43Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/debian-stretch-ruby-2.6.3-node-12.x-2 44Successfully extracted cache46Downloading artifacts from coordinator... ok id=321109103 responseStatus=200 OK token=XMSy3Ehb47Downloading artifacts for setup-test-env (321109105)...48Downloading artifacts from coordinator... ok id=321109105 responseStatus=200 OK token=wfkozyzh49WARNING: tmp/tests/gitlab-shell/.gitlab_shell_secret: chmod tmp/tests/gitlab-shell/.gitlab_shell_secret: no such file or directory (suppressing repeats) 50Downloading artifacts for retrieve-tests-metadata (321109113)...51Downloading artifacts from coordinator... ok id=321109113 responseStatus=200 OK token=rMBaZ9wv53$ date54Tue Oct 15 08:39:41 UTC 201955$ export GOPATH=$CI_PROJECT_DIR/.go56$ mkdir -p $GOPATH57$ source scripts/utils.sh58$ source scripts/prepare_build.sh59Bundler version 1.17.260Warning: 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`.61The Gemfile's dependencies are satisfied62Successfully installed knapsack-1.18.0631 gem installed64CREATE ROLE65GRANT66Dropped database 'gitlabhq_test'67Created database 'gitlabhq_test'68-- enable_extension("pg_trgm")69 -> 0.0422s70-- enable_extension("plpgsql")71 -> 0.0024s72-- create_table("abuse_reports", {:id=>:serial, :force=>:cascade})73 -> 0.0041s74-- create_table("alerts_service_data", {:force=>:cascade})75 -> 0.0062s76-- create_table("allowed_email_domains", {:force=>:cascade})77 -> 0.0041s78-- create_table("analytics_cycle_analytics_group_stages", {:force=>:cascade})79 -> 0.0132s80-- create_table("analytics_cycle_analytics_project_stages", {:force=>:cascade})81 -> 0.0129s82-- create_table("analytics_language_trend_repository_languages", {:id=>false, :force=>:cascade})83 -> 0.0071s84-- create_table("analytics_repository_file_commits", {:force=>:cascade})85 -> 0.0062s86-- create_table("analytics_repository_files", {:force=>:cascade})87 -> 0.0045s88-- create_table("appearances", {:id=>:serial, :force=>:cascade})89 -> 0.0031s90-- create_table("application_setting_terms", {:id=>:serial, :force=>:cascade})91 -> 0.0025s92-- create_table("application_settings", {:id=>:serial, :force=>:cascade})93 -> 0.0818s94-- create_table("approval_merge_request_rule_sources", {:force=>:cascade})95 -> 0.0060s96-- create_table("approval_merge_request_rules", {:force=>:cascade})97 -> 0.0141s98-- create_table("approval_merge_request_rules_approved_approvers", {:force=>:cascade})99 -> 0.0058s100-- create_table("approval_merge_request_rules_groups", {:force=>:cascade})101 -> 0.0059s102-- create_table("approval_merge_request_rules_users", {:force=>:cascade})103 -> 0.0058s104-- create_table("approval_project_rules", {:force=>:cascade})105 -> 0.0092s106-- create_table("approval_project_rules_groups", {:force=>:cascade})107 -> 0.0060s108-- create_table("approval_project_rules_users", {:force=>:cascade})109 -> 0.0059s110-- create_table("approvals", {:id=>:serial, :force=>:cascade})111 -> 0.0061s112-- create_table("approver_groups", {:id=>:serial, :force=>:cascade})113 -> 0.0104s114-- create_table("approvers", {:id=>:serial, :force=>:cascade})115 -> 0.0065s116-- create_table("audit_events", {:id=>:serial, :force=>:cascade})117 -> 0.0067s118-- create_table("award_emoji", {:id=>:serial, :force=>:cascade})119 -> 0.0063s120-- create_table("badges", {:id=>:serial, :force=>:cascade})121 -> 0.0066s122-- create_table("board_assignees", {:id=>:serial, :force=>:cascade})123 -> 0.0059s124-- create_table("board_group_recent_visits", {:force=>:cascade})125 -> 0.0098s126-- create_table("board_labels", {:id=>:serial, :force=>:cascade})127 -> 0.0057s128-- create_table("board_project_recent_visits", {:force=>:cascade})129 -> 0.0098s130-- create_table("boards", {:id=>:serial, :force=>:cascade})131 -> 0.0086s132-- create_table("broadcast_messages", {:id=>:serial, :force=>:cascade})133 -> 0.0046s134-- create_table("chat_names", {:id=>:serial, :force=>:cascade})135 -> 0.0067s136-- create_table("chat_teams", {:id=>:serial, :force=>:cascade})137 -> 0.0044s138-- create_table("ci_build_needs", {:id=>:serial, :force=>:cascade})139 -> 0.0045s140-- create_table("ci_build_trace_chunks", {:force=>:cascade})141 -> 0.0044s142-- create_table("ci_build_trace_section_names", {:id=>:serial, :force=>:cascade})143 -> 0.0044s144-- create_table("ci_build_trace_sections", {:id=>:serial, :force=>:cascade})145 -> 0.0078s146-- create_table("ci_builds", {:id=>:serial, :force=>:cascade})147 -> 0.0521s148-- create_table("ci_builds_metadata", {:id=>:serial, :force=>:cascade})149 -> 0.0087s150-- create_table("ci_builds_runner_session", {:force=>:cascade})151 -> 0.0046s152-- create_table("ci_group_variables", {:id=>:serial, :force=>:cascade})153 -> 0.0067s154-- create_table("ci_job_artifacts", {:id=>:serial, :force=>:cascade})155 -> 0.0134s156-- create_table("ci_job_variables", {:force=>:cascade})157 -> 0.0070s158-- create_table("ci_pipeline_chat_data", {:force=>:cascade})159 -> 0.0065s160-- create_table("ci_pipeline_schedule_variables", {:id=>:serial, :force=>:cascade})161 -> 0.0051s162-- create_table("ci_pipeline_schedules", {:id=>:serial, :force=>:cascade})163 -> 0.0090s164-- create_table("ci_pipeline_variables", {:id=>:serial, :force=>:cascade})165 -> 0.0051s166-- create_table("ci_pipelines", {:id=>:serial, :force=>:cascade})167 -> 0.0291s168-- create_table("ci_runner_namespaces", {:id=>:serial, :force=>:cascade})169 -> 0.0058s170-- create_table("ci_runner_projects", {:id=>:serial, :force=>:cascade})171 -> 0.0060s172-- create_table("ci_runners", {:id=>:serial, :force=>:cascade})173 -> 0.0170s174-- create_table("ci_sources_pipelines", {:id=>:serial, :force=>:cascade})175 -> 0.0116s176-- create_table("ci_stages", {:id=>:serial, :force=>:cascade})177 -> 0.0121s178-- create_table("ci_trigger_requests", {:id=>:serial, :force=>:cascade})179 -> 0.0066s180-- create_table("ci_triggers", {:id=>:serial, :force=>:cascade})181 -> 0.0065s182-- create_table("ci_variables", {:id=>:serial, :force=>:cascade})183 -> 0.0068s184-- create_table("cluster_groups", {:id=>:serial, :force=>:cascade})185 -> 0.0062s186-- create_table("cluster_platforms_kubernetes", {:id=>:serial, :force=>:cascade})187 -> 0.0050s188-- create_table("cluster_projects", {:id=>:serial, :force=>:cascade})189 -> 0.0064s190-- create_table("cluster_providers_gcp", {:id=>:serial, :force=>:cascade})191 -> 0.0077s192-- create_table("clusters", {:id=>:serial, :force=>:cascade})193 -> 0.0116s194-- create_table("clusters_applications_cert_managers", {:id=>:serial, :force=>:cascade})195 -> 0.0057s196-- create_table("clusters_applications_helm", {:id=>:serial, :force=>:cascade})197 -> 0.0054s198-- create_table("clusters_applications_ingress", {:id=>:serial, :force=>:cascade})199 -> 0.0057s200-- create_table("clusters_applications_jupyter", {:id=>:serial, :force=>:cascade})201 -> 0.0068s202-- create_table("clusters_applications_knative", {:id=>:serial, :force=>:cascade})203 -> 0.0049s204-- create_table("clusters_applications_prometheus", {:id=>:serial, :force=>:cascade})205 -> 0.0052s206-- create_table("clusters_applications_runners", {:id=>:serial, :force=>:cascade})207 -> 0.0079s208-- create_table("clusters_kubernetes_namespaces", {:force=>:cascade})209 -> 0.0151s210-- create_table("container_repositories", {:id=>:serial, :force=>:cascade})211 -> 0.0067s212-- create_table("conversational_development_index_metrics", {:id=>:serial, :force=>:cascade})213 -> 0.0070s214-- create_table("dependency_proxy_blobs", {:id=>:serial, :force=>:cascade})215 -> 0.0051s216-- create_table("dependency_proxy_group_settings", {:id=>:serial, :force=>:cascade})217 -> 0.0048s218-- create_table("deploy_keys_projects", {:id=>:serial, :force=>:cascade})219 -> 0.0047s220-- create_table("deploy_tokens", {:id=>:serial, :force=>:cascade})221 -> 0.0098s222-- create_table("deployments", {:id=>:serial, :force=>:cascade})223 -> 0.0228s224-- create_table("design_management_designs", {:force=>:cascade})225 -> 0.0066s226-- create_table("design_management_designs_versions", {:id=>false, :force=>:cascade})227 -> 0.0093s228-- create_table("design_management_versions", {:force=>:cascade})229 -> 0.0087s230-- create_table("draft_notes", {:force=>:cascade})231 -> 0.0092s232-- create_table("elasticsearch_indexed_namespaces", {:id=>false, :force=>:cascade})233 -> 0.0031s234-- create_table("elasticsearch_indexed_projects", {:id=>false, :force=>:cascade})235 -> 0.0030s236-- create_table("emails", {:id=>:serial, :force=>:cascade})237 -> 0.0088s238-- create_table("environments", {:id=>:serial, :force=>:cascade})239 -> 0.0113s240-- create_table("epic_issues", {:id=>:serial, :force=>:cascade})241 -> 0.0061s242-- create_table("epic_metrics", {:id=>:serial, :force=>:cascade})243 -> 0.0041s244-- create_table("epics", {:id=>:serial, :force=>:cascade})245 -> 0.0214s246-- create_table("events", {:id=>:serial, :force=>:cascade})247 -> 0.0167s248-- create_table("external_pull_requests", {:force=>:cascade})249 -> 0.0053s250-- create_table("feature_gates", {:id=>:serial, :force=>:cascade})251 -> 0.0047s252-- create_table("features", {:id=>:serial, :force=>:cascade})253 -> 0.0044s254-- create_table("fork_network_members", {:id=>:serial, :force=>:cascade})255 -> 0.0079s256-- create_table("fork_networks", {:id=>:serial, :force=>:cascade})257 -> 0.0045s258-- create_table("forked_project_links", {:id=>:serial, :force=>:cascade})259 -> 0.0041s260-- create_table("geo_cache_invalidation_events", {:force=>:cascade})261 -> 0.0038s262-- create_table("geo_container_repository_updated_events", {:force=>:cascade})263 -> 0.0045s264-- create_table("geo_event_log", {:force=>:cascade})265 -> 0.0296s266-- create_table("geo_hashed_storage_attachments_events", {:force=>:cascade})267 -> 0.0050s268-- create_table("geo_hashed_storage_migrated_events", {:force=>:cascade})269 -> 0.0055s270-- create_table("geo_job_artifact_deleted_events", {:force=>:cascade})271 -> 0.0047s272-- create_table("geo_lfs_object_deleted_events", {:force=>:cascade})273 -> 0.0054s274-- create_table("geo_node_namespace_links", {:id=>:serial, :force=>:cascade})275 -> 0.0083s276-- create_table("geo_node_statuses", {:id=>:serial, :force=>:cascade})277 -> 0.0060s278-- create_table("geo_nodes", {:id=>:serial, :force=>:cascade})279 -> 0.0135s280-- create_table("geo_repositories_changed_events", {:force=>:cascade})281 -> 0.0046s282-- create_table("geo_repository_created_events", {:force=>:cascade})283 -> 0.0051s284-- create_table("geo_repository_deleted_events", {:force=>:cascade})285 -> 0.0052s286-- create_table("geo_repository_renamed_events", {:force=>:cascade})287 -> 0.0053s288-- create_table("geo_repository_updated_events", {:force=>:cascade})289 -> 0.0088s290-- create_table("geo_reset_checksum_events", {:force=>:cascade})291 -> 0.0049s292-- create_table("geo_upload_deleted_events", {:force=>:cascade})293 -> 0.0060s294-- create_table("gitlab_subscriptions", {:force=>:cascade})295 -> 0.0098s296-- create_table("gpg_key_subkeys", {:id=>:serial, :force=>:cascade})297 -> 0.0100s298-- create_table("gpg_keys", {:id=>:serial, :force=>:cascade})299 -> 0.0096s300-- create_table("gpg_signatures", {:id=>:serial, :force=>:cascade})301 -> 0.0144s302-- create_table("grafana_integrations", {:force=>:cascade})303 -> 0.0052s304-- create_table("group_custom_attributes", {:id=>:serial, :force=>:cascade})305 -> 0.0080s306-- create_table("historical_data", {:id=>:serial, :force=>:cascade})307 -> 0.0026s308-- create_table("identities", {:id=>:serial, :force=>:cascade})309 -> 0.0096s310-- create_table("import_export_uploads", {:id=>:serial, :force=>:cascade})311 -> 0.0076s312-- create_table("index_statuses", {:id=>:serial, :force=>:cascade})313 -> 0.0054s314-- create_table("insights", {:id=>:serial, :force=>:cascade})315 -> 0.0066s316-- create_table("internal_ids", {:force=>:cascade})317 -> 0.0109s318-- create_table("ip_restrictions", {:force=>:cascade})319 -> 0.0051s320-- create_table("issue_assignees", {:id=>false, :force=>:cascade})321 -> 0.0054s322-- create_table("issue_links", {:id=>:serial, :force=>:cascade})323 -> 0.0085s324-- create_table("issue_metrics", {:id=>:serial, :force=>:cascade})325 -> 0.0065s326-- create_table("issue_tracker_data", {:force=>:cascade})327 -> 0.0053s328-- create_table("issues", {:id=>:serial, :force=>:cascade})329 -> 0.0395s330-- create_table("issues_prometheus_alert_events", {:id=>false, :force=>:cascade})331 -> 0.0054s332-- create_table("jira_connect_installations", {:force=>:cascade})333 -> 0.0052s334-- create_table("jira_connect_subscriptions", {:force=>:cascade})335 -> 0.0087s336-- create_table("jira_tracker_data", {:force=>:cascade})337 -> 0.0053s338-- create_table("keys", {:id=>:serial, :force=>:cascade})339 -> 0.0098s340-- create_table("label_links", {:id=>:serial, :force=>:cascade})341 -> 0.0068s342-- create_table("label_priorities", {:id=>:serial, :force=>:cascade})343 -> 0.0089s344-- create_table("labels", {:id=>:serial, :force=>:cascade})345 -> 0.0150s346-- create_table("ldap_group_links", {:id=>:serial, :force=>:cascade})347 -> 0.0029s348-- create_table("lfs_file_locks", {:id=>:serial, :force=>:cascade})349 -> 0.0099s350-- create_table("lfs_objects", {:id=>:serial, :force=>:cascade})351 -> 0.0072s352-- create_table("lfs_objects_projects", {:id=>:serial, :force=>:cascade})353 -> 0.0065s354-- create_table("licenses", {:id=>:serial, :force=>:cascade})355 -> 0.0028s356-- create_table("list_user_preferences", {:force=>:cascade})357 -> 0.0087s358-- create_table("lists", {:id=>:serial, :force=>:cascade})359 -> 0.0136s360-- create_table("members", {:id=>:serial, :force=>:cascade})361 -> 0.0180s362-- create_table("merge_request_assignees", {:force=>:cascade})363 -> 0.0082s364-- create_table("merge_request_blocks", {:force=>:cascade})365 -> 0.0067s366-- create_table("merge_request_diff_commits", {:id=>false, :force=>:cascade})367 -> 0.0063s368-- create_table("merge_request_diff_files", {:id=>false, :force=>:cascade})369 -> 0.0043s370-- create_table("merge_request_diffs", {:id=>:serial, :force=>:cascade})371 -> 0.0076s372-- create_table("merge_request_metrics", {:id=>:serial, :force=>:cascade})373 -> 0.0194s374-- create_table("merge_requests", {:id=>:serial, :force=>:cascade})375 -> 0.0480s376-- create_table("merge_requests_closing_issues", {:id=>:serial, :force=>:cascade})377 -> 0.0065s378-- create_table("merge_trains", {:force=>:cascade})379 -> 0.0108s380-- create_table("milestone_releases", {:id=>false, :force=>:cascade})381 -> 0.0058s382-- create_table("milestones", {:id=>:serial, :force=>:cascade})383 -> 0.0153s384-- create_table("namespace_aggregation_schedules", {:primary_key=>"namespace_id", :id=>:integer, :default=>nil, :force=>:cascade})385 -> 0.0035s386-- create_table("namespace_root_storage_statistics", {:primary_key=>"namespace_id", :id=>:integer, :default=>nil, :force=>:cascade})387 -> 0.0064s388-- create_table("namespace_statistics", {:id=>:serial, :force=>:cascade})389 -> 0.0051s390-- create_table("namespaces", {:id=>:serial, :force=>:cascade})391 -> 0.0474s392-- create_table("note_diff_files", {:id=>:serial, :force=>:cascade})393 -> 0.0049s394-- create_table("notes", {:id=>:serial, :force=>:cascade})395 -> 0.0241s396-- create_table("notification_settings", {:id=>:serial, :force=>:cascade})397 -> 0.0106s398-- create_table("oauth_access_grants", {:id=>:serial, :force=>:cascade})399 -> 0.0051s400-- create_table("oauth_access_tokens", {:id=>:serial, :force=>:cascade})401 -> 0.0113s402-- create_table("oauth_applications", {:id=>:serial, :force=>:cascade})403 -> 0.0078s404-- create_table("oauth_openid_requests", {:id=>:serial, :force=>:cascade})405 -> 0.0047s406-- create_table("operations_feature_flag_scopes", {:force=>:cascade})407 -> 0.0062s408-- create_table("operations_feature_flags", {:force=>:cascade})409 -> 0.0049s410-- create_table("operations_feature_flags_clients", {:force=>:cascade})411 -> 0.0068s412-- create_table("packages_maven_metadata", {:force=>:cascade})413 -> 0.0052s414-- create_table("packages_package_files", {:force=>:cascade})415 -> 0.0051s416-- create_table("packages_package_metadata", {:force=>:cascade})417 -> 0.0048s418-- create_table("packages_package_tags", {:force=>:cascade})419 -> 0.0043s420-- create_table("packages_packages", {:force=>:cascade})421 -> 0.0073s422-- create_table("pages_domain_acme_orders", {:force=>:cascade})423 -> 0.0079s424-- create_table("pages_domains", {:id=>:serial, :force=>:cascade})425 -> 0.0193s426-- create_table("path_locks", {:id=>:serial, :force=>:cascade})427 -> 0.0090s428-- create_table("personal_access_tokens", {:id=>:serial, :force=>:cascade})429 -> 0.0084s430-- create_table("plans", {:id=>:serial, :force=>:cascade})431 -> 0.0056s432-- create_table("pool_repositories", {:force=>:cascade})433 -> 0.0097s434-- create_table("programming_languages", {:id=>:serial, :force=>:cascade})435 -> 0.0056s436-- create_table("project_alerting_settings", {:primary_key=>"project_id", :id=>:integer, :default=>nil, :force=>:cascade})437 -> 0.0022s438-- create_table("project_aliases", {:force=>:cascade})439 -> 0.0075s440-- create_table("project_authorizations", {:id=>false, :force=>:cascade})441 -> 0.0055s442-- create_table("project_auto_devops", {:id=>:serial, :force=>:cascade})443 -> 0.0051s444-- create_table("project_ci_cd_settings", {:id=>:serial, :force=>:cascade})445 -> 0.0056s446-- create_table("project_custom_attributes", {:id=>:serial, :force=>:cascade})447 -> 0.0071s448-- create_table("project_daily_statistics", {:force=>:cascade})449 -> 0.0049s450-- create_table("project_deploy_tokens", {:id=>:serial, :force=>:cascade})451 -> 0.0067s452-- create_table("project_error_tracking_settings", {:primary_key=>"project_id", :id=>:integer, :default=>nil, :force=>:cascade})453 -> 0.0038s454-- create_table("project_feature_usages", {:primary_key=>"project_id", :id=>:integer, :default=>nil, :force=>:cascade})455 -> 0.0085s456-- create_table("project_features", {:id=>:serial, :force=>:cascade})457 -> 0.0078s458-- create_table("project_group_links", {:id=>:serial, :force=>:cascade})459 -> 0.0073s460-- create_table("project_import_data", {:id=>:serial, :force=>:cascade})461 -> 0.0051s462-- create_table("project_incident_management_settings", {:primary_key=>"project_id", :id=>:serial, :force=>:cascade})463 -> 0.0037s464-- create_table("project_metrics_settings", {:primary_key=>"project_id", :id=>:integer, :default=>nil, :force=>:cascade})465 -> 0.0019s466-- create_table("project_mirror_data", {:id=>:serial, :force=>:cascade})467 -> 0.0174s468-- create_table("project_pages_metadata", {:id=>false, :force=>:cascade})469 -> 0.0065s470-- create_table("project_repositories", {:force=>:cascade})471 -> 0.0099s472-- create_table("project_repository_states", {:id=>:serial, :force=>:cascade})473 -> 0.0166s474-- create_table("project_statistics", {:id=>:serial, :force=>:cascade})475 -> 0.0101s476-- create_table("project_tracing_settings", {:force=>:cascade})477 -> 0.0058s478-- create_table("projects", {:id=>:serial, :force=>:cascade})479 -> 0.0726s480-- create_table("prometheus_alert_events", {:force=>:cascade})481 -> 0.0072s482-- create_table("prometheus_alerts", {:id=>:serial, :force=>:cascade})483 -> 0.0097s484-- create_table("prometheus_metrics", {:id=>:serial, :force=>:cascade})485 -> 0.0122s486-- create_table("protected_branch_merge_access_levels", {:id=>:serial, :force=>:cascade})487 -> 0.0094s488-- create_table("protected_branch_push_access_levels", {:id=>:serial, :force=>:cascade})489 -> 0.0092s490-- create_table("protected_branch_unprotect_access_levels", {:id=>:serial, :force=>:cascade})491 -> 0.0097s492-- create_table("protected_branches", {:id=>:serial, :force=>:cascade})493 -> 0.0078s494-- create_table("protected_environment_deploy_access_levels", {:id=>:serial, :force=>:cascade})495 -> 0.0090s496-- create_table("protected_environments", {:id=>:serial, :force=>:cascade})497 -> 0.0071s498-- create_table("protected_tag_create_access_levels", {:id=>:serial, :force=>:cascade})499 -> 0.0091s500-- create_table("protected_tags", {:id=>:serial, :force=>:cascade})501 -> 0.0068s502-- create_table("push_event_payloads", {:id=>false, :force=>:cascade})503 -> 0.0039s504-- create_table("push_rules", {:id=>:serial, :force=>:cascade})505 -> 0.0095s506-- create_table("redirect_routes", {:id=>:serial, :force=>:cascade})507 -> 0.0086s508-- create_table("release_links", {:force=>:cascade})509 -> 0.0067s510-- create_table("releases", {:id=>:serial, :force=>:cascade})511 -> 0.0070s512-- create_table("remote_mirrors", {:id=>:serial, :force=>:cascade})513 -> 0.0078s514-- create_table("repository_languages", {:id=>false, :force=>:cascade})515 -> 0.0031s516-- create_table("resource_label_events", {:force=>:cascade})517 -> 0.0122s518-- create_table("reviews", {:force=>:cascade})519 -> 0.0078s520-- create_table("routes", {:id=>:serial, :force=>:cascade})521 -> 0.0086s522-- create_table("saml_providers", {:id=>:serial, :force=>:cascade})523 -> 0.0057s524-- create_table("scim_oauth_access_tokens", {:id=>:serial, :force=>:cascade})525 -> 0.0049s526-- create_table("sent_notifications", {:id=>:serial, :force=>:cascade})527 -> 0.0047s528-- create_table("services", {:id=>:serial, :force=>:cascade})529 -> 0.0154s530-- create_table("shards", {:id=>:serial, :force=>:cascade})531 -> 0.0047s532-- create_table("slack_integrations", {:id=>:serial, :force=>:cascade})533 -> 0.0066s534-- create_table("smartcard_identities", {:force=>:cascade})535 -> 0.0064s536-- create_table("snippets", {:id=>:serial, :force=>:cascade})537 -> 0.0172s538-- create_table("software_license_policies", {:id=>:serial, :force=>:cascade})539 -> 0.0066s540-- create_table("software_licenses", {:id=>:serial, :force=>:cascade})541 -> 0.0067s542-- create_table("spam_logs", {:id=>:serial, :force=>:cascade})543 -> 0.0036s544-- create_table("subscriptions", {:id=>:serial, :force=>:cascade})545 -> 0.0069s546-- create_table("suggestions", {:force=>:cascade})547 -> 0.0067s548-- create_table("system_note_metadata", {:id=>:serial, :force=>:cascade})549 -> 0.0045s550-- create_table("taggings", {:id=>:serial, :force=>:cascade})551 -> 0.0107s552-- create_table("tags", {:id=>:serial, :force=>:cascade})553 -> 0.0069s554-- create_table("term_agreements", {:id=>:serial, :force=>:cascade})555 -> 0.0083s556-- create_table("timelogs", {:id=>:serial, :force=>:cascade})557 -> 0.0080s558-- create_table("todos", {:id=>:serial, :force=>:cascade})559 -> 0.0250s560-- create_table("trending_projects", {:id=>:serial, :force=>:cascade})561 -> 0.0045s562-- create_table("u2f_registrations", {:id=>:serial, :force=>:cascade})563 -> 0.0078s564-- create_table("uploads", {:id=>:serial, :force=>:cascade})565 -> 0.0116s566-- create_table("user_agent_details", {:id=>:serial, :force=>:cascade})567 -> 0.0059s568-- create_table("user_callouts", {:id=>:serial, :force=>:cascade})569 -> 0.0066s570-- create_table("user_custom_attributes", {:id=>:serial, :force=>:cascade})571 -> 0.0078s572-- create_table("user_interacted_projects", {:id=>false, :force=>:cascade})573 -> 0.0057s574-- create_table("user_preferences", {:id=>:serial, :force=>:cascade})575 -> 0.0072s576-- create_table("user_statuses", {:primary_key=>"user_id", :id=>:serial, :force=>:cascade})577 -> 0.0053s578-- create_table("user_synced_attributes_metadata", {:id=>:serial, :force=>:cascade})579 -> 0.0062s580-- create_table("users", {:id=>:serial, :force=>:cascade})581 -> 0.0697s582-- create_table("users_ops_dashboard_projects", {:force=>:cascade})583 -> 0.0069s584-- create_table("users_star_projects", {:id=>:serial, :force=>:cascade})585 -> 0.0070s586-- create_table("vulnerabilities", {:force=>:cascade})587 -> 0.0242s588-- create_table("vulnerability_feedback", {:id=>:serial, :force=>:cascade})589 -> 0.0176s590-- create_table("vulnerability_identifiers", {:force=>:cascade})591 -> 0.0062s592-- create_table("vulnerability_occurrence_identifiers", {:force=>:cascade})593 -> 0.0071s594-- create_table("vulnerability_occurrence_pipelines", {:force=>:cascade})595 -> 0.0073s596-- create_table("vulnerability_occurrences", {:force=>:cascade})597 -> 0.0144s598-- create_table("vulnerability_scanners", {:force=>:cascade})599 -> 0.0054s600-- create_table("web_hook_logs", {:id=>:serial, :force=>:cascade})601 -> 0.0079s602-- create_table("web_hooks", {:id=>:serial, :force=>:cascade})603 -> 0.0134s604-- add_foreign_key("alerts_service_data", "services", {:on_delete=>:cascade})605 -> 0.0026s606-- add_foreign_key("allowed_email_domains", "namespaces", {:column=>"group_id", :on_delete=>:cascade})607 -> 0.0023s608-- add_foreign_key("analytics_cycle_analytics_group_stages", "labels", {:column=>"end_event_label_id", :on_delete=>:cascade})609 -> 0.0018s610-- add_foreign_key("analytics_cycle_analytics_group_stages", "labels", {:column=>"start_event_label_id", :on_delete=>:cascade})611 -> 0.0013s612-- add_foreign_key("analytics_cycle_analytics_group_stages", "namespaces", {:column=>"group_id", :on_delete=>:cascade})613 -> 0.0014s614-- add_foreign_key("analytics_cycle_analytics_project_stages", "labels", {:column=>"end_event_label_id", :on_delete=>:cascade})615 -> 0.0014s616-- add_foreign_key("analytics_cycle_analytics_project_stages", "labels", {:column=>"start_event_label_id", :on_delete=>:cascade})617 -> 0.0012s618-- add_foreign_key("analytics_cycle_analytics_project_stages", "projects", {:on_delete=>:cascade})619 -> 0.0032s620-- add_foreign_key("analytics_language_trend_repository_languages", "programming_languages", {:on_delete=>:cascade})621 -> 0.0017s622-- add_foreign_key("analytics_language_trend_repository_languages", "projects", {:on_delete=>:cascade})623 -> 0.0017s624-- add_foreign_key("analytics_repository_file_commits", "analytics_repository_files", {:on_delete=>:cascade})625 -> 0.0016s626-- add_foreign_key("analytics_repository_file_commits", "projects", {:on_delete=>:cascade})627 -> 0.0017s628-- add_foreign_key("analytics_repository_files", "projects", {:on_delete=>:cascade})629 -> 0.0015s630-- add_foreign_key("application_settings", "namespaces", {:column=>"custom_project_templates_group_id", :on_delete=>:nullify})631 -> 0.0032s632-- add_foreign_key("application_settings", "projects", {:column=>"file_template_project_id", :name=>"fk_ec757bd087", :on_delete=>:nullify})633 -> 0.0023s634-- add_foreign_key("application_settings", "projects", {:column=>"instance_administration_project_id", :on_delete=>:nullify})635 -> 0.0030s636-- add_foreign_key("application_settings", "users", {:column=>"usage_stats_set_by_user_id", :name=>"fk_964370041d", :on_delete=>:nullify})637 -> 0.0033s638-- add_foreign_key("approval_merge_request_rule_sources", "approval_merge_request_rules", {:on_delete=>:cascade})639 -> 0.0018s640-- add_foreign_key("approval_merge_request_rule_sources", "approval_project_rules", {:on_delete=>:cascade})641 -> 0.0014s642-- add_foreign_key("approval_merge_request_rules", "merge_requests", {:on_delete=>:cascade})643 -> 0.0023s644-- add_foreign_key("approval_merge_request_rules_approved_approvers", "approval_merge_request_rules", {:on_delete=>:cascade})645 -> 0.0013s646-- add_foreign_key("approval_merge_request_rules_approved_approvers", "users", {:on_delete=>:cascade})647 -> 0.0016s648-- add_foreign_key("approval_merge_request_rules_groups", "approval_merge_request_rules", {:on_delete=>:cascade})649 -> 0.0014s650-- add_foreign_key("approval_merge_request_rules_groups", "namespaces", {:column=>"group_id", :on_delete=>:cascade})651 -> 0.0013s652-- add_foreign_key("approval_merge_request_rules_users", "approval_merge_request_rules", {:on_delete=>:cascade})653 -> 0.0013s654-- add_foreign_key("approval_merge_request_rules_users", "users", {:on_delete=>:cascade})655 -> 0.0015s656-- add_foreign_key("approval_project_rules", "projects", {:on_delete=>:cascade})657 -> 0.0016s658-- add_foreign_key("approval_project_rules_groups", "approval_project_rules", {:on_delete=>:cascade})659 -> 0.0012s660-- add_foreign_key("approval_project_rules_groups", "namespaces", {:column=>"group_id", :on_delete=>:cascade})661 -> 0.0013s662-- add_foreign_key("approval_project_rules_users", "approval_project_rules", {:on_delete=>:cascade})663 -> 0.0012s664-- add_foreign_key("approval_project_rules_users", "users", {:on_delete=>:cascade})665 -> 0.0016s666-- add_foreign_key("approvals", "merge_requests", {:name=>"fk_310d714958", :on_delete=>:cascade})667 -> 0.0015s668-- add_foreign_key("approver_groups", "namespaces", {:column=>"group_id", :on_delete=>:cascade})669 -> 0.0014s670-- add_foreign_key("badges", "namespaces", {:column=>"group_id", :on_delete=>:cascade})671 -> 0.0015s672-- add_foreign_key("badges", "projects", {:on_delete=>:cascade})673 -> 0.0016s674-- add_foreign_key("board_assignees", "boards", {:on_delete=>:cascade})675 -> 0.0014s676-- add_foreign_key("board_assignees", "users", {:column=>"assignee_id", :on_delete=>:cascade})677 -> 0.0014s678-- add_foreign_key("board_group_recent_visits", "boards", {:on_delete=>:cascade})679 -> 0.0015s680-- add_foreign_key("board_group_recent_visits", "namespaces", {:column=>"group_id", :on_delete=>:cascade})681 -> 0.0013s682-- add_foreign_key("board_group_recent_visits", "users", {:on_delete=>:cascade})683 -> 0.0017s684-- add_foreign_key("board_labels", "boards", {:on_delete=>:cascade})685 -> 0.0013s686-- add_foreign_key("board_labels", "labels", {:on_delete=>:cascade})687 -> 0.0013s688-- add_foreign_key("board_project_recent_visits", "boards", {:on_delete=>:cascade})689 -> 0.0013s690-- add_foreign_key("board_project_recent_visits", "projects", {:on_delete=>:cascade})691 -> 0.0018s692-- add_foreign_key("board_project_recent_visits", "users", {:on_delete=>:cascade})693 -> 0.0016s694-- add_foreign_key("boards", "namespaces", {:column=>"group_id", :name=>"fk_1e9a074a35", :on_delete=>:cascade})695 -> 0.0014s696-- add_foreign_key("boards", "projects", {:name=>"fk_f15266b5f9", :on_delete=>:cascade})697 -> 0.0015s698-- add_foreign_key("chat_teams", "namespaces", {:on_delete=>:cascade})699 -> 0.0015s700-- add_foreign_key("ci_build_needs", "ci_builds", {:column=>"build_id", :on_delete=>:cascade})701 -> 0.0024s702-- add_foreign_key("ci_build_trace_chunks", "ci_builds", {:column=>"build_id", :on_delete=>:cascade})703 -> 0.0014s704-- add_foreign_key("ci_build_trace_section_names", "projects", {:on_delete=>:cascade})705 -> 0.0016s706-- add_foreign_key("ci_build_trace_sections", "ci_build_trace_section_names", {:column=>"section_name_id", :name=>"fk_264e112c66", :on_delete=>:cascade})707 -> 0.0012s708-- add_foreign_key("ci_build_trace_sections", "ci_builds", {:column=>"build_id", :name=>"fk_4ebe41f502", :on_delete=>:cascade})709 -> 0.0013s710-- add_foreign_key("ci_build_trace_sections", "projects", {:on_delete=>:cascade})711 -> 0.0016s712-- add_foreign_key("ci_builds", "ci_pipelines", {:column=>"auto_canceled_by_id", :name=>"fk_a2141b1522", :on_delete=>:nullify})713 -> 0.0022s714-- add_foreign_key("ci_builds", "ci_pipelines", {:column=>"commit_id", :name=>"fk_d3130c9a7f", :on_delete=>:cascade})715 -> 0.0015s716-- add_foreign_key("ci_builds", "ci_pipelines", {:column=>"upstream_pipeline_id", :name=>"fk_87f4cefcda", :on_delete=>:cascade})717 -> 0.0013s718-- add_foreign_key("ci_builds", "ci_stages", {:column=>"stage_id", :name=>"fk_3a9eaa254d", :on_delete=>:cascade})719 -> 0.0015s720-- add_foreign_key("ci_builds", "projects", {:name=>"fk_befce0568a", :on_delete=>:cascade})721 -> 0.0020s722-- add_foreign_key("ci_builds_metadata", "ci_builds", {:column=>"build_id", :on_delete=>:cascade})723 -> 0.0015s724-- add_foreign_key("ci_builds_metadata", "projects", {:on_delete=>:cascade})725 -> 0.0016s726-- add_foreign_key("ci_builds_runner_session", "ci_builds", {:column=>"build_id", :on_delete=>:cascade})727 -> 0.0014s728-- add_foreign_key("ci_group_variables", "namespaces", {:column=>"group_id", :name=>"fk_33ae4d58d8", :on_delete=>:cascade})729 -> 0.0014s730-- add_foreign_key("ci_job_artifacts", "ci_builds", {:column=>"job_id", :on_delete=>:cascade})731 -> 0.0015s732-- add_foreign_key("ci_job_artifacts", "projects", {:on_delete=>:cascade})733 -> 0.0016s734-- add_foreign_key("ci_job_variables", "ci_builds", {:column=>"job_id", :on_delete=>:cascade})735 -> 0.0015s736-- add_foreign_key("ci_pipeline_chat_data", "chat_names", {:on_delete=>:cascade})737 -> 0.0014s738-- add_foreign_key("ci_pipeline_chat_data", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:cascade})739 -> 0.0012s740-- add_foreign_key("ci_pipeline_schedule_variables", "ci_pipeline_schedules", {:column=>"pipeline_schedule_id", :name=>"fk_41c35fda51", :on_delete=>:cascade})741 -> 0.0013s742-- add_foreign_key("ci_pipeline_schedules", "projects", {:name=>"fk_8ead60fcc4", :on_delete=>:cascade})743 -> 0.0016s744-- add_foreign_key("ci_pipeline_schedules", "users", {:column=>"owner_id", :name=>"fk_9ea99f58d2", :on_delete=>:nullify})745 -> 0.0015s746-- add_foreign_key("ci_pipeline_variables", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_f29c5f4380", :on_delete=>:cascade})747 -> 0.0013s748-- add_foreign_key("ci_pipelines", "ci_pipeline_schedules", {:column=>"pipeline_schedule_id", :name=>"fk_3d34ab2e06", :on_delete=>:nullify})749 -> 0.0012s750-- add_foreign_key("ci_pipelines", "ci_pipelines", {:column=>"auto_canceled_by_id", :name=>"fk_262d4c2d19", :on_delete=>:nullify})751 -> 0.0012s752-- add_foreign_key("ci_pipelines", "external_pull_requests", {:name=>"fk_190998ef09", :on_delete=>:nullify})753 -> 0.0015s754-- add_foreign_key("ci_pipelines", "merge_requests", {:name=>"fk_a23be95014", :on_delete=>:cascade})755 -> 0.0016s756-- add_foreign_key("ci_pipelines", "projects", {:name=>"fk_86635dbd80", :on_delete=>:cascade})757 -> 0.0017s758-- add_foreign_key("ci_runner_namespaces", "ci_runners", {:column=>"runner_id", :on_delete=>:cascade})759 -> 0.0015s760-- add_foreign_key("ci_runner_namespaces", "namespaces", {:on_delete=>:cascade})761 -> 0.0015s762-- add_foreign_key("ci_runner_projects", "projects", {:name=>"fk_4478a6f1e4", :on_delete=>:cascade})763 -> 0.0018s764-- add_foreign_key("ci_sources_pipelines", "ci_builds", {:column=>"source_job_id", :name=>"fk_be5624bf37", :on_delete=>:cascade})765 -> 0.0016s766-- add_foreign_key("ci_sources_pipelines", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_e1bad85861", :on_delete=>:cascade})767 -> 0.0013s768-- add_foreign_key("ci_sources_pipelines", "ci_pipelines", {:column=>"source_pipeline_id", :name=>"fk_d4e29af7d7", :on_delete=>:cascade})769 -> 0.0012s770-- add_foreign_key("ci_sources_pipelines", "projects", {:column=>"source_project_id", :name=>"fk_acd9737679", :on_delete=>:cascade})771 -> 0.0016s772-- add_foreign_key("ci_sources_pipelines", "projects", {:name=>"fk_1e53c97c0a", :on_delete=>:cascade})773 -> 0.0016s774-- add_foreign_key("ci_stages", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_fb57e6cc56", :on_delete=>:cascade})775 -> 0.0019s776-- add_foreign_key("ci_stages", "projects", {:name=>"fk_2360681d1d", :on_delete=>:cascade})777 -> 0.0015s778-- add_foreign_key("ci_trigger_requests", "ci_triggers", {:column=>"trigger_id", :name=>"fk_b8ec8b7245", :on_delete=>:cascade})779 -> 0.0013s780-- add_foreign_key("ci_triggers", "projects", {:name=>"fk_e3e63f966e", :on_delete=>:cascade})781 -> 0.0015s782-- add_foreign_key("ci_triggers", "users", {:column=>"owner_id", :name=>"fk_e8e10d1964", :on_delete=>:cascade})783 -> 0.0017s784-- add_foreign_key("ci_variables", "projects", {:name=>"fk_ada5eb64b3", :on_delete=>:cascade})785 -> 0.0017s786-- add_foreign_key("cluster_groups", "clusters", {:on_delete=>:cascade})787 -> 0.0015s788-- add_foreign_key("cluster_groups", "namespaces", {:column=>"group_id", :on_delete=>:cascade})789 -> 0.0014s790-- add_foreign_key("cluster_platforms_kubernetes", "clusters", {:on_delete=>:cascade})791 -> 0.0013s792-- add_foreign_key("cluster_projects", "clusters", {:on_delete=>:cascade})793 -> 0.0013s794-- add_foreign_key("cluster_projects", "projects", {:on_delete=>:cascade})795 -> 0.0016s796-- add_foreign_key("cluster_providers_gcp", "clusters", {:on_delete=>:cascade})797 -> 0.0013s798-- add_foreign_key("clusters", "projects", {:column=>"management_project_id", :name=>"fk_f05c5e5a42", :on_delete=>:nullify})799 -> 0.0015s800-- add_foreign_key("clusters", "users", {:on_delete=>:nullify})801 -> 0.0016s802-- add_foreign_key("clusters_applications_cert_managers", "clusters", {:on_delete=>:cascade})803 -> 0.0013s804-- add_foreign_key("clusters_applications_helm", "clusters", {:on_delete=>:cascade})805 -> 0.0012s806-- add_foreign_key("clusters_applications_ingress", "clusters", {:on_delete=>:cascade})807 -> 0.0015s808-- add_foreign_key("clusters_applications_jupyter", "clusters", {:on_delete=>:cascade})809 -> 0.0013s810-- add_foreign_key("clusters_applications_jupyter", "oauth_applications", {:on_delete=>:nullify})811 -> 0.0014s812-- add_foreign_key("clusters_applications_knative", "clusters", {:on_delete=>:cascade})813 -> 0.0013s814-- add_foreign_key("clusters_applications_prometheus", "clusters", {:name=>"fk_557e773639", :on_delete=>:cascade})815 -> 0.0012s816-- add_foreign_key("clusters_applications_runners", "ci_runners", {:column=>"runner_id", :name=>"fk_02de2ded36", :on_delete=>:nullify})817 -> 0.0014s818-- add_foreign_key("clusters_applications_runners", "clusters", {:on_delete=>:cascade})819 -> 0.0012s820-- add_foreign_key("clusters_kubernetes_namespaces", "cluster_projects", {:on_delete=>:nullify})821 -> 0.0018s822-- add_foreign_key("clusters_kubernetes_namespaces", "clusters", {:on_delete=>:cascade})823 -> 0.0013s824-- add_foreign_key("clusters_kubernetes_namespaces", "environments", {:on_delete=>:nullify})825 -> 0.0018s826-- add_foreign_key("clusters_kubernetes_namespaces", "projects", {:on_delete=>:nullify})827 -> 0.0021s828-- add_foreign_key("container_repositories", "projects")829 -> 0.0019s830-- add_foreign_key("dependency_proxy_blobs", "namespaces", {:column=>"group_id", :on_delete=>:cascade})831 -> 0.0017s832-- add_foreign_key("dependency_proxy_group_settings", "namespaces", {:column=>"group_id", :on_delete=>:cascade})833 -> 0.0015s834-- add_foreign_key("deploy_keys_projects", "projects", {:name=>"fk_58a901ca7e", :on_delete=>:cascade})835 -> 0.0018s836-- add_foreign_key("deployments", "clusters", {:name=>"fk_289bba3222", :on_delete=>:nullify})837 -> 0.0020s838-- add_foreign_key("deployments", "projects", {:name=>"fk_b9a3851b82", :on_delete=>:cascade})839 -> 0.0020s840-- add_foreign_key("design_management_designs", "issues", {:on_delete=>:cascade})841 -> 0.0027s842-- add_foreign_key("design_management_designs", "projects", {:on_delete=>:cascade})843 -> 0.0019s844-- add_foreign_key("design_management_designs_versions", "design_management_designs", {:column=>"design_id", :name=>"fk_03c671965c", :on_delete=>:cascade})845 -> 0.0014s846-- add_foreign_key("design_management_designs_versions", "design_management_versions", {:column=>"version_id", :name=>"fk_f4d25ba00c", :on_delete=>:cascade})847 -> 0.0014s848-- add_foreign_key("design_management_versions", "issues", {:on_delete=>:cascade})849 -> 0.0015s850-- add_foreign_key("design_management_versions", "users", {:name=>"fk_ee16b939e5", :on_delete=>:nullify})851 -> 0.0020s852-- add_foreign_key("draft_notes", "merge_requests", {:on_delete=>:cascade})853 -> 0.0019s854-- add_foreign_key("draft_notes", "users", {:column=>"author_id", :on_delete=>:cascade})855 -> 0.0018s856-- add_foreign_key("elasticsearch_indexed_namespaces", "namespaces", {:on_delete=>:cascade})857 -> 0.0015s858-- add_foreign_key("elasticsearch_indexed_projects", "projects", {:on_delete=>:cascade})859 -> 0.0016s860-- add_foreign_key("environments", "projects", {:name=>"fk_d1c8c1da6a", :on_delete=>:cascade})861 -> 0.0018s862-- add_foreign_key("epic_issues", "epics", {:on_delete=>:cascade})863 -> 0.0020s864-- add_foreign_key("epic_issues", "issues", {:on_delete=>:cascade})865 -> 0.0015s866-- add_foreign_key("epic_metrics", "epics", {:on_delete=>:cascade})867 -> 0.0015s868-- add_foreign_key("epics", "epics", {:column=>"parent_id", :name=>"fk_25b99c1be3", :on_delete=>:cascade})869 -> 0.0013s870-- add_foreign_key("epics", "milestones", {:on_delete=>:nullify})871 -> 0.0020s872-- add_foreign_key("epics", "namespaces", {:column=>"group_id", :name=>"fk_f081aa4489", :on_delete=>:cascade})873 -> 0.0016s874-- add_foreign_key("epics", "users", {:column=>"assignee_id", :name=>"fk_dccd3f98fc", :on_delete=>:nullify})875 -> 0.0019s876-- add_foreign_key("epics", "users", {:column=>"author_id", :name=>"fk_3654b61b03", :on_delete=>:cascade})877 -> 0.0015s878-- add_foreign_key("epics", "users", {:column=>"closed_by_id", :name=>"fk_aa5798e761", :on_delete=>:nullify})879 -> 0.0015s880-- add_foreign_key("events", "namespaces", {:column=>"group_id", :name=>"fk_61fbf6ca48", :on_delete=>:cascade})881 -> 0.0019s882-- add_foreign_key("events", "projects", {:on_delete=>:cascade})883 -> 0.0019s884-- add_foreign_key("events", "users", {:column=>"author_id", :name=>"fk_edfd187b6f", :on_delete=>:cascade})885 -> 0.0016s886-- add_foreign_key("external_pull_requests", "projects", {:on_delete=>:cascade})887 -> 0.0018s888-- add_foreign_key("fork_network_members", "fork_networks", {:on_delete=>:cascade})889 -> 0.0017s890-- add_foreign_key("fork_network_members", "projects", {:column=>"forked_from_project_id", :name=>"fk_b01280dae4", :on_delete=>:nullify})891 -> 0.0017s892-- add_foreign_key("fork_network_members", "projects", {:on_delete=>:cascade})893 -> 0.0018s894-- add_foreign_key("fork_networks", "projects", {:column=>"root_project_id", :name=>"fk_e7b436b2b5", :on_delete=>:nullify})895 -> 0.0015s896-- add_foreign_key("forked_project_links", "projects", {:column=>"forked_to_project_id", :name=>"fk_434510edb0", :on_delete=>:cascade})897 -> 0.0016s898-- add_foreign_key("geo_container_repository_updated_events", "container_repositories", {:name=>"fk_212c89c706", :on_delete=>:cascade})899 -> 0.0014s900-- add_foreign_key("geo_event_log", "geo_cache_invalidation_events", {:column=>"cache_invalidation_event_id", :name=>"fk_42c3b54bed", :on_delete=>:cascade})901 -> 0.0018s902-- add_foreign_key("geo_event_log", "geo_container_repository_updated_events", {:column=>"container_repository_updated_event_id", :name=>"fk_6ada82d42a", :on_delete=>:cascade})903 -> 0.0012s904-- add_foreign_key("geo_event_log", "geo_hashed_storage_migrated_events", {:column=>"hashed_storage_migrated_event_id", :name=>"fk_27548c6db3", :on_delete=>:cascade})905 -> 0.0013s906-- add_foreign_key("geo_event_log", "geo_job_artifact_deleted_events", {:column=>"job_artifact_deleted_event_id", :name=>"fk_176d3fbb5d", :on_delete=>:cascade})907 -> 0.0013s908-- add_foreign_key("geo_event_log", "geo_lfs_object_deleted_events", {:column=>"lfs_object_deleted_event_id", :name=>"fk_d5af95fcd9", :on_delete=>:cascade})909 -> 0.0012s910-- add_foreign_key("geo_event_log", "geo_repositories_changed_events", {:column=>"repositories_changed_event_id", :name=>"fk_4a99ebfd60", :on_delete=>:cascade})911 -> 0.0015s912-- add_foreign_key("geo_event_log", "geo_repository_created_events", {:column=>"repository_created_event_id", :name=>"fk_9b9afb1916", :on_delete=>:cascade})913 -> 0.0014s914-- add_foreign_key("geo_event_log", "geo_repository_deleted_events", {:column=>"repository_deleted_event_id", :name=>"fk_c4b1c1f66e", :on_delete=>:cascade})915 -> 0.0019s916-- add_foreign_key("geo_event_log", "geo_repository_renamed_events", {:column=>"repository_renamed_event_id", :name=>"fk_86c84214ec", :on_delete=>:cascade})917 -> 0.0013s918-- add_foreign_key("geo_event_log", "geo_repository_updated_events", {:column=>"repository_updated_event_id", :name=>"fk_78a6492f68", :on_delete=>:cascade})919 -> 0.0014s920-- add_foreign_key("geo_event_log", "geo_reset_checksum_events", {:column=>"reset_checksum_event_id", :name=>"fk_cff7185ad2", :on_delete=>:cascade})921 -> 0.0012s922-- add_foreign_key("geo_event_log", "geo_upload_deleted_events", {:column=>"upload_deleted_event_id", :name=>"fk_c1f241c70d", :on_delete=>:cascade})923 -> 0.0012s924-- add_foreign_key("geo_hashed_storage_attachments_events", "projects", {:on_delete=>:cascade})925 -> 0.0019s926-- add_foreign_key("geo_hashed_storage_migrated_events", "projects", {:on_delete=>:cascade})927 -> 0.0018s928-- add_foreign_key("geo_node_namespace_links", "geo_nodes", {:on_delete=>:cascade})929 -> 0.0016s930-- add_foreign_key("geo_node_namespace_links", "namespaces", {:on_delete=>:cascade})931 -> 0.0015s932-- add_foreign_key("geo_node_statuses", "geo_nodes", {:on_delete=>:cascade})933 -> 0.0016s934-- add_foreign_key("geo_repositories_changed_events", "geo_nodes", {:on_delete=>:cascade})935 -> 0.0012s936-- add_foreign_key("geo_repository_created_events", "projects", {:on_delete=>:cascade})937 -> 0.0017s938-- add_foreign_key("geo_repository_renamed_events", "projects", {:on_delete=>:cascade})939 -> 0.0016s940-- add_foreign_key("geo_repository_updated_events", "projects", {:on_delete=>:cascade})941 -> 0.0016s942-- add_foreign_key("geo_reset_checksum_events", "projects", {:on_delete=>:cascade})943 -> 0.0015s944-- add_foreign_key("gitlab_subscriptions", "namespaces", {:name=>"fk_e2595d00a1", :on_delete=>:cascade})945 -> 0.0016s946-- add_foreign_key("gitlab_subscriptions", "plans", {:column=>"hosted_plan_id", :name=>"fk_bd0c4019c3", :on_delete=>:cascade})947 -> 0.0013s948-- add_foreign_key("gpg_key_subkeys", "gpg_keys", {:on_delete=>:cascade})949 -> 0.0014s950-- add_foreign_key("gpg_keys", "users", {:on_delete=>:cascade})951 -> 0.0017s952-- add_foreign_key("gpg_signatures", "gpg_key_subkeys", {:on_delete=>:nullify})953 -> 0.0015s954-- add_foreign_key("gpg_signatures", "gpg_keys", {:on_delete=>:nullify})955 -> 0.0013s956-- add_foreign_key("gpg_signatures", "projects", {:on_delete=>:cascade})957 -> 0.0017s958-- add_foreign_key("grafana_integrations", "projects", {:on_delete=>:cascade})959 -> 0.0018s960-- add_foreign_key("group_custom_attributes", "namespaces", {:column=>"group_id", :on_delete=>:cascade})961 -> 0.0016s962-- add_foreign_key("identities", "saml_providers", {:name=>"fk_aade90f0fc", :on_delete=>:cascade})963 -> 0.0015s964-- add_foreign_key("import_export_uploads", "projects", {:on_delete=>:cascade})965 -> 0.0018s966-- add_foreign_key("index_statuses", "projects", {:name=>"fk_74b2492545", :on_delete=>:cascade})967 -> 0.0016s968-- add_foreign_key("insights", "namespaces", {:on_delete=>:cascade})969 -> 0.0016s970-- add_foreign_key("insights", "projects", {:on_delete=>:cascade})971 -> 0.0015s972-- add_foreign_key("internal_ids", "namespaces", {:name=>"fk_162941d509", :on_delete=>:cascade})973 -> 0.0089s974-- add_foreign_key("internal_ids", "projects", {:on_delete=>:cascade})975 -> 0.0058s976-- add_foreign_key("ip_restrictions", "namespaces", {:column=>"group_id", :on_delete=>:cascade})977 -> 0.0031s978-- add_foreign_key("issue_assignees", "issues", {:name=>"fk_b7d881734a", :on_delete=>:cascade})979 -> 0.0054s980-- add_foreign_key("issue_assignees", "users", {:name=>"fk_5e0c8d9154", :on_delete=>:cascade})981 -> 0.0028s982-- add_foreign_key("issue_links", "issues", {:column=>"source_id", :name=>"fk_c900194ff2", :on_delete=>:cascade})983 -> 0.0048s984-- add_foreign_key("issue_links", "issues", {:column=>"target_id", :name=>"fk_e71bb44f1f", :on_delete=>:cascade})985 -> 0.0047s986-- add_foreign_key("issue_metrics", "issues", {:on_delete=>:cascade})987 -> 0.0049s988-- add_foreign_key("issue_tracker_data", "services", {:on_delete=>:cascade})989 -> 0.0033s990-- add_foreign_key("issues", "issues", {:column=>"duplicated_to_id", :name=>"fk_9c4516d665", :on_delete=>:nullify})991 -> 0.0033s992-- add_foreign_key("issues", "issues", {:column=>"moved_to_id", :name=>"fk_a194299be1", :on_delete=>:nullify})993 -> 0.0037s994-- add_foreign_key("issues", "milestones", {:name=>"fk_96b1dd429c", :on_delete=>:nullify})995 -> 0.0044s996-- add_foreign_key("issues", "projects", {:name=>"fk_899c8f3231", :on_delete=>:cascade})997 -> 0.0051s998-- add_foreign_key("issues", "users", {:column=>"author_id", :name=>"fk_05f1e72feb", :on_delete=>:nullify})999 -> 0.0055s1000-- add_foreign_key("issues", "users", {:column=>"closed_by_id", :name=>"fk_c63cbf6c25", :on_delete=>:nullify})1001 -> 0.0066s1002-- add_foreign_key("issues", "users", {:column=>"updated_by_id", :name=>"fk_ffed080f01", :on_delete=>:nullify})1003 -> 0.0047s1004-- add_foreign_key("issues_prometheus_alert_events", "issues", {:on_delete=>:cascade})1005 -> 0.0036s1006-- add_foreign_key("issues_prometheus_alert_events", "prometheus_alert_events", {:on_delete=>:cascade})1007 -> 0.0028s1008-- add_foreign_key("jira_connect_subscriptions", "jira_connect_installations", {:on_delete=>:cascade})1009 -> 0.0029s1010-- add_foreign_key("jira_connect_subscriptions", "namespaces", {:on_delete=>:cascade})1011 -> 0.0029s1012-- add_foreign_key("jira_tracker_data", "services", {:on_delete=>:cascade})1013 -> 0.0027s1014-- add_foreign_key("label_links", "labels", {:name=>"fk_d97dd08678", :on_delete=>:cascade})1015 -> 0.0026s1016-- add_foreign_key("label_priorities", "labels", {:on_delete=>:cascade})1017 -> 0.0025s1018-- add_foreign_key("label_priorities", "projects", {:on_delete=>:cascade})1019 -> 0.0031s1020-- add_foreign_key("labels", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1021 -> 0.0028s1022-- add_foreign_key("labels", "projects", {:name=>"fk_7de4989a69", :on_delete=>:cascade})1023 -> 0.0032s1024-- add_foreign_key("lfs_file_locks", "projects", {:on_delete=>:cascade})1025 -> 0.0031s1026-- add_foreign_key("lfs_file_locks", "users", {:on_delete=>:cascade})1027 -> 0.0028s1028-- add_foreign_key("list_user_preferences", "lists", {:on_delete=>:cascade})1029 -> 0.0031s1030-- add_foreign_key("list_user_preferences", "users", {:on_delete=>:cascade})1031 -> 0.0028s1032-- add_foreign_key("lists", "boards", {:name=>"fk_0d3f677137", :on_delete=>:cascade})1033 -> 0.0027s1034-- add_foreign_key("lists", "labels", {:name=>"fk_7a5553d60f", :on_delete=>:cascade})1035 -> 0.0027s1036-- add_foreign_key("lists", "milestones", {:on_delete=>:cascade})1037 -> 0.0030s1038-- add_foreign_key("lists", "users", {:name=>"fk_d6cf4279f7", :on_delete=>:cascade})1039 -> 0.0046s1040-- add_foreign_key("members", "users", {:name=>"fk_2e88fb7ce9", :on_delete=>:cascade})1041 -> 0.0038s1042-- add_foreign_key("merge_request_assignees", "merge_requests", {:on_delete=>:cascade})1043 -> 0.0034s1044-- add_foreign_key("merge_request_assignees", "users", {:on_delete=>:cascade})1045 -> 0.0030s1046-- add_foreign_key("merge_request_blocks", "merge_requests", {:column=>"blocked_merge_request_id", :on_delete=>:cascade})1047 -> 0.0044s1048-- add_foreign_key("merge_request_blocks", "merge_requests", {:column=>"blocking_merge_request_id", :on_delete=>:cascade})1049 -> 0.0028s1050-- add_foreign_key("merge_request_diff_commits", "merge_request_diffs", {:on_delete=>:cascade})1051 -> 0.0025s1052-- add_foreign_key("merge_request_diff_files", "merge_request_diffs", {:on_delete=>:cascade})1053 -> 0.0023s1054-- add_foreign_key("merge_request_diffs", "merge_requests", {:name=>"fk_8483f3258f", :on_delete=>:cascade})1055 -> 0.0024s1056-- add_foreign_key("merge_request_metrics", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:cascade})1057 -> 0.0028s1058-- add_foreign_key("merge_request_metrics", "merge_requests", {:on_delete=>:cascade})1059 -> 0.0026s1060-- add_foreign_key("merge_request_metrics", "users", {:column=>"latest_closed_by_id", :name=>"fk_ae440388cc", :on_delete=>:nullify})1061 -> 0.0032s1062-- add_foreign_key("merge_request_metrics", "users", {:column=>"merged_by_id", :name=>"fk_7f28d925f3", :on_delete=>:nullify})1063 -> 0.0026s1064-- add_foreign_key("merge_requests", "ci_pipelines", {:column=>"head_pipeline_id", :name=>"fk_fd82eae0b9", :on_delete=>:nullify})1065 -> 0.0024s1066-- add_foreign_key("merge_requests", "merge_request_diffs", {:column=>"latest_merge_request_diff_id", :name=>"fk_06067f5644", :on_delete=>:nullify})1067 -> 0.0021s1068-- add_foreign_key("merge_requests", "milestones", {:name=>"fk_6a5165a692", :on_delete=>:nullify})1069 -> 0.0024s1070-- add_foreign_key("merge_requests", "projects", {:column=>"source_project_id", :name=>"fk_3308fe130c", :on_delete=>:nullify})1071 -> 0.0031s1072-- add_foreign_key("merge_requests", "projects", {:column=>"target_project_id", :name=>"fk_a6963e8447", :on_delete=>:cascade})1073 -> 0.0031s1074-- add_foreign_key("merge_requests", "users", {:column=>"assignee_id", :name=>"fk_6149611a04", :on_delete=>:nullify})1075 -> 0.0029s1076-- add_foreign_key("merge_requests", "users", {:column=>"author_id", :name=>"fk_e719a85f8a", :on_delete=>:nullify})1077 -> 0.0034s1078-- add_foreign_key("merge_requests", "users", {:column=>"merge_user_id", :name=>"fk_ad525e1f87", :on_delete=>:nullify})1079 -> 0.0031s1080-- add_foreign_key("merge_requests", "users", {:column=>"updated_by_id", :name=>"fk_641731faff", :on_delete=>:nullify})1081 -> 0.0030s1082-- add_foreign_key("merge_requests_closing_issues", "issues", {:on_delete=>:cascade})1083 -> 0.0028s1084-- add_foreign_key("merge_requests_closing_issues", "merge_requests", {:on_delete=>:cascade})1085 -> 0.0025s1086-- add_foreign_key("merge_trains", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:nullify})1087 -> 0.0025s1088-- add_foreign_key("merge_trains", "merge_requests", {:on_delete=>:cascade})1089 -> 0.0024s1090-- add_foreign_key("merge_trains", "projects", {:column=>"target_project_id", :on_delete=>:cascade})1091 -> 0.0028s1092-- add_foreign_key("merge_trains", "users", {:on_delete=>:cascade})1093 -> 0.0028s1094-- add_foreign_key("milestone_releases", "milestones", {:on_delete=>:cascade})1095 -> 0.0023s1096-- add_foreign_key("milestone_releases", "releases", {:on_delete=>:cascade})1097 -> 0.0025s1098-- add_foreign_key("milestones", "namespaces", {:column=>"group_id", :name=>"fk_95650a40d4", :on_delete=>:cascade})1099 -> 0.0027s1100-- add_foreign_key("milestones", "projects", {:name=>"fk_9bd0a0c791", :on_delete=>:cascade})1101 -> 0.0030s1102-- add_foreign_key("namespace_aggregation_schedules", "namespaces", {:on_delete=>:cascade})1103 -> 0.0025s1104-- add_foreign_key("namespace_root_storage_statistics", "namespaces", {:on_delete=>:cascade})1105 -> 0.0026s1106-- add_foreign_key("namespace_statistics", "namespaces", {:on_delete=>:cascade})1107 -> 0.0022s1108-- add_foreign_key("namespaces", "namespaces", {:column=>"custom_project_templates_group_id", :name=>"fk_e7a0b20a6b", :on_delete=>:nullify})1109 -> 0.0022s1110-- add_foreign_key("namespaces", "plans", {:name=>"fk_fdd12e5b80", :on_delete=>:nullify})1111 -> 0.0023s1112-- add_foreign_key("namespaces", "projects", {:column=>"file_template_project_id", :name=>"fk_319256d87a", :on_delete=>:nullify})1113 -> 0.0035s1114-- add_foreign_key("note_diff_files", "notes", {:column=>"diff_note_id", :on_delete=>:cascade})1115 -> 0.0031s1116-- add_foreign_key("notes", "projects", {:name=>"fk_99e097b079", :on_delete=>:cascade})1117 -> 0.0038s1118-- add_foreign_key("notes", "reviews", {:name=>"fk_2e82291620", :on_delete=>:nullify})1119 -> 0.0028s1120-- add_foreign_key("notification_settings", "users", {:name=>"fk_0c95e91db7", :on_delete=>:cascade})1121 -> 0.0041s1122-- add_foreign_key("oauth_openid_requests", "oauth_access_grants", {:column=>"access_grant_id", :name=>"fk_oauth_openid_requests_oauth_access_grants_access_grant_id"})1123 -> 0.0024s1124-- add_foreign_key("operations_feature_flag_scopes", "operations_feature_flags", {:column=>"feature_flag_id", :on_delete=>:cascade})1125 -> 0.0024s1126-- add_foreign_key("operations_feature_flags", "projects", {:on_delete=>:cascade})1127 -> 0.0037s1128-- add_foreign_key("operations_feature_flags_clients", "projects", {:on_delete=>:cascade})1129 -> 0.0036s1130-- add_foreign_key("packages_maven_metadata", "packages_packages", {:column=>"package_id", :name=>"fk_be88aed360", :on_delete=>:cascade})1131 -> 0.0024s1132-- add_foreign_key("packages_package_files", "packages_packages", {:column=>"package_id", :name=>"fk_86f0f182f8", :on_delete=>:cascade})1133 -> 0.0022s1134-- add_foreign_key("packages_package_metadata", "packages_packages", {:column=>"package_id", :on_delete=>:cascade})1135 -> 0.0021s1136-- add_foreign_key("packages_package_tags", "packages_packages", {:column=>"package_id", :on_delete=>:cascade})1137 -> 0.0020s1138-- add_foreign_key("packages_packages", "projects", {:on_delete=>:cascade})1139 -> 0.0033s1140-- add_foreign_key("pages_domain_acme_orders", "pages_domains", {:on_delete=>:cascade})1141 -> 0.0033s1142-- add_foreign_key("pages_domains", "projects", {:name=>"fk_ea2f6dfc6f", :on_delete=>:cascade})1143 -> 0.0031s1144-- add_foreign_key("path_locks", "projects", {:name=>"fk_5265c98f24", :on_delete=>:cascade})1145 -> 0.0032s1146-- add_foreign_key("path_locks", "users")1147 -> 0.0028s1148-- add_foreign_key("personal_access_tokens", "users")1149 -> 0.0031s1150-- add_foreign_key("pool_repositories", "projects", {:column=>"source_project_id", :on_delete=>:nullify})1151 -> 0.0035s1152-- add_foreign_key("pool_repositories", "shards", {:on_delete=>:restrict})1153 -> 0.0017s1154-- add_foreign_key("project_alerting_settings", "projects", {:on_delete=>:cascade})1155 -> 0.0021s1156-- add_foreign_key("project_aliases", "projects", {:on_delete=>:cascade})1157 -> 0.0020s1158-- add_foreign_key("project_authorizations", "projects", {:on_delete=>:cascade})1159 -> 0.0019s1160-- add_foreign_key("project_authorizations", "users", {:on_delete=>:cascade})1161 -> 0.0019s1162-- add_foreign_key("project_auto_devops", "projects", {:on_delete=>:cascade})1163 -> 0.0018s1164-- add_foreign_key("project_ci_cd_settings", "projects", {:name=>"fk_24c15d2f2e", :on_delete=>:cascade})1165 -> 0.0018s1166-- add_foreign_key("project_custom_attributes", "projects", {:on_delete=>:cascade})1167 -> 0.0019s1168-- add_foreign_key("project_daily_statistics", "projects", {:on_delete=>:cascade})1169 -> 0.0018s1170-- add_foreign_key("project_deploy_tokens", "deploy_tokens", {:on_delete=>:cascade})1171 -> 0.0019s1172-- add_foreign_key("project_deploy_tokens", "projects", {:on_delete=>:cascade})1173 -> 0.0020s1174-- add_foreign_key("project_error_tracking_settings", "projects", {:on_delete=>:cascade})1175 -> 0.0019s1176-- add_foreign_key("project_feature_usages", "projects", {:on_delete=>:cascade})1177 -> 0.0020s1178-- add_foreign_key("project_features", "projects", {:name=>"fk_18513d9b92", :on_delete=>:cascade})1179 -> 0.0018s1180-- add_foreign_key("project_group_links", "projects", {:name=>"fk_daa8cee94c", :on_delete=>:cascade})1181 -> 0.0018s1182-- add_foreign_key("project_import_data", "projects", {:name=>"fk_ffb9ee3a10", :on_delete=>:cascade})1183 -> 0.0018s1184-- add_foreign_key("project_incident_management_settings", "projects", {:on_delete=>:cascade})1185 -> 0.0018s1186-- add_foreign_key("project_metrics_settings", "projects", {:on_delete=>:cascade})1187 -> 0.0016s1188-- add_foreign_key("project_mirror_data", "projects", {:name=>"fk_d1aad367d7", :on_delete=>:cascade})1189 -> 0.0021s1190-- add_foreign_key("project_pages_metadata", "projects", {:on_delete=>:cascade})1191 -> 0.0017s1192-- add_foreign_key("project_repositories", "projects", {:on_delete=>:cascade})1193 -> 0.0019s1194-- add_foreign_key("project_repositories", "shards", {:on_delete=>:restrict})1195 -> 0.0013s1196-- add_foreign_key("project_repository_states", "projects", {:on_delete=>:cascade})1197 -> 0.0024s1198-- add_foreign_key("project_statistics", "projects", {:on_delete=>:cascade})1199 -> 0.0020s1200-- add_foreign_key("project_tracing_settings", "projects", {:on_delete=>:cascade})1201 -> 0.0017s1202-- add_foreign_key("projects", "pool_repositories", {:name=>"fk_6e5c14658a", :on_delete=>:nullify})1203 -> 0.0020s1204-- add_foreign_key("prometheus_alert_events", "projects", {:on_delete=>:cascade})1205 -> 0.0017s1206-- add_foreign_key("prometheus_alert_events", "prometheus_alerts", {:on_delete=>:cascade})1207 -> 0.0014s1208-- add_foreign_key("prometheus_alerts", "environments", {:on_delete=>:cascade})1209 -> 0.0012s1210-- add_foreign_key("prometheus_alerts", "projects", {:on_delete=>:cascade})1211 -> 0.0017s1212-- add_foreign_key("prometheus_alerts", "prometheus_metrics", {:on_delete=>:cascade})1213 -> 0.0014s1214-- add_foreign_key("prometheus_metrics", "projects", {:on_delete=>:cascade})1215 -> 0.0016s1216-- add_foreign_key("protected_branch_merge_access_levels", "namespaces", {:column=>"group_id", :name=>"fk_98f3d044fe", :on_delete=>:cascade})1217 -> 0.0015s1218-- add_foreign_key("protected_branch_merge_access_levels", "protected_branches", {:name=>"fk_8a3072ccb3", :on_delete=>:cascade})1219 -> 0.0020s1220-- add_foreign_key("protected_branch_merge_access_levels", "users")1221 -> 0.0017s1222-- add_foreign_key("protected_branch_push_access_levels", "namespaces", {:column=>"group_id", :name=>"fk_7111b68cdb", :on_delete=>:cascade})1223 -> 0.0016s1224-- add_foreign_key("protected_branch_push_access_levels", "protected_branches", {:name=>"fk_9ffc86a3d9", :on_delete=>:cascade})1225 -> 0.0011s1226-- add_foreign_key("protected_branch_push_access_levels", "users")1227 -> 0.0016s1228-- add_foreign_key("protected_branch_unprotect_access_levels", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1229 -> 0.0015s1230-- add_foreign_key("protected_branch_unprotect_access_levels", "protected_branches", {:on_delete=>:cascade})1231 -> 0.0012s1232-- add_foreign_key("protected_branch_unprotect_access_levels", "users", {:on_delete=>:cascade})1233 -> 0.0015s1234-- add_foreign_key("protected_branches", "projects", {:name=>"fk_7a9c6d93e7", :on_delete=>:cascade})1235 -> 0.0018s1236-- add_foreign_key("protected_environment_deploy_access_levels", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1237 -> 0.0016s1238-- add_foreign_key("protected_environment_deploy_access_levels", "protected_environments", {:on_delete=>:cascade})1239 -> 0.0013s1240-- add_foreign_key("protected_environment_deploy_access_levels", "users", {:on_delete=>:cascade})1241 -> 0.0016s1242-- add_foreign_key("protected_environments", "projects", {:on_delete=>:cascade})1243 -> 0.0019s1244-- add_foreign_key("protected_tag_create_access_levels", "namespaces", {:column=>"group_id", :name=>"fk_b4eb82fe3c", :on_delete=>:cascade})1245 -> 0.0016s1246-- add_foreign_key("protected_tag_create_access_levels", "protected_tags", {:name=>"fk_f7dfda8c51", :on_delete=>:cascade})1247 -> 0.0013s1248-- add_foreign_key("protected_tag_create_access_levels", "users")1249 -> 0.0016s1250-- add_foreign_key("protected_tags", "projects", {:name=>"fk_8e4af87648", :on_delete=>:cascade})1251 -> 0.0017s1252-- add_foreign_key("push_event_payloads", "events", {:name=>"fk_36c74129da", :on_delete=>:cascade})1253 -> 0.0013s1254-- add_foreign_key("push_rules", "projects", {:name=>"fk_83b29894de", :on_delete=>:cascade})1255 -> 0.0020s1256-- add_foreign_key("release_links", "releases", {:on_delete=>:cascade})1257 -> 0.0013s1258-- add_foreign_key("releases", "projects", {:name=>"fk_47fe2a0596", :on_delete=>:cascade})1259 -> 0.0017s1260-- add_foreign_key("releases", "users", {:column=>"author_id", :name=>"fk_8e4456f90f", :on_delete=>:nullify})1261 -> 0.0016s1262-- add_foreign_key("remote_mirrors", "projects", {:name=>"fk_43a9aa4ca8", :on_delete=>:cascade})1263 -> 0.0019s1264-- add_foreign_key("repository_languages", "projects", {:on_delete=>:cascade})1265 -> 0.0017s1266-- add_foreign_key("resource_label_events", "epics", {:on_delete=>:cascade})1267 -> 0.0015s1268-- add_foreign_key("resource_label_events", "issues", {:on_delete=>:cascade})1269 -> 0.0014s1270-- add_foreign_key("resource_label_events", "labels", {:on_delete=>:nullify})1271 -> 0.0015s1272-- add_foreign_key("resource_label_events", "merge_requests", {:on_delete=>:cascade})1273 -> 0.0016s1274-- add_foreign_key("resource_label_events", "users", {:on_delete=>:nullify})1275 -> 0.0018s1276-- add_foreign_key("reviews", "merge_requests", {:on_delete=>:cascade})1277 -> 0.0016s1278-- add_foreign_key("reviews", "projects", {:on_delete=>:cascade})1279 -> 0.0018s1280-- add_foreign_key("reviews", "users", {:column=>"author_id", :on_delete=>:nullify})1281 -> 0.0017s1282-- add_foreign_key("saml_providers", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1283 -> 0.0015s1284-- add_foreign_key("scim_oauth_access_tokens", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1285 -> 0.0015s1286-- add_foreign_key("services", "projects", {:name=>"fk_71cce407f9", :on_delete=>:cascade})1287 -> 0.0019s1288-- add_foreign_key("slack_integrations", "services", {:on_delete=>:cascade})1289 -> 0.0015s1290-- add_foreign_key("smartcard_identities", "users", {:on_delete=>:cascade})1291 -> 0.0018s1292-- add_foreign_key("snippets", "projects", {:name=>"fk_be41fd4bb7", :on_delete=>:cascade})1293 -> 0.0020s1294-- add_foreign_key("software_license_policies", "projects", {:on_delete=>:cascade})1295 -> 0.0018s1296-- add_foreign_key("software_license_policies", "software_licenses", {:on_delete=>:cascade})1297 -> 0.0013s1298-- add_foreign_key("subscriptions", "projects", {:on_delete=>:cascade})1299 -> 0.0018s1300-- add_foreign_key("suggestions", "notes", {:on_delete=>:cascade})1301 -> 0.0014s1302-- add_foreign_key("system_note_metadata", "notes", {:name=>"fk_d83a918cb1", :on_delete=>:cascade})1303 -> 0.0014s1304-- add_foreign_key("term_agreements", "application_setting_terms", {:column=>"term_id"})1305 -> 0.0014s1306-- add_foreign_key("term_agreements", "users", {:on_delete=>:cascade})1307 -> 0.0018s1308-- add_foreign_key("timelogs", "issues", {:name=>"fk_timelogs_issues_issue_id", :on_delete=>:cascade})1309 -> 0.0023s1310-- add_foreign_key("timelogs", "merge_requests", {:name=>"fk_timelogs_merge_requests_merge_request_id", :on_delete=>:cascade})1311 -> 0.0023s1312-- add_foreign_key("todos", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1313 -> 0.0020s1314-- add_foreign_key("todos", "notes", {:name=>"fk_91d1f47b13", :on_delete=>:cascade})1315 -> 0.0015s1316-- add_foreign_key("todos", "projects", {:name=>"fk_45054f9c45", :on_delete=>:cascade})1317 -> 0.0020s1318-- add_foreign_key("todos", "users", {:column=>"author_id", :name=>"fk_ccf0373936", :on_delete=>:cascade})1319 -> 0.0017s1320-- add_foreign_key("todos", "users", {:name=>"fk_d94154aa95", :on_delete=>:cascade})1321 -> 0.0017s1322-- add_foreign_key("trending_projects", "projects", {:on_delete=>:cascade})1323 -> 0.0019s1324-- add_foreign_key("u2f_registrations", "users")1325 -> 0.0019s1326-- add_foreign_key("user_callouts", "users", {:on_delete=>:cascade})1327 -> 0.0018s1328-- add_foreign_key("user_custom_attributes", "users", {:on_delete=>:cascade})1329 -> 0.0018s1330-- add_foreign_key("user_interacted_projects", "projects", {:name=>"fk_722ceba4f7", :on_delete=>:cascade})1331 -> 0.0020s1332-- add_foreign_key("user_interacted_projects", "users", {:name=>"fk_0894651f08", :on_delete=>:cascade})1333 -> 0.0017s1334-- add_foreign_key("user_preferences", "users", {:on_delete=>:cascade})1335 -> 0.0018s1336-- add_foreign_key("user_statuses", "users", {:on_delete=>:cascade})1337 -> 0.0017s1338-- add_foreign_key("user_synced_attributes_metadata", "users", {:on_delete=>:cascade})1339 -> 0.0017s1340-- add_foreign_key("users", "application_setting_terms", {:column=>"accepted_term_id", :name=>"fk_789cd90b35", :on_delete=>:cascade})1341 -> 0.0017s1342-- add_foreign_key("users", "namespaces", {:column=>"managing_group_id", :name=>"fk_a4b8fefe3e", :on_delete=>:nullify})1343 -> 0.0021s1344-- add_foreign_key("users_ops_dashboard_projects", "projects", {:on_delete=>:cascade})1345 -> 0.0020s1346-- add_foreign_key("users_ops_dashboard_projects", "users", {:on_delete=>:cascade})1347 -> 0.0017s1348-- add_foreign_key("users_star_projects", "projects", {:name=>"fk_22cd27ddfc", :on_delete=>:cascade})1349 -> 0.0019s1350-- add_foreign_key("vulnerabilities", "epics", {:name=>"fk_1d37cddf91", :on_delete=>:nullify})1351 -> 0.0019s1352-- add_foreign_key("vulnerabilities", "milestones", {:column=>"due_date_sourcing_milestone_id", :name=>"fk_7c5bb22a22", :on_delete=>:nullify})1353 -> 0.0013s1354-- add_foreign_key("vulnerabilities", "milestones", {:column=>"start_date_sourcing_milestone_id", :name=>"fk_88b4d546ef", :on_delete=>:nullify})1355 -> 0.0013s1356-- add_foreign_key("vulnerabilities", "milestones", {:name=>"fk_131d289c65", :on_delete=>:nullify})1357 -> 0.0014s1358-- add_foreign_key("vulnerabilities", "projects", {:name=>"fk_efb96ab1e2", :on_delete=>:cascade})1359 -> 0.0021s1360-- add_foreign_key("vulnerabilities", "users", {:column=>"author_id", :name=>"fk_b1de915a15", :on_delete=>:nullify})1361 -> 0.0017s1362-- add_foreign_key("vulnerabilities", "users", {:column=>"closed_by_id", :name=>"fk_cf5c60acbf", :on_delete=>:nullify})1363 -> 0.0016s1364-- add_foreign_key("vulnerabilities", "users", {:column=>"last_edited_by_id", :name=>"fk_1302949740", :on_delete=>:nullify})1365 -> 0.0015s1366-- add_foreign_key("vulnerabilities", "users", {:column=>"updated_by_id", :name=>"fk_7ac31eacb9", :on_delete=>:nullify})1367 -> 0.0027s1368-- add_foreign_key("vulnerability_feedback", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:nullify})1369 -> 0.0018s1370-- add_foreign_key("vulnerability_feedback", "issues", {:on_delete=>:nullify})1371 -> 0.0016s1372-- add_foreign_key("vulnerability_feedback", "merge_requests", {:name=>"fk_563ff1912e", :on_delete=>:nullify})1373 -> 0.0017s1374-- add_foreign_key("vulnerability_feedback", "projects", {:on_delete=>:cascade})1375 -> 0.0020s1376-- add_foreign_key("vulnerability_feedback", "users", {:column=>"author_id", :on_delete=>:cascade})1377 -> 0.0017s1378-- add_foreign_key("vulnerability_feedback", "users", {:column=>"comment_author_id", :name=>"fk_94f7c8a81e", :on_delete=>:nullify})1379 -> 0.0016s1380-- add_foreign_key("vulnerability_identifiers", "projects", {:on_delete=>:cascade})1381 -> 0.0020s1382-- add_foreign_key("vulnerability_occurrence_identifiers", "vulnerability_identifiers", {:column=>"identifier_id", :on_delete=>:cascade})1383 -> 0.0013s1384-- add_foreign_key("vulnerability_occurrence_identifiers", "vulnerability_occurrences", {:column=>"occurrence_id", :on_delete=>:cascade})1385 -> 0.0014s1386-- add_foreign_key("vulnerability_occurrence_pipelines", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:cascade})1387 -> 0.0015s1388-- add_foreign_key("vulnerability_occurrence_pipelines", "vulnerability_occurrences", {:column=>"occurrence_id", :on_delete=>:cascade})1389 -> 0.0011s1390-- add_foreign_key("vulnerability_occurrences", "projects", {:on_delete=>:cascade})1391 -> 0.0019s1392-- add_foreign_key("vulnerability_occurrences", "vulnerabilities", {:name=>"fk_97ffe77653", :on_delete=>:nullify})1393 -> 0.0014s1394-- add_foreign_key("vulnerability_occurrences", "vulnerability_identifiers", {:column=>"primary_identifier_id", :on_delete=>:cascade})1395 -> 0.0013s1396-- add_foreign_key("vulnerability_occurrences", "vulnerability_scanners", {:column=>"scanner_id", :on_delete=>:cascade})1397 -> 0.0013s1398-- add_foreign_key("vulnerability_scanners", "projects", {:on_delete=>:cascade})1399 -> 0.0019s1400-- add_foreign_key("web_hook_logs", "web_hooks", {:on_delete=>:cascade})1401 -> 0.0016s1402-- add_foreign_key("web_hooks", "projects", {:name=>"fk_0c8ca6d9d1", :on_delete=>:cascade})1403 -> 0.0020s1404Dropped database 'gitlabhq_geo_test'1405Created database 'gitlabhq_geo_test'1406-- enable_extension("plpgsql")1407 -> 0.0153s1408-- create_table("container_repository_registry", {:id=>:serial, :force=>:cascade})1409 -> 0.0123s1410-- create_table("design_registry", {:id=>:serial, :force=>:cascade})1411 -> 0.0092s1412-- create_table("event_log_states", {:primary_key=>"event_id", :force=>:cascade})1413 -> 0.0022s1414-- create_table("file_registry", {:id=>:serial, :force=>:cascade})1415 -> 0.0117s1416-- create_table("job_artifact_registry", {:id=>:serial, :force=>:cascade})1417 -> 0.0092s1418-- create_table("project_registry", {:id=>:serial, :force=>:cascade})1419 -> 0.0418s1420$ date1421Tue Oct 15 08:40:23 UTC 20191422$ source scripts/rspec_helpers.sh1423$ rspec_paralellized_job "--tag ~quarantine --tag ~geo"1424KNAPSACK_TEST_FILE_PATTERN: spec/{controllers,mailers,requests}{,/**/}*_spec.rb1425Checking gitaly-ruby bundle...1426Warning: 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`.1427The Gemfile's dependencies are satisfied1428Trying to connect to gitaly: ..... OK1429Knapsack report generator started!1430Run options:1431 include {:focus=>true}1432 exclude {:quarantine=>true, :geo=>true}1433All examples were filtered out; ignoring {:focus=>true}1434==> Setting up GitLab Shell...1435 GitLab Shell set up in 0.587112709 seconds...1436==> Setting up Gitaly...1437 Gitaly set up in 0.000202821 seconds...1438==> Setting up GitLab Elasticsearch Indexer...1439 GitLab Elasticsearch Indexer set up in 0.000352708 seconds...1440Notify1441 with HTML-encoded entities1442 retains 7bit encoding1443 for a project1444 for issues1445 that are new1446 has the correct subject and body1447 contains the description1448 does not add a reason header1449 contains a link to issue author1450 behaves like an assignee email1451 is sent to the assignee as the author1452 behaves like an email sent to a user1453 is sent to user's global notification email address1454 with group notification email1455 is sent to user's group notification email1456 behaves like an email starting a new thread with reply-by-email enabled1457 has X-GitLab-Project headers1458 has X-GitLab-*-ID header1459 has X-GitLab-*-IID header if model has iid defined1460 has the characteristics of a threaded email1461 includes "Reply to this email directly or <View it on GitLab>"1462 when reply-by-email is enabled with incoming address with %{key}1463 has a Reply-To header1464 when reply-by-email is enabled with incoming address without %{key}1465 has the characteristics of a threaded email1466 has a Reply-To header1467 behaves like it should show Gmail Actions View Issue link1468 should have body including "View Issue"1469 behaves like it should have Gmail Actions links1470 should have body including "ViewAction"1471 behaves like an unsubscribeable thread1472 has a List-Unsubscribe header in the correct format, and a body link1473 behaves like an unsubscribeable thread with incoming address without %{key}1474 has a List-Unsubscribe header in the correct format, and a body link1475 behaves like appearance header and footer enabled1476 contains header and footer1477 behaves like appearance header and footer not enabled1478 does not contain header and footer1479 when sent with a reason1480 includes the reason in a header1481 behaves like appearance header and footer enabled1482 contains header and footer1483 behaves like appearance header and footer not enabled1484 does not contain header and footer1485 that are reassigned1486 is sent as the author1487 has the correct subject and body1488 behaves like a multiple recipients email1489 is sent to the given recipient1490 behaves like an answer to an existing thread with reply-by-email enabled1491 has X-GitLab-Project headers1492 has X-GitLab-*-ID header1493 has X-GitLab-*-IID header if model has iid defined1494 has X-GitLab-Project headers1495 has X-GitLab-*-ID header1496 has X-GitLab-*-IID header if model has iid defined1497 has the characteristics of a threaded reply1498 when reply-by-email is enabled with incoming address with %{key}1499 has a Reply-To header1500 when reply-by-email is enabled with incoming address without %{key}1501 has X-GitLab-Project headers1502 has X-GitLab-*-ID header1503 has X-GitLab-*-IID header if model has iid defined1504 has the characteristics of a threaded reply1505 has a Reply-To header1506 behaves like it should show Gmail Actions View Issue link1507 should have body including "View Issue"1508 behaves like it should have Gmail Actions links1509 should have body including "ViewAction"1510 behaves like an unsubscribeable thread1511 has a List-Unsubscribe header in the correct format, and a body link1512 behaves like an unsubscribeable thread with incoming address without %{key}1513 has a List-Unsubscribe header in the correct format, and a body link1514 behaves like appearance header and footer enabled1515 contains header and footer1516 behaves like appearance header and footer not enabled1517 does not contain header and footer1518 when sent with a reason1519 includes the reason in a header1520 behaves like appearance header and footer enabled1521 contains header and footer1522 behaves like appearance header and footer not enabled1523 does not contain header and footer1524 that have been relabeled1525 is sent as the author1526 has the correct subject and body1527 behaves like a multiple recipients email1528 is sent to the given recipient1529 behaves like an answer to an existing thread with reply-by-email enabled1530 has X-GitLab-Project headers1531 has X-GitLab-*-ID header1532 has X-GitLab-*-IID header if model has iid defined1533 has X-GitLab-Project headers1534 has X-GitLab-*-ID header1535 has X-GitLab-*-IID header if model has iid defined1536 has the characteristics of a threaded reply1537 when reply-by-email is enabled with incoming address with %{key}1538 has a Reply-To header1539 when reply-by-email is enabled with incoming address without %{key}1540 has X-GitLab-Project headers1541 has X-GitLab-*-ID header1542 has X-GitLab-*-IID header if model has iid defined1543 has the characteristics of a threaded reply1544 has a Reply-To header1545 behaves like it should show Gmail Actions View Issue link1546 should have body including "View Issue"1547 behaves like it should have Gmail Actions links1548 should have body including "ViewAction"1549 behaves like a user cannot unsubscribe through footer link1550 does not have a List-Unsubscribe header or a body link1551 behaves like an email with a labels subscriptions link in its footer1552 should have body including "label subscriptions"1553 behaves like appearance header and footer enabled1554 contains header and footer1555 behaves like appearance header and footer not enabled1556 does not contain header and footer1557 with a preferred language1558 always generates the email using the default language1559 that are due soon1560 behaves like an answer to an existing thread with reply-by-email enabled1561 has X-GitLab-Project headers1562 has X-GitLab-*-ID header1563 has X-GitLab-*-IID header if model has iid defined1564 has X-GitLab-Project headers1565 has X-GitLab-*-ID header1566 has X-GitLab-*-IID header if model has iid defined1567 has the characteristics of a threaded reply1568 when reply-by-email is enabled with incoming address with %{key}1569 has a Reply-To header1570 when reply-by-email is enabled with incoming address without %{key}1571 has X-GitLab-Project headers1572 has X-GitLab-*-ID header1573 has X-GitLab-*-IID header if model has iid defined1574 has the characteristics of a threaded reply1575 has a Reply-To header1576 behaves like it should show Gmail Actions View Issue link1577 should have body including "View Issue"1578 behaves like it should have Gmail Actions links1579 should have body including "ViewAction"1580 behaves like an unsubscribeable thread1581 has a List-Unsubscribe header in the correct format, and a body link1582 behaves like an unsubscribeable thread with incoming address without %{key}1583 has a List-Unsubscribe header in the correct format, and a body link1584 behaves like appearance header and footer enabled1585 contains header and footer1586 behaves like appearance header and footer not enabled1587 does not contain header and footer1588 status changed1589 is sent as the author1590 has the correct subject and body1591 behaves like an answer to an existing thread with reply-by-email enabled1592 has X-GitLab-Project headers1593 has X-GitLab-*-ID header1594 has X-GitLab-*-IID header if model has iid defined1595 has X-GitLab-Project headers1596 has X-GitLab-*-ID header1597 has X-GitLab-*-IID header if model has iid defined1598 has the characteristics of a threaded reply1599 when reply-by-email is enabled with incoming address with %{key}1600 has a Reply-To header1601 when reply-by-email is enabled with incoming address without %{key}1602 has X-GitLab-Project headers1603 has X-GitLab-*-ID header1604 has X-GitLab-*-IID header if model has iid defined1605 has the characteristics of a threaded reply1606 has a Reply-To header1607 behaves like it should show Gmail Actions View Issue link1608 should have body including "View Issue"1609 behaves like it should have Gmail Actions links1610 should have body including "ViewAction"1611 behaves like an unsubscribeable thread1612 has a List-Unsubscribe header in the correct format, and a body link1613 behaves like an unsubscribeable thread with incoming address without %{key}1614 has a List-Unsubscribe header in the correct format, and a body link1615 behaves like appearance header and footer enabled1616 contains header and footer1617 behaves like appearance header and footer not enabled1618 does not contain header and footer1619 moved to another project1620 when a user has permissions to access the new issue1621 contains description about action taken1622 has the correct subject and body1623 contains the issue title1624 behaves like an answer to an existing thread with reply-by-email enabled1625 has X-GitLab-Project headers1626 has X-GitLab-*-ID header1627 has X-GitLab-*-IID header if model has iid defined1628 has X-GitLab-Project headers1629 has X-GitLab-*-ID header1630 has X-GitLab-*-IID header if model has iid defined1631 has the characteristics of a threaded reply1632 when reply-by-email is enabled with incoming address with %{key}1633 has a Reply-To header1634 when reply-by-email is enabled with incoming address without %{key}1635 has X-GitLab-Project headers1636 has X-GitLab-*-ID header1637 has X-GitLab-*-IID header if model has iid defined1638 has the characteristics of a threaded reply1639 has a Reply-To header1640 behaves like it should show Gmail Actions View Issue link1641 should have body including "View Issue"1642 behaves like it should have Gmail Actions links1643 should have body including "ViewAction"1644 behaves like an unsubscribeable thread1645 has a List-Unsubscribe header in the correct format, and a body link1646 behaves like an unsubscribeable thread with incoming address without %{key}1647 has a List-Unsubscribe header in the correct format, and a body link1648 when a user does not permissions to access the new issue1649 has the correct subject and body1650 does not contain the issue title1651 contains information about missing permissions1652 for merge requests1653 that are new1654 has the correct subject and body1655 contains the description1656 contains a link to merge request author1657 behaves like an assignee email1658 is sent to the assignee as the author1659 behaves like an email sent to a user1660 is sent to user's global notification email address1661 with group notification email1662 is sent to user's group notification email1663 behaves like an email starting a new thread with reply-by-email enabled1664 has X-GitLab-Project headers1665 has X-GitLab-*-ID header1666 has X-GitLab-*-IID header if model has iid defined1667 has the characteristics of a threaded email1668 includes "Reply to this email directly or <View it on GitLab>"1669 when reply-by-email is enabled with incoming address with %{key}1670 has a Reply-To header1671 when reply-by-email is enabled with incoming address without %{key}1672 has the characteristics of a threaded email1673 has a Reply-To header1674 behaves like it should show Gmail Actions View Merge request link1675 should have body including "View Merge request"1676 behaves like it should have Gmail Actions links1677 should have body including "ViewAction"1678 behaves like an unsubscribeable thread1679 has a List-Unsubscribe header in the correct format, and a body link1680 behaves like an unsubscribeable thread with incoming address without %{key}1681 has a List-Unsubscribe header in the correct format, and a body link1682 behaves like appearance header and footer enabled1683 contains header and footer1684 behaves like appearance header and footer not enabled1685 does not contain header and footer1686 when sent with a reason1687 includes the reason in a header1688 behaves like appearance header and footer enabled1689 contains header and footer1690 behaves like appearance header and footer not enabled1691 does not contain header and footer1692 that are reassigned1693 is sent as the author1694 has the correct subject and body1695 behaves like a multiple recipients email1696 is sent to the given recipient1697 behaves like an answer to an existing thread with reply-by-email enabled1698 has X-GitLab-Project headers1699 has X-GitLab-*-ID header1700 has X-GitLab-*-IID header if model has iid defined1701 has X-GitLab-Project headers1702 has X-GitLab-*-ID header1703 has X-GitLab-*-IID header if model has iid defined1704 has the characteristics of a threaded reply1705 when reply-by-email is enabled with incoming address with %{key}1706 has a Reply-To header1707 when reply-by-email is enabled with incoming address without %{key}1708 has X-GitLab-Project headers1709 has X-GitLab-*-ID header1710 has X-GitLab-*-IID header if model has iid defined1711 has the characteristics of a threaded reply1712 has a Reply-To header1713 behaves like it should show Gmail Actions View Merge request link1714 should have body including "View Merge request"1715 behaves like it should have Gmail Actions links1716 should have body including "ViewAction"1717 behaves like an unsubscribeable thread1718 has a List-Unsubscribe header in the correct format, and a body link1719 behaves like an unsubscribeable thread with incoming address without %{key}1720 has a List-Unsubscribe header in the correct format, and a body link1721 behaves like appearance header and footer enabled1722 contains header and footer1723 behaves like appearance header and footer not enabled1724 does not contain header and footer1725 when sent with a reason1726 includes the reason in a header1727 includes the reason in the footer1728 behaves like appearance header and footer enabled1729 contains header and footer1730 behaves like appearance header and footer not enabled1731 does not contain header and footer1732 that are new with a description1733 contains the description1734 behaves like it should show Gmail Actions View Merge request link1735 should have body including "View Merge request"1736 behaves like it should have Gmail Actions links1737 should have body including "ViewAction"1738 behaves like an unsubscribeable thread1739 has a List-Unsubscribe header in the correct format, and a body link1740 behaves like an unsubscribeable thread with incoming address without %{key}1741 has a List-Unsubscribe header in the correct format, and a body link1742 behaves like appearance header and footer enabled1743 contains header and footer1744 behaves like appearance header and footer not enabled1745 does not contain header and footer1746 that have been relabeled1747 is sent as the author1748 has the correct subject and body1749 behaves like a multiple recipients email1750 is sent to the given recipient1751 behaves like an answer to an existing thread with reply-by-email enabled1752 has X-GitLab-Project headers1753 has X-GitLab-*-ID header1754 has X-GitLab-*-IID header if model has iid defined1755 has X-GitLab-Project headers1756 has X-GitLab-*-ID header1757 has X-GitLab-*-IID header if model has iid defined1758 has the characteristics of a threaded reply1759 when reply-by-email is enabled with incoming address with %{key}1760 has a Reply-To header1761 when reply-by-email is enabled with incoming address without %{key}1762 has X-GitLab-Project headers1763 has X-GitLab-*-ID header1764 has X-GitLab-*-IID header if model has iid defined1765 has the characteristics of a threaded reply1766 has a Reply-To header1767 behaves like it should show Gmail Actions View Merge request link1768 should have body including "View Merge request"1769 behaves like it should have Gmail Actions links1770 should have body including "ViewAction"1771 behaves like a user cannot unsubscribe through footer link1772 does not have a List-Unsubscribe header or a body link1773 behaves like an email with a labels subscriptions link in its footer1774 should have body including "label subscriptions"1775 behaves like appearance header and footer enabled1776 contains header and footer1777 behaves like appearance header and footer not enabled1778 does not contain header and footer1779 status changed1780 is sent as the author1781 has the correct subject and body1782 behaves like an answer to an existing thread with reply-by-email enabled1783 has X-GitLab-Project headers1784 has X-GitLab-*-ID header1785 has X-GitLab-*-IID header if model has iid defined1786 has X-GitLab-Project headers1787 has X-GitLab-*-ID header1788 has X-GitLab-*-IID header if model has iid defined1789 has the characteristics of a threaded reply1790 when reply-by-email is enabled with incoming address with %{key}1791 has a Reply-To header1792 when reply-by-email is enabled with incoming address without %{key}1793 has X-GitLab-Project headers1794 has X-GitLab-*-ID header1795 has X-GitLab-*-IID header if model has iid defined1796 has the characteristics of a threaded reply1797 has a Reply-To header1798 behaves like it should show Gmail Actions View Merge request link1799 should have body including "View Merge request"1800 behaves like it should have Gmail Actions links1801 should have body including "ViewAction"1802 behaves like an unsubscribeable thread1803 has a List-Unsubscribe header in the correct format, and a body link1804 behaves like an unsubscribeable thread with incoming address without %{key}1805 has a List-Unsubscribe header in the correct format, and a body link1806 behaves like appearance header and footer enabled1807 contains header and footer1808 behaves like appearance header and footer not enabled1809 does not contain header and footer1810 that are merged1811 is sent as the merge author1812 has the correct subject and body1813 behaves like a multiple recipients email1814 is sent to the given recipient1815 behaves like an answer to an existing thread with reply-by-email enabled1816 has X-GitLab-Project headers1817 has X-GitLab-*-ID header1818 has X-GitLab-*-IID header if model has iid defined1819 has X-GitLab-Project headers1820 has X-GitLab-*-ID header1821 has X-GitLab-*-IID header if model has iid defined1822 has the characteristics of a threaded reply1823 when reply-by-email is enabled with incoming address with %{key}1824 has a Reply-To header1825 when reply-by-email is enabled with incoming address without %{key}1826 has X-GitLab-Project headers1827 has X-GitLab-*-ID header1828 has X-GitLab-*-IID header if model has iid defined1829 has the characteristics of a threaded reply1830 has a Reply-To header1831 behaves like it should show Gmail Actions View Merge request link1832 should have body including "View Merge request"1833 behaves like it should have Gmail Actions links1834 should have body including "ViewAction"1835 behaves like an unsubscribeable thread1836 has a List-Unsubscribe header in the correct format, and a body link1837 behaves like an unsubscribeable thread with incoming address without %{key}1838 has a List-Unsubscribe header in the correct format, and a body link1839 behaves like appearance header and footer enabled1840 contains header and footer1841 behaves like appearance header and footer not enabled1842 does not contain header and footer1843 that are unmergeable1844 is sent as the merge request author1845 has the correct subject and body1846 behaves like a multiple recipients email1847 is sent to the given recipient1848 behaves like an answer to an existing thread with reply-by-email enabled1849 has X-GitLab-Project headers1850 has X-GitLab-*-ID header1851 has X-GitLab-*-IID header if model has iid defined1852 has X-GitLab-Project headers1853 has X-GitLab-*-ID header1854 has X-GitLab-*-IID header if model has iid defined1855 has the characteristics of a threaded reply1856 when reply-by-email is enabled with incoming address with %{key}1857 has a Reply-To header1858 when reply-by-email is enabled with incoming address without %{key}1859 has X-GitLab-Project headers1860 has X-GitLab-*-ID header1861 has X-GitLab-*-IID header if model has iid defined1862 has the characteristics of a threaded reply1863 has a Reply-To header1864 behaves like it should show Gmail Actions View Merge request link1865 should have body including "View Merge request"1866 behaves like it should have Gmail Actions links1867 should have body including "ViewAction"1868 behaves like an unsubscribeable thread1869 has a List-Unsubscribe header in the correct format, and a body link1870 behaves like an unsubscribeable thread with incoming address without %{key}1871 has a List-Unsubscribe header in the correct format, and a body link1872 behaves like appearance header and footer enabled1873 contains header and footer1874 behaves like appearance header and footer not enabled1875 does not contain header and footer1876 that have new commits1877 behaves like a push to an existing merge request1878 is sent as the push user1879 has the correct subject and body1880 behaves like a multiple recipients email1881 is sent to the given recipient1882 behaves like an answer to an existing thread with reply-by-email enabled1883 has X-GitLab-Project headers1884 has X-GitLab-*-ID header1885 has X-GitLab-*-IID header if model has iid defined1886 has X-GitLab-Project headers1887 has X-GitLab-*-ID header1888 has X-GitLab-*-IID header if model has iid defined1889 has the characteristics of a threaded reply1890 when reply-by-email is enabled with incoming address with %{key}1891 has a Reply-To header1892 when reply-by-email is enabled with incoming address without %{key}1893 has X-GitLab-Project headers1894 has X-GitLab-*-ID header1895 has X-GitLab-*-IID header if model has iid defined1896 has the characteristics of a threaded reply1897 has a Reply-To header1898 behaves like it should show Gmail Actions View Merge request link1899 should have body including "View Merge request"1900 behaves like it should have Gmail Actions links1901 should have body including "ViewAction"1902 behaves like an unsubscribeable thread1903 has a List-Unsubscribe header in the correct format, and a body link1904 behaves like an unsubscribeable thread with incoming address without %{key}1905 has a List-Unsubscribe header in the correct format, and a body link1906 behaves like appearance header and footer enabled1907 contains header and footer1908 behaves like appearance header and footer not enabled1909 does not contain header and footer1910 that have new commits on top of an existing one1911 behaves like a push to an existing merge request1912 is sent as the push user1913 has the correct subject and body1914 behaves like a multiple recipients email1915 is sent to the given recipient1916 behaves like an answer to an existing thread with reply-by-email enabled1917 has X-GitLab-Project headers1918 has X-GitLab-*-ID header1919 has X-GitLab-*-IID header if model has iid defined1920 has X-GitLab-Project headers1921 has X-GitLab-*-ID header1922 has X-GitLab-*-IID header if model has iid defined1923 has the characteristics of a threaded reply1924 when reply-by-email is enabled with incoming address with %{key}1925 has a Reply-To header1926 when reply-by-email is enabled with incoming address without %{key}1927 has X-GitLab-Project headers1928 has X-GitLab-*-ID header1929 has X-GitLab-*-IID header if model has iid defined1930 has the characteristics of a threaded reply1931 has a Reply-To header1932 behaves like it should show Gmail Actions View Merge request link1933 should have body including "View Merge request"1934 behaves like it should have Gmail Actions links1935 should have body including "ViewAction"1936 behaves like an unsubscribeable thread1937 has a List-Unsubscribe header in the correct format, and a body link1938 behaves like an unsubscribeable thread with incoming address without %{key}1939 has a List-Unsubscribe header in the correct format, and a body link1940 behaves like appearance header and footer enabled1941 contains header and footer1942 behaves like appearance header and footer not enabled1943 does not contain header and footer1944 #mail_thread1945 the model has no namespace1946 has X-GitLab-Namespaced-Thing-ID header1947 the model has a namespace1948 has X-GitLab-Namespaced-Thing-ID header1949 for issue notes1950 in discussion1951 has In-Reply-To header pointing to previous note in discussion1952 has References header including the notes and issue of the discussion1953 has X-GitLab-Discussion-ID header1954 behaves like an email sent to a user1955 is sent to user's global notification email address1956 with group notification email1957 is sent to user's group notification email1958 behaves like appearance header and footer enabled1959 contains header and footer1960 behaves like appearance header and footer not enabled1961 does not contain header and footer1962 individual issue comments1963 has In-Reply-To header pointing to the issue1964 has References header including the notes and issue of the discussion1965 behaves like an email sent to a user1966 is sent to user's global notification email address1967 with group notification email1968 is sent to user's group notification email1969 behaves like appearance header and footer enabled1970 contains header and footer1971 behaves like appearance header and footer not enabled1972 does not contain header and footer1973 for snippet notes1974 has the correct subject and body1975 behaves like appearance header and footer enabled1976 contains header and footer1977 behaves like appearance header and footer not enabled1978 does not contain header and footer1979 behaves like an answer to an existing thread with reply-by-email enabled1980 has X-GitLab-Project headers1981 has X-GitLab-*-ID header1982 has X-GitLab-*-IID header if model has iid defined1983 has X-GitLab-Project headers1984 has X-GitLab-*-ID header1985 has X-GitLab-*-IID header if model has iid defined1986 has the characteristics of a threaded reply1987 when reply-by-email is enabled with incoming address with %{key}1988 has a Reply-To header1989 when reply-by-email is enabled with incoming address without %{key}1990 has X-GitLab-Project headers1991 has X-GitLab-*-ID header1992 has X-GitLab-*-IID header if model has iid defined1993 has the characteristics of a threaded reply1994 has a Reply-To header1995 behaves like a user cannot unsubscribe through footer link1996 does not have a List-Unsubscribe header or a body link1997 project was moved1998 has the correct subject and body1999 behaves like an email sent to a user2000 is sent to user's global notification email address2001 with group notification email2002 is sent to user's group notification email2003 behaves like an email sent from GitLab2004 has the characteristics of an email sent from GitLab2005 behaves like it should not have Gmail Actions links2006 should not have body including "ViewAction"2007 behaves like a user cannot unsubscribe through footer link2008 does not have a List-Unsubscribe header or a body link2009 behaves like appearance header and footer enabled2010 contains header and footer2011 behaves like appearance header and footer not enabled2012 does not contain header and footer2013 project access requested2014 contains all the useful information2015 behaves like an email sent from GitLab2016 has the characteristics of an email sent from GitLab2017 behaves like it should not have Gmail Actions links2018 should not have body including "ViewAction"2019 behaves like a user cannot unsubscribe through footer link2020 does not have a List-Unsubscribe header or a body link2021 behaves like appearance header and footer enabled2022 contains header and footer2023 behaves like appearance header and footer not enabled2024 does not contain header and footer2025 project access denied2026 contains all the useful information2027 behaves like an email sent from GitLab2028 has the characteristics of an email sent from GitLab2029 behaves like it should not have Gmail Actions links2030 should not have body including "ViewAction"2031 behaves like a user cannot unsubscribe through footer link2032 does not have a List-Unsubscribe header or a body link2033 behaves like appearance header and footer enabled2034 contains header and footer2035 behaves like appearance header and footer not enabled2036 does not contain header and footer2037 project access changed2038 contains all the useful information2039 behaves like an email sent from GitLab2040 has the characteristics of an email sent from GitLab2041 behaves like it should not have Gmail Actions links2042 should not have body including "ViewAction"2043 behaves like a user cannot unsubscribe through footer link2044 does not have a List-Unsubscribe header or a body link2045 behaves like appearance header and footer enabled2046 contains header and footer2047 behaves like appearance header and footer not enabled2048 does not contain header and footer2049 project invitation2050 contains all the useful information2051 behaves like an email sent from GitLab2052 has the characteristics of an email sent from GitLab2053 behaves like it should not have Gmail Actions links2054 should not have body including "ViewAction"2055 behaves like a user cannot unsubscribe through footer link2056 does not have a List-Unsubscribe header or a body link2057 behaves like appearance header and footer enabled2058 contains header and footer2059 behaves like appearance header and footer not enabled2060 does not contain header and footer2061 project invitation accepted2062 contains all the useful information2063 behaves like an email sent from GitLab2064 has the characteristics of an email sent from GitLab2065 behaves like an email sent to a user2066 is sent to user's global notification email address2067 with group notification email2068 is sent to user's group notification email2069 behaves like it should not have Gmail Actions links2070 should not have body including "ViewAction"2071 behaves like a user cannot unsubscribe through footer link2072 does not have a List-Unsubscribe header or a body link2073 behaves like appearance header and footer enabled2074 contains header and footer2075 behaves like appearance header and footer not enabled2076 does not contain header and footer2077 project invitation declined2078 contains all the useful information2079 behaves like an email sent from GitLab2080 has the characteristics of an email sent from GitLab2081 behaves like an email sent to a user2082 is sent to user's global notification email address2083 with group notification email2084 is sent to user's group notification email2085 behaves like it should not have Gmail Actions links2086 should not have body including "ViewAction"2087 behaves like a user cannot unsubscribe through footer link2088 does not have a List-Unsubscribe header or a body link2089 behaves like appearance header and footer enabled2090 contains header and footer2091 behaves like appearance header and footer not enabled2092 does not contain header and footer2093 items that are noteable, the email for a note2094 on a commit2095 has the correct subject and body2096 behaves like a note email2097 is sent to the given recipient as the author2098 contains the message from the note2099 contains a link to note author2100 behaves like it should have Gmail Actions links2101 should have body including "ViewAction"2102 behaves like an answer to an existing thread with reply-by-email enabled2103 has X-GitLab-Project headers2104 has X-GitLab-*-ID header2105 has X-GitLab-*-IID header if model has iid defined2106 has X-GitLab-Project headers2107 has X-GitLab-*-ID header2108 has X-GitLab-*-IID header if model has iid defined2109 has the characteristics of a threaded reply2110 when reply-by-email is enabled with incoming address with %{key}2111 has a Reply-To header2112 when reply-by-email is enabled with incoming address without %{key}2113 has X-GitLab-Project headers2114 has X-GitLab-*-ID header2115 has X-GitLab-*-IID header if model has iid defined2116 has the characteristics of a threaded reply2117 has a Reply-To header2118 behaves like it should show Gmail Actions View Commit link2119 should have body including "View Commit"2120 behaves like it should have Gmail Actions links2121 should have body including "ViewAction"2122 behaves like a user cannot unsubscribe through footer link2123 does not have a List-Unsubscribe header or a body link2124 behaves like appearance header and footer enabled2125 contains header and footer2126 behaves like appearance header and footer not enabled2127 does not contain header and footer2128 on a merge request2129 has the correct subject and body2130 behaves like a note email2131 is sent to the given recipient as the author2132 contains the message from the note2133 contains a link to note author2134 behaves like it should have Gmail Actions links2135 should have body including "ViewAction"2136 behaves like an answer to an existing thread with reply-by-email enabled2137 has X-GitLab-Project headers2138 has X-GitLab-*-ID header2139 has X-GitLab-*-IID header if model has iid defined2140 has X-GitLab-Project headers2141 has X-GitLab-*-ID header2142 has X-GitLab-*-IID header if model has iid defined2143 has the characteristics of a threaded reply2144 when reply-by-email is enabled with incoming address with %{key}2145 has a Reply-To header2146 when reply-by-email is enabled with incoming address without %{key}2147 has X-GitLab-Project headers2148 has X-GitLab-*-ID header2149 has X-GitLab-*-IID header if model has iid defined2150 has the characteristics of a threaded reply2151 has a Reply-To header2152 behaves like it should show Gmail Actions View Merge request link2153 should have body including "View Merge request"2154 behaves like it should have Gmail Actions links2155 should have body including "ViewAction"2156 behaves like an unsubscribeable thread2157 has a List-Unsubscribe header in the correct format, and a body link2158 behaves like an unsubscribeable thread with incoming address without %{key}2159 has a List-Unsubscribe header in the correct format, and a body link2160 behaves like appearance header and footer enabled2161 contains header and footer2162 behaves like appearance header and footer not enabled2163 does not contain header and footer2164 on an issue2165 has the correct subject and body2166 behaves like a note email2167 is sent to the given recipient as the author2168 contains the message from the note2169 contains a link to note author2170 behaves like it should have Gmail Actions links2171 should have body including "ViewAction"2172 behaves like an answer to an existing thread with reply-by-email enabled2173 has X-GitLab-Project headers2174 has X-GitLab-*-ID header2175 has X-GitLab-*-IID header if model has iid defined2176 has X-GitLab-Project headers2177 has X-GitLab-*-ID header2178 has X-GitLab-*-IID header if model has iid defined2179 has the characteristics of a threaded reply2180 when reply-by-email is enabled with incoming address with %{key}2181 has a Reply-To header2182 when reply-by-email is enabled with incoming address without %{key}2183 has X-GitLab-Project headers2184 has X-GitLab-*-ID header2185 has X-GitLab-*-IID header if model has iid defined2186 has the characteristics of a threaded reply2187 has a Reply-To header2188 behaves like it should show Gmail Actions View Issue link2189 should have body including "View Issue"2190 behaves like it should have Gmail Actions links2191 should have body including "ViewAction"2192 behaves like an unsubscribeable thread2193 has a List-Unsubscribe header in the correct format, and a body link2194 behaves like an unsubscribeable thread with incoming address without %{key}2195 has a List-Unsubscribe header in the correct format, and a body link2196 behaves like appearance header and footer enabled2197 contains header and footer2198 behaves like appearance header and footer not enabled2199 does not contain header and footer2200 items that are noteable, the email for a discussion note2201 on a commit2202 has the correct subject2203 contains a link to the commit2204 behaves like a discussion note email2205 is sent to the given recipient as the author2206 contains the message from the note2207 contains an introduction2208 behaves like it should have Gmail Actions links2209 should have body including "ViewAction"2210 when a comment on an existing discussion2211 contains an introduction2212 behaves like an answer to an existing thread with reply-by-email enabled2213 has X-GitLab-Project headers2214 has X-GitLab-*-ID header2215 has X-GitLab-*-IID header if model has iid defined2216 has X-GitLab-Project headers2217 has X-GitLab-*-ID header2218 has X-GitLab-*-IID header if model has iid defined2219 has the characteristics of a threaded reply2220 when reply-by-email is enabled with incoming address with %{key}2221 has a Reply-To header2222 when reply-by-email is enabled with incoming address without %{key}2223 has X-GitLab-Project headers2224 has X-GitLab-*-ID header2225 has X-GitLab-*-IID header if model has iid defined2226 has the characteristics of a threaded reply2227 has a Reply-To header2228 behaves like it should show Gmail Actions View Commit link2229 should have body including "View Commit"2230 behaves like it should have Gmail Actions links2231 should have body including "ViewAction"2232 behaves like a user cannot unsubscribe through footer link2233 does not have a List-Unsubscribe header or a body link2234 behaves like appearance header and footer enabled2235 contains header and footer2236 behaves like appearance header and footer not enabled2237 does not contain header and footer2238 on a merge request2239 has the correct subject2240 contains a link to the merge request note2241 behaves like a discussion note email2242 is sent to the given recipient as the author2243 contains the message from the note2244 contains an introduction2245 behaves like it should have Gmail Actions links2246 should have body including "ViewAction"2247 when a comment on an existing discussion2248 contains an introduction2249 behaves like an answer to an existing thread with reply-by-email enabled2250 has X-GitLab-Project headers2251 has X-GitLab-*-ID header2252 has X-GitLab-*-IID header if model has iid defined2253 has X-GitLab-Project headers2254 has X-GitLab-*-ID header2255 has X-GitLab-*-IID header if model has iid defined2256 has the characteristics of a threaded reply2257 when reply-by-email is enabled with incoming address with %{key}2258 has a Reply-To header2259 when reply-by-email is enabled with incoming address without %{key}2260 has X-GitLab-Project headers2261 has X-GitLab-*-ID header2262 has X-GitLab-*-IID header if model has iid defined2263 has the characteristics of a threaded reply2264 has a Reply-To header2265 behaves like it should show Gmail Actions View Merge request link2266 should have body including "View Merge request"2267 behaves like it should have Gmail Actions links2268 should have body including "ViewAction"2269 behaves like an unsubscribeable thread2270 has a List-Unsubscribe header in the correct format, and a body link2271 behaves like an unsubscribeable thread with incoming address without %{key}2272 has a List-Unsubscribe header in the correct format, and a body link2273 behaves like appearance header and footer enabled2274 contains header and footer2275 behaves like appearance header and footer not enabled2276 does not contain header and footer2277 on an issue2278 has the correct subject2279 contains a link to the issue note2280 behaves like a discussion note email2281 is sent to the given recipient as the author2282 contains the message from the note2283 contains an introduction2284 behaves like it should have Gmail Actions links2285 should have body including "ViewAction"2286 when a comment on an existing discussion2287 contains an introduction2288 behaves like an answer to an existing thread with reply-by-email enabled2289 has X-GitLab-Project headers2290 has X-GitLab-*-ID header2291 has X-GitLab-*-IID header if model has iid defined2292 has X-GitLab-Project headers2293 has X-GitLab-*-ID header2294 has X-GitLab-*-IID header if model has iid defined2295 has the characteristics of a threaded reply2296 when reply-by-email is enabled with incoming address with %{key}2297 has a Reply-To header2298 when reply-by-email is enabled with incoming address without %{key}2299 has X-GitLab-Project headers2300 has X-GitLab-*-ID header2301 has X-GitLab-*-IID header if model has iid defined2302 has the characteristics of a threaded reply2303 has a Reply-To header2304 behaves like it should show Gmail Actions View Issue link2305 should have body including "View Issue"2306 behaves like it should have Gmail Actions links2307 should have body including "ViewAction"2308 behaves like an unsubscribeable thread2309 has a List-Unsubscribe header in the correct format, and a body link2310 behaves like an unsubscribeable thread with incoming address without %{key}2311 has a List-Unsubscribe header in the correct format, and a body link2312 behaves like appearance header and footer enabled2313 contains header and footer2314 behaves like appearance header and footer not enabled2315 does not contain header and footer2316 items that are noteable, the email for a diff discussion note2317 on a commit2318 behaves like an email for a note on a diff discussion2319 includes diffs with character-level highlighting2320 contains a link to the diff file2321 is sent to the given recipient as the author2322 contains the message from the note2323 contains an introduction2324 when note is not on text2325 does not include diffs with character-level highlighting2326 behaves like it should have Gmail Actions links2327 should have body including "ViewAction"2328 when a comment on an existing discussion2329 contains an introduction2330 behaves like it should show Gmail Actions View Commit link2331 should have body including "View Commit"2332 behaves like it should have Gmail Actions links2333 should have body including "ViewAction"2334 behaves like a user cannot unsubscribe through footer link2335 does not have a List-Unsubscribe header or a body link2336 behaves like appearance header and footer enabled2337 contains header and footer2338 behaves like appearance header and footer not enabled2339 does not contain header and footer2340 on a merge request2341 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 Merge request link2354 should have body including "View Merge request"2355 behaves like it should have Gmail Actions links2356 should have body including "ViewAction"2357 behaves like an unsubscribeable thread2358 has a List-Unsubscribe header in the correct format, and a body link2359 behaves like an unsubscribeable thread with incoming address without %{key}2360 has a List-Unsubscribe header in the correct format, and a body link2361 behaves like appearance header and footer enabled2362 contains header and footer2363 behaves like appearance header and footer not enabled2364 does not contain header and footer2365 for a group2366 group access requested2367 contains all the useful information2368 behaves like an email sent from GitLab2369 has the characteristics of an email sent from GitLab2370 behaves like an email sent to a user2371 is sent to user's global notification email address2372 with group notification email2373 is sent to user's group notification email2374 behaves like it should not have Gmail Actions links2375 should not have body including "ViewAction"2376 behaves like a user cannot unsubscribe through footer link2377 does not have a List-Unsubscribe header or a body link2378 behaves like appearance header and footer enabled2379 contains header and footer2380 behaves like appearance header and footer not enabled2381 does not contain header and footer2382 group access denied2383 contains all the useful information2384 behaves like an email sent from GitLab2385 has the characteristics of an email sent from GitLab2386 behaves like an email sent to a user2387 is sent to user's global notification email address2388 with group notification email2389 is sent to user's group notification email2390 behaves like it should not have Gmail Actions links2391 should not have body including "ViewAction"2392 behaves like a user cannot unsubscribe through footer link2393 does not have a List-Unsubscribe header or a body link2394 behaves like appearance header and footer enabled2395 contains header and footer2396 behaves like appearance header and footer not enabled2397 does not contain header and footer2398 group access changed2399 contains all the useful information2400 behaves like an email sent from GitLab2401 has the characteristics of an email sent from GitLab2402 behaves like an email sent to a user2403 is sent to user's global notification email address2404 with group notification email2405 is sent to user's group notification email2406 behaves like it should not have Gmail Actions links2407 should not have body including "ViewAction"2408 behaves like a user cannot unsubscribe through footer link2409 does not have a List-Unsubscribe header or a body link2410 behaves like appearance header and footer enabled2411 contains header and footer2412 behaves like appearance header and footer not enabled2413 does not contain header and footer2414 group invitation2415 contains all the useful information2416 behaves like an email sent from GitLab2417 has the characteristics of an email sent from GitLab2418 behaves like it should not have Gmail Actions links2419 should not have body including "ViewAction"2420 behaves like a user cannot unsubscribe through footer link2421 does not have a List-Unsubscribe header or a body link2422 behaves like appearance header and footer enabled2423 contains header and footer2424 behaves like appearance header and footer not enabled2425 does not contain header and footer2426 group invitation accepted2427 contains all the useful information2428 behaves like an email sent from GitLab2429 has the characteristics of an email sent from GitLab2430 behaves like it should not have Gmail Actions links2431 should not have body including "ViewAction"2432 behaves like a user cannot unsubscribe through footer link2433 does not have a List-Unsubscribe header or a body link2434 behaves like appearance header and footer enabled2435 contains header and footer2436 behaves like appearance header and footer not enabled2437 does not contain header and footer2438 group invitation declined2439 contains all the useful information2440 behaves like an email sent from GitLab2441 has the characteristics of an email sent from GitLab2442 behaves like it should not have Gmail Actions links2443 should not have body including "ViewAction"2444 behaves like a user cannot unsubscribe through footer link2445 does not have a List-Unsubscribe header or a body link2446 behaves like appearance header and footer enabled2447 contains header and footer2448 behaves like appearance header and footer not enabled2449 does not contain header and footer2450 confirmation if email changed2451 is sent to the new user2452 has the correct subject and body2453 behaves like an email sent from GitLab2454 has the characteristics of an email sent from GitLab2455 behaves like a user cannot unsubscribe through footer link2456 does not have a List-Unsubscribe header or a body link2457 email on push for a created branch2458 is sent as the author2459 has the correct subject and body2460 behaves like it should not have Gmail Actions links2461 should not have body including "ViewAction"2462 behaves like a user cannot unsubscribe through footer link2463 does not have a List-Unsubscribe header or a body link2464 behaves like an email with X-GitLab headers containing project details2465 has X-GitLab-Project headers2466 behaves like an email that contains a header with author username2467 has X-GitLab-Author header containing author's username2468 behaves like appearance header and footer enabled2469 contains header and footer2470 behaves like appearance header and footer not enabled2471 does not contain header and footer2472 email on push for a created tag2473 is sent as the author2474 has the correct subject and body2475 behaves like it should not have Gmail Actions links2476 should not have body including "ViewAction"2477 behaves like a user cannot unsubscribe through footer link2478 does not have a List-Unsubscribe header or a body link2479 behaves like an email with X-GitLab headers containing project details2480 has X-GitLab-Project headers2481 behaves like an email that contains a header with author username2482 has X-GitLab-Author header containing author's username2483 behaves like appearance header and footer enabled2484 contains header and footer2485 behaves like appearance header and footer not enabled2486 does not contain header and footer2487 email on push for a deleted branch2488 is sent as the author2489 has the correct subject2490 behaves like it should not have Gmail Actions links2491 should not have body including "ViewAction"2492 behaves like a user cannot unsubscribe through footer link2493 does not have a List-Unsubscribe header or a body link2494 behaves like an email with X-GitLab headers containing project details2495 has X-GitLab-Project headers2496 behaves like an email that contains a header with author username2497 has X-GitLab-Author header containing author's username2498 behaves like appearance header and footer enabled2499 contains header and footer2500 behaves like appearance header and footer not enabled2501 does not contain header and footer2502 email on push for a deleted tag2503 is sent as the author2504 has the correct subject2505 behaves like it should not have Gmail Actions links2506 should not have body including "ViewAction"2507 behaves like a user cannot unsubscribe through footer link2508 does not have a List-Unsubscribe header or a body link2509 behaves like an email with X-GitLab headers containing project details2510 has X-GitLab-Project headers2511 behaves like an email that contains a header with author username2512 has X-GitLab-Author header containing author's username2513 behaves like appearance header and footer enabled2514 contains header and footer2515 behaves like appearance header and footer not enabled2516 does not contain header and footer2517 email on push with multiple commits2518 is sent as the author2519 has the correct subject and body2520 behaves like it should not have Gmail Actions links2521 should not have body including "ViewAction"2522 behaves like a user cannot unsubscribe through footer link2523 does not have a List-Unsubscribe header or a body link2524 behaves like an email with X-GitLab headers containing project details2525 has X-GitLab-Project headers2526 behaves like an email that contains a header with author username2527 has X-GitLab-Author header containing author's username2528 behaves like appearance header and footer enabled2529 contains header and footer2530 behaves like appearance header and footer not enabled2531 does not contain header and footer2532 when set to send from committer email if domain matches2533 when the committer email domain is within the GitLab domain2534 is sent from the committer email2535 when the committer email domain is not completely within the GitLab domain2536 is sent from the default email2537 when the committer email domain is outside the GitLab domain2538 is sent from the default email2539 email on push with a single commit2540 is sent as the author2541 has the correct subject and body2542 behaves like it should show Gmail Actions View Commit link2543 should have body including "View Commit"2544 behaves like it should have Gmail Actions links2545 should have body including "ViewAction"2546 behaves like a user cannot unsubscribe through footer link2547 does not have a List-Unsubscribe header or a body link2548 behaves like an email with X-GitLab headers containing project details2549 has X-GitLab-Project headers2550 behaves like an email that contains a header with author username2551 has X-GitLab-Author header containing author's username2552 behaves like appearance header and footer enabled2553 contains header and footer2554 behaves like appearance header and footer not enabled2555 does not contain header and footer2556 HTML emails setting2557 behaves like appearance header and footer enabled2558 contains header and footer2559 behaves like appearance header and footer not enabled2560 does not contain header and footer2561 when disabled2562 only sends the text template2563 when enabled2564 sends a multipart message2565 for personal snippet notes2566 has the correct subject and body2567 behaves like a user cannot unsubscribe through footer link2568 does not have a List-Unsubscribe header or a body link2569 behaves like appearance header and footer enabled2570 contains header and footer2571 behaves like appearance header and footer not enabled2572 does not contain header and footer2573API::Groups2574 GET /groups2575 when unauthenticated2576 returns public groups2577 avoids N+1 queries2578 when authenticated as user2579 normal user: returns an array of groups of user12580 does not include runners_token information2581 does not include statistics2582 when authenticated as admin2583 admin: returns an array of all groups2584 does not include runners_token information2585 does not include statistics by default2586 includes statistics if requested2587 when using skip_groups in request2588 returns all groups excluding skipped groups2589 when using all_available in request2590 returns all groups you have access to2591 when using sorting2592 sorts by name ascending by default2593 sorts in descending order when passed2594 sorts by path in order_by param2595 sorts by id in the order_by param2596 sorts also by descending id with pagination fix2597 sorts identical keys by id for good pagination2598 sorts descending identical keys by id for good pagination2599 when using owned in the request2600 returns an array of groups the user owns2601 when using min_access_level in the request2602 returns an array of groups the user has at least master access2603 GET /groups/:id2604 when unauthenticated2605 returns 404 for a private group2606 returns 200 for a public group2607 returns only public projects in the group2608 returns only public projects shared with the group2609 when authenticated as user2610 returns one of user1's groups2611 returns one of user1's groups without projects when with_projects option is set to false2612 doesn't return runners_token if the user is not the owner of the group2613 returns runners_token if the user is the owner of the group2614 does not return a non existing group2615 does not return a group not attached to user12616 returns only public and internal projects in the group2617 returns only public and internal projects shared with the group2618 avoids N+1 queries2619 when authenticated as admin2620 returns any existing group2621 returns information of the runners_token for the group2622 does not return a non existing group2623 when using group path in URL2624 returns any existing group2625 does not return a non existing group2626 does not return a group not attached to user12627 PUT /groups/:id2628 when authenticated as the group owner2629 updates the group2630 returns 404 for a non existing group2631 within a subgroup2632 does not change visibility when not requested2633 prevents making private a group containing public subgroups2634 when authenticated as the admin2635 updates the group2636 when authenticated as an user that can see the group2637 does not updates the group2638 when authenticated as an user that cannot see the group2639 returns 404 when trying to update the group2640 GET /groups/:id/projects2641 when authenticated as user2642 returns the group's projects2643 returns the group's projects with simple representation2644 filters the groups projects2645 returns projects excluding shared2646 returns projects including those in subgroups2647 does not return a non existing group2648 does not return a group not attached to user12649 only returns projects to which user has access2650 only returns the projects owned by user2651 only returns the projects starred by user2652 with min access level2653 returns projects with min access level or higher2654 when authenticated as admin2655 returns any existing group2656 does not return a non existing group2657 avoids N+1 queries2658 when using group path in URL2659 returns any existing group2660 does not return a non existing group2661 does not return a group not attached to user12662 GET /groups/:id/subgroups2663 when unauthenticated2664 returns only public subgroups2665 returns 404 for a private group2666 when authenticated as user2667 when user is not member of a public group2668 returns no subgroups for the public group2669 when using all_available in request2670 returns public subgroups2671 when user is not member of a private group2672 returns 404 for the private group2673 when user is member of public group2674 returns private subgroups2675 when using statistics in request2676 does not include statistics2677 when user is member of private group2678 returns subgroups2679 when authenticated as admin2680 returns private subgroups of a public group2681 returns subgroups of a private group2682 does not include statistics by default2683 includes statistics if requested2684 POST /groups2685 when authenticated as user without group permissions2686 does not create group2687 as owner2688 can create subgroups2689 as maintainer2690 can create subgroups2691 when authenticated as user with group permissions2692 creates group2693 creates a nested group2694 does not create group, duplicate2695 returns 400 bad request error if name not given2696 returns 400 bad request error if path not given2697 DELETE /groups/:id2698 when authenticated as user2699 removes group2700 does not remove a group if not an owner2701 does not remove a non existing group2702 does not remove a group not attached to user12703 behaves like 412 response2704 for a modified ressource2705 returns 4122706 for an unmodified ressource2707 returns accepted2708 when authenticated as admin2709 removes any existing group2710 does not remove a non existing group2711 POST /groups/:id/projects/:project_id2712 when authenticated as user2713 does not transfer project to group2714 when authenticated as admin2715 transfers project to group2716 when using project path in URL2717 with a valid project path2718 transfers project to group2719 with a non-existent project path2720 does not transfer project to group2721 when using a group path in URL2722 with a valid group path2723 transfers project to group2724 with a non-existent group path2725 does not transfer project to group2726 behaves like custom attributes endpoints2727 GET /groups with custom attributes filter2728 with an unauthorized user2729 does not filter by custom attributes2730 with an authorized user2731 filters by custom attributes2732 GET /groups with custom attributes2733 with an unauthorized user2734 does not include custom attributes2735 with an authorized user2736 does not include custom attributes by default2737 includes custom attributes if requested2738 GET /groups/:id with custom attributes2739 with an unauthorized user2740 does not include custom attributes2741 with an authorized user2742 does not include custom attributes by default2743 includes custom attributes if requested2744 GET /groups/:id/custom_attributes2745 with an unauthorized user2746 behaves like an unauthorized API user2747 should eq 4032748 with an authorized user2749 returns all custom attributes2750 GET /groups/:id/custom_attributes/:key2751 with an unauthorized user2752 behaves like an unauthorized API user2753 should eq 4032754 with an authorized user2755 returns a single custom attribute2756 PUT /groups/:id/custom_attributes/:key2757 with an unauthorized user2758 behaves like an unauthorized API user2759 should eq 4032760 with an authorized user2761 creates a new custom attribute2762 updates an existing custom attribute2763 DELETE /groups/:id/custom_attributes/:key2764 with an unauthorized user2765 behaves like an unauthorized API user2766 should eq 4032767 with an authorized user2768 deletes an existing custom attribute2769API::Notes2770 when there are cross-reference system notes2771 behaves like with cross-reference system notes2772 returns only the note that the user should see2773 avoids Git calls and N+1 SQL queries2774 when noteable is an Issue2775 behaves like noteable API2776 GET /projects/:id/issues/:noteable_id/notes2777 returns an array of notes2778 returns a 404 error when noteable id not found2779 returns 404 when not authorized2780 sorting2781 sorts by ascending order when requested2782 sorts by updated_at in descending order when requested2783 sorts by updated_at in ascending order when requested2784 without sort params2785 sorts by created_at in descending order by default2786 2 notes with equal created_at2787 page breaks first page correctly2788 page breaks second page correctly2789 GET /projects/:id/issues/:noteable_id/notes/:note_id2790 returns a note by id2791 returns a 404 error if note not found2792 POST /projects/:id/issues/:noteable_id/notes2793 creates a new note2794 returns a 400 bad request error if body not given2795 returns a 401 unauthorized error if user not authenticated2796 creates an activity event when a note is created2797 setting created_at2798 by an admin2799 sets the creation time on the new note2800 by a project owner2801 sets the creation time on the new note2802 by a group owner2803 sets the creation time on the new note2804 by another user2805 ignores the given creation time2806 when the user is posting an award emoji on a noteable created by someone else2807 creates a new note2808 when the user is posting an award emoji on his/her own noteable2809 creates a new note2810 when user does not have access to read the noteable2811 responds with 4042812 PUT /projects/:id/issues/:noteable_id/notes/:note_id2813 returns modified note2814 returns a 404 error when note id not found2815 returns a 400 bad request error if body not given2816 DELETE /projects/:id/issues/:noteable_id/notes/:note_id2817 deletes a note2818 returns a 404 error when note id not found2819 behaves like 412 response2820 for a modified ressource2821 returns 4122822 for an unmodified ressource2823 returns accepted2824 when user does not have access to create noteable2825 responds with resource not found error2826 does not create new note2827 when referencing other project2828 GET /projects/:id/noteable/:noteable_id/notes2829 current user cannot view the notes2830 returns an empty array2831 issue is confidential2832 returns 4042833 current user can view the note2834 returns an empty array2835 GET /projects/:id/noteable/:noteable_id/notes/:note_id2836 current user cannot view the notes2837 returns a 404 error2838 when issue is confidential2839 returns 4042840 current user can view the note2841 returns an issue note by id2842 when noteable is a Snippet2843 behaves like noteable API2844 GET /projects/:id/snippets/:noteable_id/notes2845 returns an array of notes2846 returns a 404 error when noteable id not found2847 returns 404 when not authorized2848 sorting2849 sorts by ascending order when requested2850 sorts by updated_at in descending order when requested2851 sorts by updated_at in ascending order when requested2852 without sort params2853 sorts by created_at in descending order by default2854 2 notes with equal created_at2855 page breaks first page correctly2856 page breaks second page correctly2857 GET /projects/:id/snippets/:noteable_id/notes/:note_id2858 returns a note by id2859 returns a 404 error if note not found2860 POST /projects/:id/snippets/:noteable_id/notes2861 creates a new note2862 returns a 400 bad request error if body not given2863 returns a 401 unauthorized error if user not authenticated2864 creates an activity event when a note is created2865 setting created_at2866 by an admin2867 sets the creation time on the new note2868 by a project owner2869 sets the creation time on the new note2870 by a group owner2871 sets the creation time on the new note2872 by another user2873 ignores the given creation time2874 when the user is posting an award emoji on a noteable created by someone else2875 creates a new note2876 when the user is posting an award emoji on his/her own noteable2877 creates a new note2878 when user does not have access to read the noteable2879 responds with 4042880 PUT /projects/:id/snippets/:noteable_id/notes/:note_id2881 returns modified note2882 returns a 404 error when note id not found2883 returns a 400 bad request error if body not given2884 DELETE /projects/:id/snippets/:noteable_id/notes/:note_id2885 deletes a note2886 returns a 404 error when note id not found2887 behaves like 412 response2888 for a modified ressource2889 returns 4122890 for an unmodified ressource2891 returns accepted2892 when noteable is a Merge Request2893 behaves like noteable API2894 GET /projects/:id/merge_requests/:noteable_id/notes2895 returns an array of notes2896 returns a 404 error when noteable id not found2897 returns 404 when not authorized2898 sorting2899 sorts by ascending order when requested2900 sorts by updated_at in descending order when requested2901 sorts by updated_at in ascending order when requested2902 without sort params2903 sorts by created_at in descending order by default2904 2 notes with equal created_at2905 page breaks first page correctly2906 page breaks second page correctly2907 GET /projects/:id/merge_requests/:noteable_id/notes/:note_id2908 returns a note by id2909 returns a 404 error if note not found2910 POST /projects/:id/merge_requests/:noteable_id/notes2911 creates a new note2912 returns a 400 bad request error if body not given2913 returns a 401 unauthorized error if user not authenticated2914 creates an activity event when a note is created2915 setting created_at2916 by an admin2917 sets the creation time on the new note2918 by a project owner2919 sets the creation time on the new note2920 by a group owner2921 sets the creation time on the new note2922 by another user2923 ignores the given creation time2924 when the user is posting an award emoji on a noteable created by someone else2925 creates a new note2926 when the user is posting an award emoji on his/her own noteable2927 creates a new note2928 when user does not have access to read the noteable2929 responds with 4042930 PUT /projects/:id/merge_requests/:noteable_id/notes/:note_id2931 returns modified note2932 returns a 404 error when note id not found2933 returns a 400 bad request error if body not given2934 DELETE /projects/:id/merge_requests/:noteable_id/notes/:note_id2935 deletes a note2936 returns a 404 error when note id not found2937 behaves like 412 response2938 for a modified ressource2939 returns 4122940 for an unmodified ressource2941 returns accepted2942 when the merge request discussion is locked2943 when a user is a team member2944 returns 200 status2945 creates a new note2946 when a user is not a team member2947 returns 403 status2948 does not create a new note2949API::Discussions2950 when discussions have cross-reference system notes2951 behaves like with cross-reference system notes2952 returns only the note that the user should see2953 avoids Git calls and N+1 SQL queries2954 when noteable is an Issue2955 behaves like discussions API2956 GET /projects/:id/issues/:noteable_id/discussions2957 returns an array of discussions2958 returns a 404 error when noteable id not found2959 returns 404 when not authorized2960 GET /projects/:id/issues/:noteable_id/discussions/:discussion_id2961 returns a discussion by id2962 returns a 404 error if discussion not found2963 POST /projects/:id/issues/:noteable_id/discussions2964 creates a new note2965 returns a 400 bad request error if body not given2966 returns a 401 unauthorized error if user not authenticated2967 when an admin or owner makes the request2968 accepts the creation date to be set2969 when user does not have access to read the discussion2970 responds with 4042971 when a project is public with private repo access2972 when user is not a team member of private repo2973 creating a new note2974 raises 404 error2975 fetching a discussion2976 raises 404 error2977 POST /projects/:id/issues/:noteable_id/discussions/:discussion_id/notes2978 adds a new note to the discussion2979 returns a 400 bad request error if body not given2980 when the discussion is an individual note2981 creates a new discussion2982 PUT /projects/:id/issues/:noteable_id/discussions/:discussion_id/notes/:note_id2983 returns modified note2984 returns a 404 error when note id not found2985 returns a 400 bad request error if body not given2986 DELETE /projects/:id/issues/:noteable_id/discussions/:discussion_id/notes/:note_id2987 deletes a note2988 returns a 404 error when note id not found2989 behaves like 412 response2990 for a modified ressource2991 returns 4122992 for an unmodified ressource2993 returns accepted2994 when noteable is a Snippet2995 behaves like discussions API2996 GET /projects/:id/snippets/:noteable_id/discussions2997 returns an array of discussions2998 returns a 404 error when noteable id not found2999 returns 404 when not authorized3000 GET /projects/:id/snippets/:noteable_id/discussions/:discussion_id3001 returns a discussion by id3002 returns a 404 error if discussion not found3003 POST /projects/:id/snippets/:noteable_id/discussions3004 creates a new note3005 returns a 400 bad request error if body not given3006 returns a 401 unauthorized error if user not authenticated3007 when an admin or owner makes the request3008 accepts the creation date to be set3009 when user does not have access to read the discussion3010 responds with 4043011 when a project is public with private repo access3012 when user is not a team member of private repo3013 creating a new note3014 raises 404 error3015 fetching a discussion3016 raises 404 error3017 POST /projects/:id/snippets/:noteable_id/discussions/:discussion_id/notes3018 adds a new note to the discussion3019 returns a 400 bad request error if body not given3020 when the discussion is an individual note3021 returns 400 bad request3022 PUT /projects/:id/snippets/:noteable_id/discussions/:discussion_id/notes/:note_id3023 returns modified note3024 returns a 404 error when note id not found3025 returns a 400 bad request error if body not given3026 DELETE /projects/:id/snippets/:noteable_id/discussions/:discussion_id/notes/:note_id3027 deletes a note3028 returns a 404 error when note id not found3029 behaves like 412 response3030 for a modified ressource3031 returns 4123032 for an unmodified ressource3033 returns accepted3034 when noteable is a Merge Request3035 behaves like discussions API3036 GET /projects/:id/merge_requests/:noteable_id/discussions3037 returns an array of discussions3038 returns a 404 error when noteable id not found3039 returns 404 when not authorized3040 GET /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id3041 returns a discussion by id3042 returns a 404 error if discussion not found3043 POST /projects/:id/merge_requests/:noteable_id/discussions3044 creates a new note3045 returns a 400 bad request error if body not given3046 returns a 401 unauthorized error if user not authenticated3047 when an admin or owner makes the request3048 accepts the creation date to be set3049 when user does not have access to read the discussion3050 responds with 4043051 when a project is public with private repo access3052 when user is not a team member of private repo3053 creating a new note3054 raises 404 error3055 fetching a discussion3056 raises 404 error3057 POST /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes3058 adds a new note to the discussion3059 returns a 400 bad request error if body not given3060 when the discussion is an individual note3061 creates a new discussion3062 PUT /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes/:note_id3063 returns modified note3064 returns a 404 error when note id not found3065 returns a 400 bad request error if body not given3066 DELETE /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes/:note_id3067 deletes a note3068 returns a 404 error when note id not found3069 behaves like 412 response3070 for a modified ressource3071 returns 4123072 for an unmodified ressource3073 returns accepted3074 behaves like diff discussions API3075 GET /projects/:id/merge_requests/:noteable_id/discussions3076 includes diff discussions3077 GET /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id3078 returns a discussion by id3079 POST /projects/:id/merge_requests/:noteable_id/discussions3080 creates a new diff note3081 returns a 400 bad request error when position is invalid3082 POST /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes3083 adds a new note to the diff discussion3084 behaves like resolvable discussions API3085 PUT /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id3086 resolves discussion if resolved is true3087 unresolves discussion if resolved is false3088 returns a 400 bad request error if resolved parameter is not passed3089 returns a 401 unauthorized error if user is not authenticated3090 returns a 403 error if user resolves discussion of someone else3091 when user does not have access to read the discussion3092 responds with 4043093 PUT /projects/:id/merge_requests/:noteable_id/discussions/:discussion_id/notes/:note_id3094 returns resolved note when resolved parameter is true3095 returns a 404 error when note id not found3096 returns a 400 bad request error if neither body nor resolved parameter is given3097 returns a 403 error if user resolves note of someone else3098 when noteable is a Commit3099 behaves like discussions API3100 GET /projects/:id/repository/commits/:noteable_id/discussions3101 returns an array of discussions3102 returns a 404 error when noteable id not found3103 returns 404 when not authorized3104 GET /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id3105 returns a discussion by id3106 returns a 404 error if discussion not found3107 POST /projects/:id/repository/commits/:noteable_id/discussions3108 creates a new note3109 returns a 400 bad request error if body not given3110 returns a 401 unauthorized error if user not authenticated3111 when an admin or owner makes the request3112 accepts the creation date to be set3113 when user does not have access to read the discussion3114 responds with 4043115 when a project is public with private repo access3116 when user is not a team member of private repo3117 creating a new note3118 raises 404 error3119 fetching a discussion3120 raises 404 error3121 POST /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id/notes3122 adds a new note to the discussion3123 returns a 400 bad request error if body not given3124 when the discussion is an individual note3125 returns 400 bad request3126 PUT /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id/notes/:note_id3127 returns modified note3128 returns a 404 error when note id not found3129 returns a 400 bad request error if body not given3130 DELETE /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id/notes/:note_id3131 deletes a note3132 returns a 404 error when note id not found3133 behaves like 412 response3134 for a modified ressource3135 returns 4123136 for an unmodified ressource3137 returns accepted3138 behaves like diff discussions API3139 GET /projects/:id/repository/commits/:noteable_id/discussions3140 includes diff discussions3141 GET /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id3142 returns a discussion by id3143 POST /projects/:id/repository/commits/:noteable_id/discussions3144 creates a new diff note3145 returns a 400 bad request error when position is invalid3146 POST /projects/:id/repository/commits/:noteable_id/discussions/:discussion_id/notes3147 adds a new note to the diff discussion3148API::Files3149 http headers3150 converts value into string3151 raises exception if value is an Enumerable3152 HEAD /projects/:id/repository/files/:file_path3153 when unauthenticated and project is public3154 behaves like repository files3155 returns file attributes in headers3156 returns file by commit sha3157 when mandatory params are not given3158 responds with a 400 status3159 when file_path does not exist3160 responds with a 404 status3161 when file_path does not exist3162 responds with a 403 status3163 when unauthenticated and project is private3164 responds with a 404 status3165 when PATs are used3166 behaves like repository files3167 returns file attributes in headers3168 returns file by commit sha3169 when mandatory params are not given3170 responds with a 400 status3171 when file_path does not exist3172 responds with a 404 status3173 when file_path does not exist3174 responds with a 403 status3175 when authenticated as a developer3176 behaves like repository files3177 returns file attributes in headers3178 returns file by commit sha3179 when mandatory params are not given3180 responds with a 400 status3181 when file_path does not exist3182 responds with a 404 status3183 when file_path does not exist3184 responds with a 403 status3185 when authenticated as a guest3186 behaves like 403 response3187 returns 4033188 GET /projects/:id/repository/files/:file_path3189 when unauthenticated and project is public3190 behaves like repository files3191 returns file attributes as json3192 returns json when file has txt extension3193 returns file by commit sha3194 returns raw file info3195 returns blame file info3196 sets inline content disposition by default3197 when mandatory params are not given3198 behaves like 400 response3199 returns 4003200 when file_path does not exist3201 behaves like 404 response3202 returns 4043203 when repository is disabled3204 behaves like 403 response3205 returns 4033206 when PATs are used3207 behaves like repository files3208 returns file attributes as json3209 returns json when file has txt extension3210 returns file by commit sha3211 returns raw file info3212 returns blame file info3213 sets inline content disposition by default3214 when mandatory params are not given3215 behaves like 400 response3216 returns 4003217 when file_path does not exist3218 behaves like 404 response3219 returns 4043220 when repository is disabled3221 behaves like 403 response3222 returns 4033223 when unauthenticated and project is private3224 behaves like 404 response3225 returns 4043226 when authenticated as a developer3227 behaves like repository files3228 returns file attributes as json3229 returns json when file has txt extension3230 returns file by commit sha3231 returns raw file info3232 returns blame file info3233 sets inline content disposition by default3234 when mandatory params are not given3235 behaves like 400 response3236 returns 4003237 when file_path does not exist3238 behaves like 404 response3239 returns 4043240 when repository is disabled3241 behaves like 403 response3242 returns 4033243 when authenticated as a guest3244 behaves like 403 response3245 returns 4033246 GET /projects/:id/repository/files/:file_path/blame3247 when unauthenticated and project is public3248 behaves like repository blame files3249 returns file attributes in headers3250 returns blame file attributes as json3251 returns blame file info for files with dots3252 returns file by commit sha3253 when mandatory params are not given3254 behaves like 400 response3255 returns 4003256 when file_path does not exist3257 behaves like 404 response3258 returns 4043259 when commit does not exist3260 behaves like 404 response3261 returns 4043262 when repository is disabled3263 behaves like 403 response3264 returns 4033265 when unauthenticated and project is private3266 behaves like 404 response3267 returns 4043268 when authenticated as a developer3269 behaves like repository blame files3270 returns file attributes in headers3271 returns blame file attributes as json3272 returns blame file info for files with dots3273 returns file by commit sha3274 when mandatory params are not given3275 behaves like 400 response3276 returns 4003277 when file_path does not exist3278 behaves like 404 response3279 returns 4043280 when commit does not exist3281 behaves like 404 response3282 returns 4043283 when repository is disabled3284 behaves like 403 response3285 returns 4033286 when authenticated as a guest3287 behaves like 403 response3288 returns 4033289 when PATs are used3290 returns blame file by commit sha3291 GET /projects/:id/repository/files/:file_path/raw3292 when unauthenticated and project is public3293 behaves like repository raw files3294 returns raw file info3295 returns raw file info for files with dots3296 returns file by commit sha3297 when mandatory params are not given3298 behaves like 400 response3299 returns 4003300 when file_path does not exist3301 behaves like 404 response3302 returns 4043303 when repository is disabled3304 behaves like 403 response3305 returns 4033306 when unauthenticated and project is private3307 behaves like 404 response3308 returns 4043309 when authenticated as a developer3310 behaves like repository raw files3311 returns raw file info3312 returns raw file info for files with dots3313 returns file by commit sha3314 when mandatory params are not given3315 behaves like 400 response3316 returns 4003317 when file_path does not exist3318 behaves like 404 response3319 returns 4043320 when repository is disabled3321 behaves like 403 response3322 returns 4033323 when authenticated as a guest3324 behaves like 403 response3325 returns 4033326 when PATs are used3327 returns file by commit sha3328 POST /projects/:id/repository/files/:file_path3329 creates a new file in project repo3330 returns a 400 bad request if no mandatory params given3331 returns a 400 bad request if the commit message is empty3332 returns a 400 if editor fails to create file3333 with PATs3334 returns 403 with `read_repository` scope3335 returns 201 with `api` scope3336 when specifying an author3337 creates a new file with the specified author3338 when the repo is empty3339 creates a new file in project repo3340 PUT /projects/:id/repository/files3341 updates existing file in project repo3342 returns a 400 bad request if the commit message is empty3343 returns a 400 bad request if update existing file with stale last commit id3344 updates existing file in project repo with accepts correct last commit id3345 returns a 400 bad request if no params given3346 when specifying an author3347 updates a file with the specified author3348 DELETE /projects/:id/repository/files3349 deletes existing file in project repo3350 returns a 400 bad request if no params given3351 returns a 400 bad request if the commit message is empty3352 returns a 400 if fails to delete file3353 when specifying an author3354 removes a file with the specified author3355 POST /projects/:id/repository/files with binary file3356 remains unchanged3357Projects::NotesController3358 GET index3359 passes last_fetched_at from headers to NotesFinder3360 when user notes_filter is present3361 filters system notes by comments3362 returns all notes3363 does not merge label event notes3364 for a discussion note3365 responds with the expected attributes3366 for a diff discussion note3367 responds with the expected attributes3368 for a commit note3369 when displayed on a merge request3370 responds with the expected attributes3371 when displayed on the commit3372 responds with the expected attributes3373 when user cannot read commit3374 renders 4043375 for a regular note3376 responds with the expected attributes3377 with cross-reference system note3378 filters notes that the user should not see3379 does not result in N+1 queries3380 POST create3381 making the creation request3382 the project is publically available3383 for HTML3384 returns status 3023385 for JSON3386 returns status 200 for json3387 the project is a private project3388 format is3389 returns status 4043390 format is json3391 returns status 4043392 the user is a developer on a private project3393 HTML requests3394 returns status 302 (redirect)3395 JSON requests3396 returns status 2003397 the return_discussion param is set3398 returns discussion JSON when the return_discussion param is set3399 when creating a note with quick actions3400 with commands that return changes3401 includes changes in commands_changes3402 with commands that do not return changes3403 does not include changes in commands_changes3404 when the internal project prohibits non-members from accessing merge requests3405 prevents a non-member user from creating a note on one of the project's merge requests3406 when the user is a team member3407 can add comments3408 when the request includes a :in_reply_to_discussion_id designed to fool us3409 prevents the request from adding notes to the spoofed discussion3410 returns an error to the user3411 when the public project prohibits non-members from accessing merge requests3412 prevents a non-member user from creating a note on one of the project's merge requests3413 when the user is a team member3414 can add comments3415 when merge_request_diff_head_sha present3416 returns status 302 for html3417 when creating a comment on a commit with SHA1 starting with a large number3418 creates a note successfully3419 when creating a commit comment from an MR fork3420 when the note_project_id is not correct3421 returns a 4043422 when the user has no access to the fork3423 returns a 4043424 when the user has access to the fork3425 is successful3426 creates the note3427 when target_id and noteable_id do not match3428 uses target_id and ignores noteable_id3429 when the merge request discussion is locked3430 when a noteable is not found3431 returns 404 status3432 when a user is a team member3433 returns 302 status for html3434 returns 200 status for json3435 creates a new note3436 when a user is not a team member3437 returns 404 status3438 does not create a new note3439 PUT update3440 should update the note with a valid issue3441 updates the note3442 doesnt update the note3443 disallows edits when the issue is confidential and the user has guest permissions3444 DELETE destroy3445 user is the author of a note3446 returns status 200 for html3447 deletes the note3448 user is not the author of a note3449 returns status 4043450 POST toggle_award_emoji3451 toggles the award emoji3452 removes the already awarded emoji3453 marks Todos on the Noteable as done3454 resolving and unresolving3455 POST resolve3456 when the user is not authorized to resolve the note3457 returns status 4043458 when the user is authorized to resolve the note3459 when the note is not resolvable3460 returns status 4043461 when the note is resolvable3462 resolves the note3463 sends notifications if all discussions are resolved3464 returns the name of the resolving user3465 returns status 2003466 DELETE unresolve3467 when the user is not authorized to resolve the note3468 returns status 4043469 when the user is authorized to resolve the note3470 when the note is not resolvable3471 returns status 4043472 when the note is resolvable3473 unresolves the note3474 returns status 2003475Emails::Profile3476 for new users, the email3477 contains the password text3478 includes a link for user to set password3479 explains the reset link expiration3480 behaves like an email sent from GitLab3481 has the characteristics of an email sent from GitLab3482 behaves like a new user email3483 is sent to the new user with the correct subject and body3484 behaves like it should not have Gmail Actions links3485 should not have body including "ViewAction"3486 behaves like a user cannot unsubscribe through footer link3487 does not have a List-Unsubscribe header or a body link3488 for users that signed up, the email3489 does not contain the new user's password3490 behaves like an email sent from GitLab3491 has the characteristics of an email sent from GitLab3492 behaves like a new user email3493 is sent to the new user with the correct subject and body3494 behaves like it should not have Gmail Actions links3495 should not have body including "ViewAction"3496 behaves like a user cannot unsubscribe through footer link3497 does not have a List-Unsubscribe header or a body link3498 user added ssh key3499 is sent to the new user3500 has the correct subject3501 contains the new ssh key title3502 includes a link to ssh keys page3503 behaves like an email sent from GitLab3504 has the characteristics of an email sent from GitLab3505 behaves like it should not have Gmail Actions links3506 should not have body including "ViewAction"3507 behaves like a user cannot unsubscribe through footer link3508 does not have a List-Unsubscribe header or a body link3509 with SSH key that does not exist3510 should not raise Exception3511 user added gpg key3512 is sent to the new user3513 has the correct subject3514 contains the new gpg key title3515 includes a link to gpg keys page3516 behaves like an email sent from GitLab3517 has the characteristics of an email sent from GitLab3518 behaves like it should not have Gmail Actions links3519 should not have body including "ViewAction"3520 behaves like a user cannot unsubscribe through footer link3521 does not have a List-Unsubscribe header or a body link3522 with GPG key that does not exist3523 should not raise Exception3524Projects::ForksController3525 GET index3526 when fork is public3527 is visible for non logged in users3528 forks counts are correct3529 after search3530 forks counts are correct3531 when fork is internal3532 forks counts are correct3533 when fork is private3534 is not visible for non logged in users3535 forks counts are correct3536 when user is logged in3537 when user is not a Project member neither a group member3538 does not see the Project listed3539 when user is a member of the Project3540 sees the project listed3541 forks counts are correct3542 when user is a member of the Group3543 sees the project listed3544 forks counts are correct3545 GET new3546 when user is signed in3547 responds with status 2003548 when user is not signed in3549 redirects to the sign-in page3550 POST create3551 when user is signed in3552 responds with status 3023553 passes continue params to the redirect3554 when user is not signed in3555 redirects to the sign-in page3556AutocompleteController3557 GET users3558 project members3559 GET #users with project ID3560 returns the project members3561 GET #users with unknown project3562 should respond with numeric status code 4043563 group members3564 GET #users with group ID3565 returns the group members3566 GET #users with unknown group ID3567 should respond with numeric status code 4043568 non-member login for public project3569 GET #users with project ID3570 returns the project members and non-members3571 all users3572 should be a kind of Array3573 should eq 33574 user order3575 shows exact matches first3576 limited users per page3577 should be a kind of Array3578 should eq 203579 unauthenticated user3580 GET #users with public project3581 should be a kind of Array3582 should eq 23583 GET #users with project3584 should respond with numeric status code 4043585 GET #users with unknown project3586 should respond with numeric status code 4043587 GET #users with inaccessible group3588 should respond with numeric status code 4043589 GET #users with no project3590 should be a kind of Array3591 should be empty3592 GET #users with todo filter3593 gives an array of users3594 author of issuable included3595 authenticated3596 includes the author3597 rejects non existent user ids3598 without authenticating3599 returns empty result3600 skip_users parameter included3601 skips the user IDs passed3602 merge_request_iid parameter included3603 includes can_merge option to users3604 GET projects3605 authorized projects3606 GET #projects with project ID3607 returns projects3608 authorized projects and search3609 GET #projects with project ID and search3610 returns projects3611 authorized projects apply limit3612 GET #projects with project ID3613 returns projects3614 authorized projects without admin_issue ability3615 GET #projects with project ID3616 returns no projects3617 GET award_emojis3618 unauthorized user3619 returns empty json3620 sign in as user without award emoji3621 returns empty json3622 sign in as user with award emoji3623 returns json sorted by name count3624 Get merge_request_target_branches3625 unauthorized user3626DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "MAX(merge_requests.updated_at) DESC". 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 recent_target_branches at /builds/gitlab-org/gitlab/app/models/merge_request.rb:229)3627 returns empty json3628 sign in as user without any accesible merge requests3629DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "MAX(merge_requests.updated_at) DESC". 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 recent_target_branches at /builds/gitlab-org/gitlab/app/models/merge_request.rb:229)3630 returns empty json3631 sign in as user with a accesible merge request3632DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "MAX(merge_requests.updated_at) DESC". 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 recent_target_branches at /builds/gitlab-org/gitlab/app/models/merge_request.rb:229)3633 returns json3634API::Deployments3635 GET /projects/:id/deployments3636 as member of the project3637 returns projects deployments sorted by id asc3638 ordering3639 order_by: "created_at", sort: "asc", ordered_deployments: [:deployment_3, :deployment_2, :deployment_1]3640 returns the deployments ordered3641 order_by: "created_at", sort: "desc", ordered_deployments: [:deployment_1, :deployment_2, :deployment_3]3642 returns the deployments ordered3643 order_by: "id", sort: "asc", ordered_deployments: [:deployment_1, :deployment_2, :deployment_3]3644 returns the deployments ordered3645 order_by: "id", sort: "desc", ordered_deployments: [:deployment_3, :deployment_2, :deployment_1]3646 returns the deployments ordered3647 order_by: "iid", sort: "asc", ordered_deployments: [:deployment_3, :deployment_1, :deployment_2]3648 returns the deployments ordered3649 order_by: "iid", sort: "desc", ordered_deployments: [:deployment_2, :deployment_1, :deployment_3]3650 returns the deployments ordered3651 order_by: "ref", sort: "asc", ordered_deployments: [:deployment_2, :deployment_1, :deployment_3]3652 returns the deployments ordered3653 order_by: "ref", sort: "desc", ordered_deployments: [:deployment_3, :deployment_1, :deployment_2]3654 returns the deployments ordered3655 as non member3656 returns a 404 status code3657 GET /projects/:id/deployments/:deployment_id3658 as a member of the project3659 returns the projects deployment3660 as non member3661 returns a 404 status code3662Private Project Pages Access3663 Project should be private3664 #private?3665 should be truthy3666 GET /projects/:id/pages_access3667 access depends on the level3668 pages_access_level: 0, with_user: "admin", expected_result: 4033669 correct return value3670 pages_access_level: 0, with_user: "owner", expected_result: 4033671 correct return value3672 pages_access_level: 0, with_user: "master", expected_result: 4033673 correct return value3674 pages_access_level: 0, with_user: "developer", expected_result: 4033675 correct return value3676 pages_access_level: 0, with_user: "reporter", expected_result: 4033677 correct return value3678 pages_access_level: 0, with_user: "guest", expected_result: 4033679 correct return value3680 pages_access_level: 0, with_user: "user", expected_result: 4043681 correct return value3682 pages_access_level: 0, with_user: nil, expected_result: 4043683 correct return value3684 pages_access_level: 30, with_user: "admin", expected_result: 2003685 correct return value3686 pages_access_level: 30, with_user: "owner", expected_result: 2003687 correct return value3688 pages_access_level: 30, with_user: "master", expected_result: 2003689 correct return value3690 pages_access_level: 30, with_user: "developer", expected_result: 2003691 correct return value3692 pages_access_level: 30, with_user: "reporter", expected_result: 2003693 correct return value3694 pages_access_level: 30, with_user: "guest", expected_result: 2003695 correct return value3696 pages_access_level: 30, with_user: "user", expected_result: 4043697 correct return value3698 pages_access_level: 30, with_user: nil, expected_result: 4043699 correct return value3700 pages_access_level: 20, with_user: "admin", expected_result: 2003701 correct return value3702 pages_access_level: 20, with_user: "owner", expected_result: 2003703 correct return value3704 pages_access_level: 20, with_user: "master", expected_result: 2003705 correct return value3706 pages_access_level: 20, with_user: "developer", expected_result: 2003707 correct return value3708 pages_access_level: 20, with_user: "reporter", expected_result: 2003709 correct return value3710 pages_access_level: 20, with_user: "guest", expected_result: 2003711 correct return value3712 pages_access_level: 20, with_user: "user", expected_result: 4043713 correct return value3714 pages_access_level: 20, with_user: nil, expected_result: 4043715 correct return value3716 pages_access_level: 10, with_user: "admin", expected_result: 2003717 correct return value3718 pages_access_level: 10, with_user: "owner", expected_result: 2003719 correct return value3720 pages_access_level: 10, with_user: "master", expected_result: 2003721 correct return value3722 pages_access_level: 10, with_user: "developer", expected_result: 2003723 correct return value3724 pages_access_level: 10, with_user: "reporter", expected_result: 2003725 correct return value3726 pages_access_level: 10, with_user: "guest", expected_result: 2003727 correct return value3728 pages_access_level: 10, with_user: "user", expected_result: 4043729 correct return value3730 pages_access_level: 10, with_user: nil, expected_result: 4043731 correct return value3732Projects::CommitsController3733 signed in3734 GET commits_root3735 no ref is provided3736 redirects to the default branch of the project3737 GET show3738 with file path3739 valid branch, valid file3740 should respond with 2003741 valid branch, invalid file3742 should respond with 4043743 invalid branch, valid file3744 should respond with 4043745 branch with invalid format, valid file3746 should respond with 4043747 when the ref name ends in .atom3748 when the ref does not exist with the suffix3749 renders as atom3750 renders summary with type=html3751 when the ref exists with the suffix3752 renders as HTML3753 GET /commits/:id/signatures3754 valid branch3755 should respond with 2003756 invalid branch format3757 should respond with 4043758 token authentication3759 public project3760 behaves like authenticates sessionless user3761 when the 'personal_access_token' param is populated with the personal access token3762 logs the user in3763 does not log the user in if page is public3764 when the 'PERSONAL_ACCESS_TOKEN' header is populated with the personal access token3765 logs the user in3766 private project3767 behaves like authenticates sessionless user3768 doesn't log the user in otherwise3769 when the 'personal_access_token' param is populated with the personal access token3770 logs the user in3771 when the personal access token has no api scope3772 does not log the user in3773 when the 'PERSONAL_ACCESS_TOKEN' header is populated with the personal access token3774 logs the user in3775Projects::MergeRequests::ConflictsController3776 GET show3777 when the conflicts cannot be resolved in the UI3778 returns a 200 status code3779 returns JSON with a message3780 with valid conflicts3781 matches the schema3782 includes meta info about the MR3783 includes each file that has conflicts3784 splits files into sections with lines3785 has unique section IDs across files3786 GET conflict_for_path3787 when the conflicts cannot be resolved in the UI3788 returns a 404 status code3789 when the file does not exist cannot be resolved in the UI3790 returns a 404 status code3791 with an existing file3792 returns a 200 status code3793 returns the file in JSON format3794 POST resolve_conflicts3795 with valid params3796 creates a new commit on the branch3797 returns an OK response3798 when sections are missing3799 returns a 400 error3800 has a message with the name of the first missing section3801 does not create a new commit3802 when files are missing3803 returns a 400 error3804 has a message with the name of the missing file3805 does not create a new commit3806 when a file has identical content to the conflict3807 returns a 400 error3808 has a message with the path of the problem file3809 does not create a new commit3810API::ProjectContainerRepositories3811 GET /projects/:id/registry/repositories3812 behaves like rejected container repository access3813 for guest3814 returns forbidden3815 behaves like rejected container repository access3816 for anonymous3817 returns not_found3818 behaves like returns repositories for allowed users3819 for reporter3820 returns a list of repositories3821 returns a matching schema3822 with tags param3823 returns a list of repositories and their tags3824 returns a matching schema3825 DELETE /projects/:id/registry/repositories/:repository_id3826 behaves like rejected container repository access3827 for developer3828 returns forbidden3829 behaves like rejected container repository access3830 for anonymous3831 returns not_found3832 for maintainer3833 schedules removal of repository3834 GET /projects/:id/registry/repositories/:repository_id/tags3835 behaves like rejected container repository access3836 for guest3837 returns forbidden3838 behaves like rejected container repository access3839 for anonymous3840 returns not_found3841 for reporter3842 returns a list of tags3843 returns a matching schema3844 DELETE /projects/:id/registry/repositories/:repository_id/tags3845 disallowed3846 behaves like rejected container repository access3847 for developer3848 returns forbidden3849 behaves like rejected container repository access3850 for anonymous3851 returns not_found3852 for maintainer3853 without required parameters3854 returns bad request3855 passes all declared parameters3856 schedules cleanup of tags repository3857 called multiple times in one hour3858 returns 400 with an error message3859 executes service only for the first time3860 GET /projects/:id/registry/repositories/:repository_id/tags/:tag_name3861 behaves like rejected container repository access3862 for guest3863 returns forbidden3864 behaves like rejected container repository access3865 for anonymous3866 returns not_found3867 for reporter3868 returns a details of tag3869 returns a matching schema3870 DELETE /projects/:id/registry/repositories/:repository_id/tags/:tag_name3871 behaves like rejected container repository access3872 for reporter3873 returns forbidden3874 behaves like rejected container repository access3875 for anonymous3876 returns not_found3877 for developer3878 when there are multiple tags3879 properly removes tag3880 when there's only one tag3881 properly removes tag3882Projects::Serverless::FunctionsController3883 GET #index3884 when cache is being read3885 returns checking3886 should respond with numeric status code 2003887 when cache is ready3888 when no functions were found3889 returns checking3890 should respond with numeric status code 2003891 when functions were found3892 returns functions3893 should respond with numeric status code 2003894 GET #show3895 invalid data3896 has a bad function name3897 valid data3898 has a valid function name3899 GET #metrics3900 invalid data3901 has a bad function name3902 GET #index with data3903 has data3904 has data in html3905Projects::StarrersController3906 GET index3907 N+1 queries3908 avoids N+1s loading users3909 when project is public3910 when no user is logged in3911 with no searching3912 only users with public profiles are visible3913 starrers counts are correct3914 when searching by user3915 only users with public profiles are visible3916 starrers counts are correct3917 when public user is logged in3918 with no searching3919 their star is also visible3920 starrers counts are correct3921 when searching by user3922 only users with public profiles are visible3923 starrers counts are correct3924 when private user is logged in3925 with no searching3926 their star is also visible3927 starrers counts are correct3928 when searching by user3929 only users with public profiles are visible3930 starrers counts are correct3931 when admin is logged in3932 with no searching3933 all users are visible3934 starrers counts are correct3935 when searching by user3936 public and private starrers are visible3937 starrers counts are correct3938 when project is private3939 starrers are not visible for non logged in users3940 when user is logged in3941 only users with public profiles are visible3942 starrers counts are correct3943getting projects3944 behaves like a graphql namespace3945 includes the packages size if the user can read the statistics3946 behaves like a working graphql query3947 returns a successful response3948 with no user3949 finds only public projects3950 when the namespace is a user3951 behaves like a graphql namespace3952 includes the packages size if the user can read the statistics3953 behaves like a working graphql query3954 returns a successful response3955 with no user3956 finds only public projects3957 when not including subgroups3958 behaves like a graphql namespace3959 includes the packages size if the user can read the statistics3960 behaves like a working graphql query3961 returns a successful response3962 with no user3963 finds only public projects3964API::ProjectTemplates3965 GET /projects/:id/templates/:type3966 returns dockerfiles3967 returns gitignores3968 returns gitlab_ci_ymls3969 returns licenses3970 returns 400 for an unknown template type3971 denies access to an anonymous user on a private project3972 permits access to a developer on a private project3973 GET /projects/:id/templates/licenses3974 returns key and name for the listed licenses3975 GET /projects/:id/templates/:type/:key3976 returns a specific dockerfile3977 returns a specific gitignore3978 returns C++ gitignore3979 returns C++ gitignore for URL-encoded names3980 returns a specific gitlab_ci_yml3981 returns a specific license3982 returns 404 for an unknown specific template3983 denies access to an anonymous user on a private project3984 permits access to a developer on a private project3985 behaves like path traversal attempt3986 rejects invalid filenames3987 behaves like path traversal attempt3988 rejects invalid filenames3989 behaves like path traversal attempt3990 rejects invalid filenames3991 GET /projects/:id/templates/licenses/:key3992 fills placeholders in the license3993Adding an image DiffNote3994 behaves like a Note mutation when the user does not have permission3995 behaves like a Note mutation that does not create a Note3996 should not change `Note.count`3997 behaves like a mutation that returns top-level errors3998 should eq ["The resource that you are attempting to access does not exist or you don't have permission to perform this action"]3999 when the user has permission4000 returns the note with the correct position4001 behaves like a Note mutation that creates a Note4002 should change `Note.count` by 14003 behaves like a Note mutation when there are active record validation errors4004 returns an empty Note4005 behaves like a Note mutation that does not create a Note4006 should not change `Note.count`4007 behaves like a mutation that returns errors in the response4008 should eq ["Error 1", "Error 2"]4010 behaves like a Note mutation when the given resource id is not for a Noteable4011 behaves like a Note mutation that does not create a Note4012 should not change `Note.count`4013 behaves like a mutation that returns top-level errors4014 should eq ["Cannot add notes to this resource"]4015API::Variables4016 GET /projects/:id/variables4017 authorized user with proper permissions4018 returns project variables4019 authorized user with invalid permissions4020 does not return project variables4021 unauthorized user4022 does not return project variables4023 GET /projects/:id/variables/:key4024 authorized user with proper permissions4025 returns project variable details4026 responds with 404 Not Found if requesting non-existing variable4027 authorized user with invalid permissions4028 does not return project variable details4029 unauthorized user4030 does not return project variable details4031 POST /projects/:id/variables4032 authorized user with proper permissions4033 creates variable4034 creates variable with optional attributes4035 does not allow to duplicate variable key4036 creates variable with a specific environment scope4037 allows duplicated variable key given different environment scopes4038 authorized user with invalid permissions4039 does not create variable4040 unauthorized user4041 does not create variable4042 PUT /projects/:id/variables/:key4043 authorized user with proper permissions4044 updates variable data4045 responds with 404 Not Found if requesting non-existing variable4046 authorized user with invalid permissions4047 does not update variable4048 unauthorized user4049 does not update variable4050 DELETE /projects/:id/variables/:key4051 authorized user with proper permissions4052 deletes variable4053 responds with 404 Not Found if requesting non-existing variable4054 authorized user with invalid permissions4055 does not delete variable4056 unauthorized user4057 does not delete variable4058getting merge request information nested in a project4059 contains merge request information4060 includes a web_url4061 behaves like a working graphql query4062 returns a successful response4063 permissions on the merge request4064 includes the permissions for the current user on a public project4065 when the user does not have access to the merge request4066 returns nil4067 when there are pipelines4068 has a head pipeline4069 has pipeline connections4070Projects::UploadsController4071 behaves like handle uploads4072 behaves like handle uploads authorize4073 POST #authorize4074 when a user is not authorized to upload a file4075 returns 404 status4076 when a user can upload a file4077 and the request bypassed workhorse4078 raises an exception4079 and request is sent by gitlab-workhorse to authorize the request4080 when using local storage4081 behaves like a local file4082 behaves like a valid response4083 responds with status 2004084 uses the gitlab-workhorse content type4085 responds with status 200, location of uploads store and object details4086 when using remote storage4087 when direct upload is enabled4088 behaves like a valid response4089 responds with status 2004090 uses the gitlab-workhorse content type4091 responds with status 200, location of uploads remote store and object details4092 when direct upload is disabled4093 behaves like a local file4094 behaves like a valid response4095 responds with status 2004096 uses the gitlab-workhorse content type4097 responds with status 200, location of uploads store and object details4098 POST #create4099 when a user is not authorized to upload a file4100 returns 404 status4101 when a user can upload a file4102 without params['file']4103 returns an error4104 with valid image4105 returns a content with original filename, new link, and correct type.4106 creates a corresponding Upload record4107 with valid non-image file4108 returns a content with original filename, new link, and correct type.4109 GET #show4110 when accessing a specific upload via different model4111 responds with status 4044112 when the model is public4113 when not signed in4114 when the file exists4115 responds with status 2004116 when neither the uploader nor the model exists4117 responds with status 4044118 when the file doesn't exist4119 responds with status 4044120 when signed in4121 when the file exists4122 responds with status 2004123 when the file doesn't exist4124 responds with status 4044125 when the model is private4126 when not signed in4127 when the file exists4128 when the file is an image4129 responds with status 2004130 when the file is not an image4131 redirects to the sign in page4132 when the file doesn't exist4133 redirects to the sign in page4134 when signed in4135 when the user has access to the project4136 when the file exists4137 responds with status 2004138 when the file doesn't exist4139 responds with status 4044140 when the user doesn't have access to the model4141 when the file exists4142 when the file is an image4143 responds with status 2004144 when the file is not an image4145 responds with status 4044146 when the file doesn't exist4147 responds with status 4044148 when the URL the old style, without /-/system4149 responds with a redirect to the login page4150 when exception occurs4151 responds with status internal_server_error4152Projects::TreeController4153 GET show4154 valid branch, no path4155 should respond with 2004156 valid branch, valid path4157 should respond with 2004158 valid branch, invalid path4159 should respond with 4044160 invalid branch, valid path4161 should respond with 4044162 valid empty branch, invalid path4163 should respond with 4044164 valid empty branch4165 should respond with 2004166 invalid SHA commit ID4167 should respond with 4044168 valid SHA commit ID4169 should respond with 2004170 valid SHA commit ID with path4171 should respond with numeric status code 3024172 GET show with whitespace in ref4173 does not call make a Gitaly request4174 GET show with blob path4175 redirect to blob4176 redirects4177 #create_dir4178 successful creation4179 redirects to the new directory4180 unsuccessful creation4181 does not allow overwriting of existing files4182Adding a Note4183 behaves like a Note mutation when the user does not have permission4184 behaves like a Note mutation that does not create a Note4185 should not change `Note.count`4186 behaves like a mutation that returns top-level errors4187 should eq ["The resource that you are attempting to access does not exist or you don't have permission to perform this action"]4188 when the user has permission4189 returns the note4190 behaves like a Note mutation that creates a Note4191 should change `Note.count` by 14192 behaves like a Note mutation when there are active record validation errors4193 returns an empty Note4194 behaves like a Note mutation that does not create a Note4195 should not change `Note.count`4196 behaves like a mutation that returns errors in the response4197 should eq ["Error 1", "Error 2"]4198 behaves like a Note mutation when the given resource id is not for a Noteable4199 behaves like a Note mutation that does not create a Note4200 should not change `Note.count`4201 behaves like a mutation that returns top-level errors4202 should eq ["Cannot add notes to this resource"]4203 creating Notes in reply to a discussion4204 when the user does not have permission to create notes on the discussion4205 behaves like a mutation that returns top-level errors4206 should eq ["The discussion does not exist or you don't have permission to perform this action"]4207 when the user has permission to create notes on the discussion4208 creates a Note in a discussion4209API::MergeRequestDiffs MergeRequestDiffs4210 GET /projects/:id/merge_requests/:merge_request_iid/versions4211 returns 200 for a valid merge request4212 returns a 404 when merge_request id is used instead of the iid4213 returns a 404 when merge_request_iid not found4214 GET /projects/:id/merge_requests/:merge_request_iid/versions/:version_id4215 returns a 200 for a valid merge request4216 returns a 404 when merge_request id is used instead of the iid4217 returns a 404 when merge_request version_id is not found4218 returns a 404 when merge_request_iid is not found4219Adding a DiffNote4220 behaves like a Note mutation when the user does not have permission4221 behaves like a Note mutation that does not create a Note4222 should not change `Note.count`4223 behaves like a mutation that returns top-level errors4224 should eq ["The resource that you are attempting to access does not exist or you don't have permission to perform this action"]4225 when the user has permission4226 returns the note with the correct position4227 behaves like a Note mutation that creates a Note4228 should change `Note.count` by 14229 behaves like a Note mutation when there are active record validation errors4230 returns an empty Note4231 behaves like a Note mutation that does not create a Note4232 should not change `Note.count`4233 behaves like a mutation that returns errors in the response4234 should eq ["Error 1", "Error 2"]4236 behaves like a Note mutation when the given resource id is not for a Noteable4237 behaves like a Note mutation that does not create a Note4238 should not change `Note.count`4239 behaves like a mutation that returns top-level errors4240 should eq ["Cannot add notes to this resource"]4241API::ProjectEvents4242 GET /projects/:id/events4243 when unauthenticated4244 returns 404 for private project4245 returns 200 status for a public project4246 with inaccessible events4247 returns only accessible events4248 returns all events when the user has access4249 pagination4250 correctly returns the second page without inaccessible events4251 correctly returns the first page without inaccessible events4252 when not permitted to read4253 returns 4044254 when authenticated4255 returns project events4256 returns 404 if project does not exist4257 when the requesting token does not have "api" scope4258 returns a "403" response4259 when exists some events4260 avoids N+1 queries4261Admin::UsersController4262 GET #index4263 retrieves all users4264 filters by admins4265 GET :id4266 finds a user case-insensitively4267 DELETE #user with projects4268 deletes user and ghosts their contributions4269 deletes the user and their contributions when hard delete is specified4270 PUT #activate4271 for a deactivated user4272 behaves like a request that activates the user4273 activates the user4274 for an active user4275 behaves like a request that activates the user4276 activates the user4277 for a blocked user4278 does not activate the user4279 PUT #deactivate4280 for an active user4281 with no recent activity4282 behaves like a request that deactivates the user4283 deactivates the user4284 with recent activity4285 does not deactivate the user4286 for a deactivated user4287 behaves like a request that deactivates the user4288 deactivates the user4289 for a blocked user4290 does not deactivate the user4291 PUT block/:id4292 blocks user4293 PUT unblock/:id4294 ldap blocked users4295 does not unblock user4296 manually blocked users4297 unblocks user4298 PUT unlock/:id4299 unlocks user4300 PUT confirm/:id4301 confirms user4302 PATCH disable_two_factor4303 disables 2FA for the user4304 redirects back4305 displays an alert4306 POST create4307 creates the user4308 shows only one error message for an invalid email4309 POST update4310 when the password has changed4311 when the admin changes his own password4312 updates the password4313 does not set the new password to expire immediately4314 when the new password is valid4315 redirects to the user4316 updates the password4317 sets the new password to expire immediately4318 when the new password is invalid4319 shows the edit page again4320 returns the error message4321 does not update the password4322 when the new password does not match the password confirmation4323 shows the edit page again4324 returns the error message4325 does not update the password4326 POST impersonate4327 when the user is blocked4328 shows a notice4329 doesn't sign us in as the user4330 when the user is not blocked4331 stores the impersonator in the session4332 signs us in as the user4333 logs the beginning of the impersonation event4334 redirects to root4335 shows a notice4336 when impersonation is disabled4337 shows error page4338Projects::MirrorsController4339 setting up a remote mirror4340 when the current project is not a mirror43412019-10-15T08:53:06.901Z 113 TID-gs7r9r5ed INFO: Removing remote remote_mirror_1 from project 132543422019-10-15T08:53:06.913Z 113 TID-gs7r9r5ed ERROR: Could not remove remote remote_mirror_1 from project 13254343 allows to create a remote mirror4344 setting up SSH public-key authentication43452019-10-15T08:53:07.434Z 113 TID-gs7r9r5ed INFO: Removing remote remote_mirror_2 from project 132543462019-10-15T08:53:07.444Z 113 TID-gs7r9r5ed ERROR: Could not remove remote remote_mirror_2 from project 13254347 processes a successful update4348 #update4349 With valid URL for a push4350 processes a successful update4351 creates a RemoteMirror object4352 With invalid URL for a push4353 processes an unsuccessful update4354 does not create a RemoteMirror object4355 #ssh_host_keys4356 invalid URLs4357 returns an error with a 400 response for URL "INVALID"4358 returns an error with a 400 response for URL "git@example.com:foo/bar.git"4359 returns an error with a 400 response for URL "ssh://git@example.com:foo/bar.git"4360 no data in cache4361 requests the cache to be filled and returns a 204 response4362 error in the cache4363 returns the error with a 400 response4364 data in the cache4365 returns the data with a 200 response4366Groups::VariablesController4367 GET #show4368 renders the variables as json4369 has only one variable4370 PATCH #update4371 with invalid new variable parameters4372 does not update the existing variable4373 does not create the new variable4374 returns a bad request response4375 with duplicate new variable parameters4376 does not update the existing variable4377 does not create the new variable4378 returns a bad request response4379 with valid new variable parameters4380 updates the existing variable4381 creates the new variable4382 returns a successful response4383 has all variables in response4384 with a deleted variable4385 destroys the variable4386 returns a successful response4387 has all variables in response4388 for variables of type file4389 creates new variable of type file4390 with external authorization enabled4391 GET #show4392 is successful4393 PATCH #update4394 is successful4395API::Namespaces4396 GET /namespaces4397 when unauthenticated4398 returns authentication error4399 when authenticated as admin4400 returns correct attributes4401 admin: returns an array of all namespaces4402 admin: returns an array of matched namespaces4403 when authenticated as a regular user4404 returns correct attributes when user can admin group4405 returns correct attributes when user cannot admin group4406 user: returns an array of namespaces4407 admin: returns an array of matched namespaces4408 GET /namespaces/:id4409 when unauthenticated4410 returns authentication error4411 when authenticated as regular user4412 when requested namespace is not owned by user4413 when requesting group4414 returns not-found4415 when requesting personal namespace4416 returns not-found4417 when requested namespace is owned by user4418 behaves like namespace reader4419 when namespace exists4420 when requested by ID4421 when requesting group4422 behaves like can access namespace4423 returns namespace details4424 when requesting personal namespace4425 behaves like can access namespace4426 returns namespace details4427 when requested by path4428 when requesting group4429 behaves like can access namespace4430 returns namespace details4431 when requesting personal namespace4432 behaves like can access namespace4433 returns namespace details4434 when namespace doesn't exist4435 returns not-found4436 when authenticated as admin4437 when requested namespace is not owned by user4438 when requesting group4439 behaves like can access namespace4440 returns namespace details4441 when requesting personal namespace4442 behaves like can access namespace4443 returns namespace details4444 when requested namespace is owned by user4445 behaves like namespace reader4446 when namespace exists4447 when requested by ID4448 when requesting group4449 behaves like can access namespace4450 returns namespace details4451 when requesting personal namespace4452 behaves like can access namespace4453 returns namespace details4454 when requested by path4455 when requesting group4456 behaves like can access namespace4457 returns namespace details4458 when requesting personal namespace4459 behaves like can access namespace4460 returns namespace details4461 when namespace doesn't exist4462 returns not-found4463getting notes for an issue4464 behaves like exposing regular notes on a noteable in GraphQL4465 for regular notes4466 includes the note4467 behaves like a working graphql query4468 returns a successful response4469 for discussions4470 includes all discussion notes4471 behaves like a working graphql query4472 returns a successful response4473Removing an AwardEmoji4474 when the current_user does not own the award emoji4475 behaves like a mutation that does not authorize the user4476 behaves like a mutation that does not destroy an AwardEmoji4477 should not change `AwardEmoji.count`4478 behaves like a mutation that returns top-level errors4479 should eq ["The resource that you are attempting to access does not exist or you don't have permission to perform this action"]4480 when the current_user owns the award emoji4481 when the given awardable is not an Awardable4482 behaves like a mutation that does not destroy an AwardEmoji4483 should not change `AwardEmoji.count`4484 behaves like a mutation that returns top-level errors4485 should eq ["Cannot award emoji to this resource"]4486 when the given awardable is an Awardable4487 removes the emoji4488 returns no errors4489 returns an empty awardEmoji4490Projects::PagesController4491 GET show4492 returns 200 status4493 when the project is in a subgroup4494 returns a 200 status code4495 DELETE destroy4496 returns 302 status4497 when user is developer4498 returns 404 status4499 pages disabled4500 GET show4501 returns 404 status4502 DELETE destroy4503 returns 404 status4504 PATCH update4505 returns 302 status4506 redirects back to the pages settings4507 calls the update service4508getting a tree in a project4509 when path does not exist4510 returns empty tree4511 returns null commit4512 when ref does not exist4513 returns empty tree4514 returns null commit4515 when ref and path exist4516 returns tree4517 returns blobs, subtrees and submodules inside tree4518 returns tree latest commit4519 when current user is nil4520 returns empty project4521Projects::ProtectedBranchesController4522 GET #index4523 redirects empty repo to projects page4524 POST #create4525 creates the protected branch rule4526 when a policy restricts rule deletion4527 prevents creation of the protected branch rule4528 PUT #update4529 updates the protected branch rule4530 when a policy restricts rule deletion4531 prevents update of the protected branch rule4532 DELETE #destroy4533 deletes the protected branch rule4534 when a policy restricts rule deletion4535 prevents deletion of the protected branch rule4536GroupTree4537 GET #index4538 filters groups4539 for subgroups4540 only renders root groups when no parent was given4541 contains only the subgroup when a parent was given4542 allows filtering for subgroups and includes the parents for rendering4543 does not include groups the user does not have access to4544 preloads parents regardless of pagination4545 json content4546 shows groups as json4547 nested groups4548 expands the tree when filtering4549Emails::AutoDevops4550 #auto_devops_disabled_email4551 sents email with correct subject4552 sents an email to the user4553 is sent as GitLab email4554 behaves like appearance header and footer enabled4555 contains header and footer4556 behaves like appearance header and footer not enabled4557 does not contain header and footer4558Projects::ReleasesController4559 GET #index4560 renders a 2004561 when the project is private4562 renders a 3024563 renders a 200 for a logged in developer4564 renders a 404 when logged in but not in the project4565Projects::ErrorTrackingController4566 GET #index4567 html4568 renders index with 200 status code4569 with insufficient permissions4570 returns 4044571 with an anonymous user4572 redirects to sign-in page4573 format json4574 service result is successful4575 returns a list of errors4576 service result is erroneous4577 without http_status4578 returns 400 with message4579 with explicit http_status4580 returns http_status with message4581 POST #list_projects4582 with insufficient permissions4583 returns 4044584 with an anonymous user4585 redirects to sign-in page4586 with authorized user4587 service result is successful4588 returns a list of projects4589 service result is erroneous4590 without http_status4591 returns 400 with message4592 with explicit http_status4593 returns http_status with message4594Projects::RunnersController4595 #update4596 updates the runner and ticks the queue4597 #destroy4598 destroys the runner4599 #resume4600 marks the runner as active and ticks the queue4601 #pause4602 marks the runner as inactive and ticks the queue4603Destroying a Note4604 when the user does not have permission4605 does not destroy the Note4606 behaves like a mutation that returns top-level errors4607 should eq ["The resource that you are attempting to access does not exist or you don't have permission to perform this action"]4608 when the user has permission4609 destroys the Note4610 returns an empty Note4611 behaves like a Note mutation when the given resource id is not for a Note4612 behaves like a mutation that returns top-level errors4613 should eq ["Resource is not a note"]4614Projects::FindFileController4615 GET #show4616 valid branch4617 should respond with 2004618 invalid branch4619 should respond with 4044620 GET #list4621 valid branch4622 returns an array of file path list4623 invalid branch4624 responds with status 4044625Projects::CycleAnalytics::EventsController4626 cycle analytics not set up flag4627 with no data4628 is empty4629 with data4630 is not empty4631 contains event detais4632 with data older than start date4633 is empty4634ProjectUnauthorized4635 .on_routable_not_found4636 renders a 200 when the service allows access to the project4637 renders a 403 when the service denies access to the project4638 renders a 404 when the user cannot see the project at all4639HealthController4640 #readiness4641 accessed from whitelisted ip4642 behaves like endpoint responding with readiness data4643 responds with readiness checks data4644 responds with readiness checks data when a failure happens4645 accessed from not whitelisted ip4646 responds with resource not found4647 accessed with valid token4648 token passed in request header4649 behaves like endpoint responding with readiness data4650 responds with readiness checks data4651 responds with readiness checks data when a failure happens4652 token passed as URL param4653 behaves like endpoint responding with readiness data4654 responds with readiness checks data4655 responds with readiness checks data when a failure happens4656 #liveness4657 accessed from whitelisted ip4658 behaves like endpoint responding with liveness data4659 responds with liveness checks data4660 accessed from not whitelisted ip4661 responds with resource not found4662 accessed with valid token4663 token passed in request header4664 behaves like endpoint responding with liveness data4665 responds with liveness checks data4666 token passed as URL param4667 behaves like endpoint responding with liveness data4668 responds with liveness checks data4669Admin::GroupsController4670 DELETE #destroy4671 schedules a group destroy4672 redirects to the admin group path4673 PUT #members_update4674 adds user to members4675 can add unlimited members4676 adds no user to members4677 updates the project_creation_level successfully4678 updates the subgroup_creation_level successfully4679Dashboard::LabelsController4680 #index4681 returns global labels for projects the user has a relationship with4682 behaves like disabled when using an external authorization service4683 works when the feature is not enabled4684 renders a 404 with a message when the feature is enabled4685Admin::ImpersonationsController4686 DELETE destroy4687 when not signed in4688 redirects to the sign in page4689 when signed in4690 when not impersonating4691 responds with status 4044692 doesn't sign us in4693 when impersonating4694 when the impersonator is not admin (anymore)4695 responds with status 4044696 doesn't sign us in as the impersonator4697 when the impersonator is admin4698 when the impersonator is blocked4699 responds with status 4044700 doesn't sign us in as the impersonator4701 when the impersonator is not blocked4702 behaves like successfully stops impersonating4703 redirects to the impersonated user's page4704 signs us in as the impersonator4705 and the user has a temporary oauth e-mail address4706 behaves like successfully stops impersonating4707 redirects to the impersonated user's page4708 signs us in as the impersonator4709rendering project statistics4710 includes the packages size if the user can read the statistics4711 behaves like a working graphql query4712 returns a successful response4713 when the project is public4714 hides statistics for unauthenticated requests4715Users::TermsController4716 GET #index4717 redirects when no terms exist4718 when terms exist4719 shows terms when they exist4720 shows a message when the user already accepted the terms4721 POST #accept4722 saves that the user accepted the terms4723 redirects to a path when specified4724 redirects to the referer when no redirect specified4725 redirecting to another domain4726 is prevented when passing a redirect param4727 is prevented when redirecting to the referer4728 POST #decline4729 stores that the user declined the terms4730 signs out the user4731Projects::AutocompleteSourcesController4732 GET members4733 returns an array of member object4734 GET milestones4735 lists milestones4736 when user cannot read project issues and merge requests4737 renders 4044738Oauth::AuthorizationsController4739 GET #new4740 without valid params4741 returns 200 code and renders error view4742 with valid params4743 returns 200 code and renders view4744 deletes session.user_return_to and redirects when skip authorization4745 when there is already an access token for the application4746 when the request scope matches any of the created token scopes4747 authorizes the request and redirects4748AbuseReportsController4749 GET new4750 when the user has already been deleted4751 redirects the reporter to root_path4752 when the user has already been blocked4753 redirects the reporter to the user's profile4754 POST create4755 with valid attributes4756 saves the abuse report4757 calls notify4758 redirects back to the reported user4759 with invalid attributes4760 renders new4761Groups::LabelsController4762 GET #index4763 returns group and project labels by default4764 with ancestor group4765 returns ancestor group labels4766 external authorization4767 behaves like disabled when using an external authorization service4768 works when the feature is not enabled4769 renders a 404 with a message when the feature is enabled4770 POST #toggle_subscription4771 allows user to toggle subscription on group labels4772Import::GitlabProjectsController4773 POST create4774 with an invalid path4775 redirects with an error4776 redirects with an error when a relative path is used4777 with a valid path4778 redirects to the new project path4779RootController4780 GET index4781 when user is not logged in4782 redirects to the sign-in page4783 when a custom home page URL is defined4784 redirects the user to the custom home page URL4785 with a user4786 who has customized their dashboard setting for starred projects4787 redirects to their specified dashboard4788 who has customized their dashboard setting for project activities4789 redirects to the activity list4790 who has customized their dashboard setting for starred project activities4791 redirects to the activity list4792 who has customized their dashboard setting for groups4793 redirects to their group list4794 who has customized their dashboard setting for todos4795 redirects to their todo list4796 who has customized their dashboard setting for assigned issues4797 redirects to their assigned issues4798 who has customized their dashboard setting for assigned merge requests4799 redirects to their assigned merge requests4800 who uses the default dashboard setting4801 renders the default dashboard4802API::ImportGithub4803 POST /import/github4804 returns 201 response when the project is imported successfully4805 returns 422 response when user can not create projects in the chosen namespace4806Admin::SpamLogsController4807 #index4808 lists all spam logs4809 #destroy4810 removes only the spam log when removing log4811 removes user and his spam logs when removing the user4812 #mark_as_ham4813 submits the log as ham4814File uploads4815 POST /:namespace/:project/create/:branch4816 redirects to blob4817OAuth Tokens requests4818 when there is already a token for the application4819 and the request is done by the resource owner4820 reuses and returns the stored token4821 and the request is done by a different user4822 generates and returns a different token for a different owner4823 when there is no token stored for the application4824 generates and returns a new token4825Projects::GrafanaApiController4826 GET #proxy4827 with a successful result4828 returns a grafana datasource response4829 when the request is still unavailable4830 returns 204 no content4831 when an error has occurred4832 with an error accessing grafana4833 behaves like error response4834 returns service_unavailable4835 with a processing error4836 behaves like error response4837 returns bad_request4838OAuth tokens4839 Resource Owner Password Credentials4840 when user has 2FA enabled4841 does not create an access token4842 when user does not have 2FA enabled4843 creates an access token4844 when user is blocked4845 does not create an access token4846 when user is ldap_blocked4847 does not create an access token4848SortingPreference4849 #set_sort_order_from_user_preference4850 when sort param given4851 when sorting_field is defined4852 sets user_preference with the right value4853 when no sorting_field is defined on the controller4854 does not touch user_preference4855 when a user sorting preference exists4856 returns the set preference4857 #set_set_order_from_cookie4858 when sort param given4859 sets the cookie with the right values and flags4860 when cookie exists4861 sets the cookie with the right values and flags4862IssuableCollections4863 #page_count_for_relation4864 returns the number of pages4865 #finder_options4866 scalar params4867 only allows whitelisted params4868 array params4869 only allows whitelisted params4870 search using an issue iid4871 mutates the search into a filter by iid4872getting project information4873 logged in4874 returns version and revision4875 anonymous user4876 returns nothing4877ChaosController4878 #leakmem4879 calls synchronously4880 call synchronously with params4881 calls asynchronously4882 #cpu_spin4883 calls synchronously4884 calls synchronously with params4885 calls asynchronously4886 #db_spin4887 calls synchronously4888 calls synchronously with params4889 calls asynchronously4890 #sleep4891 calls synchronously4892 calls synchronously with params4893 calls asynchronously4894 #kill4895 calls synchronously4896 calls asynchronously4897API::Lint4898 POST /ci/lint4899 with valid .gitlab-ci.yaml content4900 passes validation4901 with an invalid .gitlab_ci.yml4902 responds with errors about invalid syntax4903 responds with errors about invalid configuration4904 without the content parameter4905 responds with validation error about missing content4906Admin::RequestsProfilesController4907 #show4908 when loading HTML profile4909 renders the data4910 when loading TXT profile4911 renders the data4912 when loading PDF profile4913 fails to render the data4914Knapsack report was generated. Preview:4915{4916 "spec/mailers/notify_spec.rb": 166.78657984733582,4917 "spec/requests/api/groups_spec.rb": 97.31360197067261,4918 "spec/requests/api/notes_spec.rb": 46.89671540260315,4919 "spec/requests/api/discussions_spec.rb": 57.82861089706421,4920 "spec/requests/api/files_spec.rb": 33.589670181274414,4921 "spec/controllers/projects/notes_controller_spec.rb": 45.01227164268494,4922 "spec/mailers/emails/profile_spec.rb": 29.022080183029175,4923 "spec/controllers/projects/forks_controller_spec.rb": 23.869561433792114,4924 "spec/controllers/autocomplete_controller_spec.rb": 21.880939483642578,4925 "spec/requests/api/deployments_spec.rb": 18.90887212753296,4926 "spec/requests/api/pages/private_access_spec.rb": 13.215787172317505,4927 "spec/controllers/projects/commits_controller_spec.rb": 17.401987075805664,4928 "spec/controllers/projects/merge_requests/conflicts_controller_spec.rb": 12.625840663909912,4929 "spec/requests/api/project_container_repositories_spec.rb": 9.170837163925171,4930 "spec/controllers/projects/serverless/functions_controller_spec.rb": 9.382179498672485,4931 "spec/controllers/projects/starrers_controller_spec.rb": 7.665992975234985,4932 "spec/requests/api/graphql/namespace/projects_spec.rb": 6.9821367263793945,4933 "spec/requests/api/project_templates_spec.rb": 8.92070984840393,4934 "spec/requests/api/graphql/mutations/notes/create/image_diff_note_spec.rb": 5.134992837905884,4935 "spec/requests/api/variables_spec.rb": 10.762892484664917,4936 "spec/requests/api/graphql/project/merge_request_spec.rb": 6.010064601898193,4937 "spec/controllers/projects/uploads_controller_spec.rb": 8.563405752182007,4938 "spec/controllers/projects/tree_controller_spec.rb": 6.998027563095093,4939 "spec/requests/api/graphql/mutations/notes/create/note_spec.rb": 6.306734561920166,4940 "spec/requests/api/merge_request_diffs_spec.rb": 4.536334991455078,4941 "spec/requests/api/graphql/mutations/notes/create/diff_note_spec.rb": 4.850827932357788,4942 "spec/requests/api/project_events_spec.rb": 5.3769261837005615,4943 "spec/controllers/admin/users_controller_spec.rb": 5.538068771362305,4944 "spec/controllers/projects/mirrors_controller_spec.rb": 3.467428207397461,4945 "spec/controllers/groups/variables_controller_spec.rb": 3.7776410579681396,4946 "spec/requests/api/namespaces_spec.rb": 4.764939069747925,4947 "spec/requests/api/graphql/project/issue/notes_spec.rb": 2.2316555976867676,4948 "spec/requests/api/graphql/mutations/award_emojis/remove_spec.rb": 2.585415840148926,4949 "spec/controllers/projects/pages_controller_spec.rb": 3.0422770977020264,4950 "spec/requests/api/graphql/project/tree/tree_spec.rb": 2.545103073120117,4951 "spec/controllers/projects/protected_branches_controller_spec.rb": 2.3689186573028564,4952 "spec/controllers/concerns/group_tree_spec.rb": 2.6200151443481445,4953 "spec/mailers/emails/auto_devops_spec.rb": 2.4344027042388916,4954 "spec/controllers/projects/releases_controller_spec.rb": 1.098036766052246,4955 "spec/controllers/projects/error_tracking_controller_spec.rb": 1.6162223815917969,4956 "spec/controllers/projects/runners_controller_spec.rb": 1.4440491199493408,4957 "spec/requests/api/graphql/mutations/notes/destroy_spec.rb": 1.8441553115844727,4958 "spec/controllers/projects/find_file_controller_spec.rb": 1.7742295265197754,4959 "spec/controllers/projects/cycle_analytics/events_controller_spec.rb": 1.9530985355377197,4960 "spec/controllers/concerns/project_unauthorized_spec.rb": 1.4248065948486328,4961 "spec/controllers/health_controller_spec.rb": 1.2664101123809814,4962 "spec/controllers/admin/groups_controller_spec.rb": 1.4264981746673584,4963 "spec/controllers/dashboard/labels_controller_spec.rb": 1.3670413494110107,4964 "spec/controllers/admin/impersonations_controller_spec.rb": 0.9996557235717773,4965 "spec/requests/api/graphql/project/project_statistics_spec.rb": 1.2682263851165771,4966 "spec/controllers/users/terms_controller_spec.rb": 1.1001214981079102,4967 "spec/controllers/projects/autocomplete_sources_controller_spec.rb": 0.6128182411193848,4968 "spec/controllers/oauth/authorizations_controller_spec.rb": 0.8484964370727539,4969 "spec/controllers/abuse_reports_controller_spec.rb": 0.7296087741851807,4970 "spec/controllers/groups/labels_controller_spec.rb": 0.7054221630096436,4971 "spec/controllers/import/gitlab_projects_controller_spec.rb": 0.8509635925292969,4972 "spec/controllers/root_controller_spec.rb": 0.7747366428375244,4973 "spec/requests/api/import_github_spec.rb": 0.44611525535583496,4974 "spec/controllers/admin/spam_logs_controller_spec.rb": 0.525475025177002,4975 "spec/requests/projects/uploads_spec.rb": 0.47116780281066895,4976 "spec/requests/oauth_tokens_spec.rb": 0.4228091239929199,4977 "spec/controllers/projects/grafana_api_controller_spec.rb": 0.3449280261993408,4978 "spec/requests/api/oauth_tokens_spec.rb": 0.30350470542907715,4979 "spec/controllers/concerns/sorting_preference_spec.rb": 0.23187756538391113,4980 "spec/controllers/concerns/issuable_collections_spec.rb": 0.15381336212158203,4981 "spec/requests/api/graphql/metadata_query_spec.rb": 0.1453545093536377,4982 "spec/controllers/chaos_controller_spec.rb": 0.0945134162902832,4983 "spec/requests/api/lint_spec.rb": 0.2172996997833252,4984 "spec/controllers/admin/requests_profiles_controller_spec.rb": 0.063121080398559574985}4986Knapsack global time execution for tests: 12m 26s4987Finished in 13 minutes 13 seconds (files took 42.85 seconds to load)49881842 examples, 0 failures4989Tue Oct 15 08:54:29 UTC 20194991$ date4992Tue Oct 15 08:54:30 UTC 20194995coverage/: found 5 matching files 4996knapsack/: found 6 matching files 4997rspec_flaky/: found 4 matching files 4998rspec_profiling/: found 1 matching files 4999WARNING: tmp/capybara/: no matching files 5000tmp/memory_test/: found 2 matching files 5001Uploading artifacts to coordinator... ok id=321109360 responseStatus=201 Created token=fDcsu9Ya5002Uploading artifacts...5003junit_rspec.xml: found 1 matching files 5004Uploading artifacts to coordinator... ok id=321109360 responseStatus=201 Created token=fDcsu9Ya5005Job succeeded