Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/fixtures')
-rw-r--r--spec/fixtures/api/schemas/public_api/v4/integration.json3
-rw-r--r--spec/fixtures/api/schemas/remote_mirror.json61
-rw-r--r--spec/fixtures/config/mail_room_enabled_ms_graph.yml4
-rw-r--r--spec/fixtures/lib/gitlab/import_export/complex/project.json76
-rw-r--r--spec/fixtures/markdown/markdown_golden_master_examples.yml909
-rw-r--r--spec/fixtures/tasks/gitlab/security/expected_banned_keys.yml12
-rw-r--r--spec/fixtures/tasks/gitlab/security/ssh-badkeys/LICENSE22
-rw-r--r--spec/fixtures/tasks/gitlab/security/ssh-badkeys/README.md12
-rw-r--r--spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/array-networks-vapv-vxag.pub1
-rw-r--r--spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/barracuda_load_balancer_vm.pub1
-rw-r--r--spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/ceragon-fibeair-cve-2015-0936.pub1
-rw-r--r--spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/exagrid-cve-2016-1561.pub1
-rw-r--r--spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/f5-bigip-cve-2012-1493.pub1
-rw-r--r--spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/loadbalancer.org-enterprise-va.pub1
-rw-r--r--spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/monroe-dasdec-cve-2013-0137.pub1
-rw-r--r--spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/quantum-dxi-v1000.pub1
-rw-r--r--spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/vagrant-default.pub1
-rw-r--r--spec/fixtures/valid.po6
18 files changed, 151 insertions, 963 deletions
diff --git a/spec/fixtures/api/schemas/public_api/v4/integration.json b/spec/fixtures/api/schemas/public_api/v4/integration.json
index d1538db7de4..18e61636fa2 100644
--- a/spec/fixtures/api/schemas/public_api/v4/integration.json
+++ b/spec/fixtures/api/schemas/public_api/v4/integration.json
@@ -30,6 +30,9 @@
"issues_events": {
"type": "boolean"
},
+ "incident_events": {
+ "type": "boolean"
+ },
"confidential_issues_events": {
"type": "boolean"
},
diff --git a/spec/fixtures/api/schemas/remote_mirror.json b/spec/fixtures/api/schemas/remote_mirror.json
index 87bde189db5..a4e886a8c7c 100644
--- a/spec/fixtures/api/schemas/remote_mirror.json
+++ b/spec/fixtures/api/schemas/remote_mirror.json
@@ -12,16 +12,57 @@
"only_protected_branches"
],
"properties": {
- "id": { "type": "integer" },
- "enabled": { "type": "boolean" },
- "url": { "type": "string" },
- "update_status": { "type": "string" },
- "last_update_at": { "type": ["string", "null"] },
- "last_update_started_at": { "type": ["string", "null"] },
- "last_successful_update_at": { "type": ["string", "null"] },
- "last_error": { "type": ["string", "null"] },
- "only_protected_branches": { "type": "boolean" },
- "keep_divergent_refs": { "type": ["boolean", "null"] }
+ "id": {
+ "type": "integer"
+ },
+ "enabled": {
+ "type": "boolean"
+ },
+ "url": {
+ "type": "string"
+ },
+ "update_status": {
+ "type": "string"
+ },
+ "last_update_at": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "last_update_started_at": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "last_successful_update_at": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "last_error": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "only_protected_branches": {
+ "type": "boolean"
+ },
+ "mirror_branch_regex": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "keep_divergent_refs": {
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
},
"additionalProperties": false
}
diff --git a/spec/fixtures/config/mail_room_enabled_ms_graph.yml b/spec/fixtures/config/mail_room_enabled_ms_graph.yml
index 791760e1dfd..71fc7e73e35 100644
--- a/spec/fixtures/config/mail_room_enabled_ms_graph.yml
+++ b/spec/fixtures/config/mail_room_enabled_ms_graph.yml
@@ -4,7 +4,7 @@ test:
address: "gitlab-incoming+%{key}@gmail.com"
user: "gitlab-incoming@gmail.com"
mailbox: "inbox"
- expunge_deleted: true
+ delete_after_delivery: false
inbox_method: "microsoft_graph"
inbox_options:
tenant_id: "12345"
@@ -17,7 +17,7 @@ test:
address: "gitlab-incoming+%{key}@gmail.com"
user: "gitlab-incoming@gmail.com"
mailbox: "inbox"
- expunge_deleted: true
+ delete_after_delivery: false
inbox_method: "microsoft_graph"
inbox_options:
tenant_id: "12345"
diff --git a/spec/fixtures/lib/gitlab/import_export/complex/project.json b/spec/fixtures/lib/gitlab/import_export/complex/project.json
index 8e7cb487444..88439965cf3 100644
--- a/spec/fixtures/lib/gitlab/import_export/complex/project.json
+++ b/spec/fixtures/lib/gitlab/import_export/complex/project.json
@@ -5,6 +5,8 @@
"visibility_level": 10,
"archived": false,
"ci_config_path": "config/path",
+ "allow_merge_on_skipped_pipeline": true,
+ "squash_option": 3,
"labels": [
{
"id": 2,
@@ -370,13 +372,13 @@
],
"resource_label_events": [
{
- "id":244,
- "action":"remove",
- "issue_id":40,
- "merge_request_id":null,
- "label_id":2,
- "user_id":1,
- "created_at":"2018-08-28T08:24:00.494Z",
+ "id": 244,
+ "action": "remove",
+ "issue_id": 40,
+ "merge_request_id": null,
+ "label_id": 2,
+ "user_id": 1,
+ "created_at": "2018-08-28T08:24:00.494Z",
"label": {
"id": 2,
"title": "test2",
@@ -2350,7 +2352,7 @@
"name": "thumbsup",
"user_id": 1,
"awardable_type": "Snippet",
- "awardable_id": 1,
+ "awardable_id": 1,
"created_at": "2019-11-05T15:37:21.287Z",
"updated_at": "2019-11-05T15:37:21.287Z"
},
@@ -2359,7 +2361,7 @@
"name": "coffee",
"user_id": 1,
"awardable_type": "Snippet",
- "awardable_id": 1,
+ "awardable_id": 1,
"created_at": "2019-11-05T15:37:24.645Z",
"updated_at": "2019-11-05T15:37:24.645Z"
}
@@ -2446,7 +2448,7 @@
"links": [
{
"id": 1,
- "release_id" : 1,
+ "release_id": 1,
"url": "http://localhost/namespace6/project6/-/jobs/140463678/artifacts/download",
"name": "release-1.1.dmg",
"created_at": "2019-12-26T10:17:14.621Z",
@@ -2906,13 +2908,13 @@
],
"resource_label_events": [
{
- "id":243,
- "action":"add",
- "issue_id":null,
- "merge_request_id":27,
- "label_id":null,
- "user_id":1,
- "created_at":"2018-08-28T08:24:00.494Z"
+ "id": 243,
+ "action": "add",
+ "issue_id": null,
+ "merge_request_id": 27,
+ "label_id": null,
+ "user_id": 1,
+ "created_at": "2018-08-28T08:24:00.494Z"
}
],
"merge_request_diff": {
@@ -7472,8 +7474,7 @@
"started_at": null,
"finished_at": null,
"duration": null,
- "stages": [
- ]
+ "stages": []
},
{
"id": 20,
@@ -7491,11 +7492,9 @@
"started_at": null,
"finished_at": null,
"duration": null,
- "stages": [
- ],
+ "stages": [],
"source": "external_pull_request_event",
- "external_pull_request":
- {
+ "external_pull_request": {
"id": 3,
"pull_request_iid": 4,
"source_branch": "feature",
@@ -7505,8 +7504,8 @@
"source_sha": "ce84140e8b878ce6e7c4d298c7202ff38170e3ac",
"target_sha": "a09386439ca39abe575675ffd4b89ae824fec22f",
"status": "open",
- "created_at": "2016-03-22T15:20:35.763Z",
- "updated_at": "2016-03-22T15:20:35.763Z"
+ "created_at": "2016-03-22T15:20:35.763Z",
+ "updated_at": "2016-03-22T15:20:35.763Z"
}
}
],
@@ -7563,7 +7562,7 @@
"updated_at": "2016-08-30T07:32:52.490Z"
}
],
- "allow_force_push":false
+ "allow_force_push": false
}
],
"protected_environments": [
@@ -7670,17 +7669,17 @@
},
"external_pull_requests": [
{
- "id": 3,
- "pull_request_iid": 4,
- "source_branch": "feature",
- "target_branch": "master",
- "source_repository": "the-repository",
- "target_repository": "the-repository",
- "source_sha": "ce84140e8b878ce6e7c4d298c7202ff38170e3ac",
- "target_sha": "a09386439ca39abe575675ffd4b89ae824fec22f",
- "status": "open",
- "created_at": "2019-12-24T14:04:50.053Z",
- "updated_at": "2019-12-24T14:05:18.138Z"
+ "id": 3,
+ "pull_request_iid": 4,
+ "source_branch": "feature",
+ "target_branch": "master",
+ "source_repository": "the-repository",
+ "target_repository": "the-repository",
+ "source_sha": "ce84140e8b878ce6e7c4d298c7202ff38170e3ac",
+ "target_sha": "a09386439ca39abe575675ffd4b89ae824fec22f",
+ "status": "open",
+ "created_at": "2019-12-24T14:04:50.053Z",
+ "updated_at": "2019-12-24T14:05:18.138Z"
}
],
"boards": [
@@ -7848,5 +7847,4 @@
"commit_committer_check": true,
"regexp_uses_re2": true
}
-
-}
+} \ No newline at end of file
diff --git a/spec/fixtures/markdown/markdown_golden_master_examples.yml b/spec/fixtures/markdown/markdown_golden_master_examples.yml
deleted file mode 100644
index 9e7de030a29..00000000000
--- a/spec/fixtures/markdown/markdown_golden_master_examples.yml
+++ /dev/null
@@ -1,909 +0,0 @@
-# Related Specs:
-#
-# This data file drives the specs in the following specs:
-#
-# CE Backend: spec/requests/api/markdown_golden_master_spec.rb
-# CE Frontend: spec/frontend/content_editor/markdown_processing_spec.js
-#
-# For EE, these files are used:
-# EE Data: ee/spec/fixtures/markdown/markdown_golden_master_examples.yml
-# EE Backend: ee/spec/requests/api/markdown_golden_master_spec.rb
-# EE Frontend: ee/spec/frontend/content_editor/ee_markdown_processing_spec.js
-#
-#
-# Requirements:
-#
-# 1. Frontend: We should have test coverage that the Content Editor can properly serialize HTML
-# to Markdown for all GFM source elements which it currently supports.
-# 2. Frontend: We should have test coverage that the Content Editor can properly render the expected
-# HTML for all GFM source elements which it currently supports (not currently implemented in the
-# frontend - this will likely be a standalone module outside of the Content Editor).
-# 3. Backend: We should ensure that for all GFM elements, the backend always renders the expected
-# HTML, for **all** supported GFM source elements.
-#
-# If any of this this ever changes unexpectedly, tests will start failing, and force the same change
-# to be made on the backend and frontend.
-#
-#
-# Overview:
-#
-# These specs ensure that the bidirectional Markdown <-> HTML conversion logic is implemented
-# identically on the backend and frontend, for all supported GitLab-Flavored Markdown examples, by
-# running hardcoded examples through the logic and ensuring the results match.
-#
-# This is an example of the "Golden Master Testing" approach, which is also referred to as
-# "Approval Testing" or "Characterization Testing".
-#
-# The term "Golden Master" originally comes from the recording industry, and refers to process
-# of "mastering", or making a final mix from which all other copies will be produced.
-#
-# See:
-# - https://en.wikipedia.org/wiki/Characterization_test
-# - https://en.wikipedia.org/wiki/Gold_master_(disambiguation)
-#
-#
-# What we are doing is actually a type Golden Master testing with modifications:
-#
-# 1. The original markdown examples used to drive the tests are taken from this YAML, and can be
-# considered a form of "fixture" in this case.
-# 2. The HTML in the YAML is the "Golden Master", but we are going to use it to assert
-# against **TWO** different implementations of markdown rendering:
-# 1. The frontend, implemented as Jest specs.
-# 1. This will assert both HTML -> markdown serialization (what it currently does), as well as...
-# 2. Markdown -> HTML rendering (not currently implemented in the frontend - this will likely
-# be a standalone module outside of the Content Editor)
-# 1. The backend, implemented as requests specs
-# 1. This will assert markdown -> HTML conversion by the backend.
-#
-# Also see the MR for more explanation on the details of this approach:
-# https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68671
-#
-#
-# Usage:
-#
-# * Please keep this file alphabetized.
-# * To run focused example(s), set the `FOCUSED_MARKDOWN_EXAMPLES` environment variable to a
-# comma-separated list of example names. This works for the frontend and backend specs.
-# * Required attributes for every example:
-# 1. `name`: Specifies the Name of the example, which will be printed when specs are run.
-# 2. `markdown`: Specifies the Markdown for the example, which will be compared with the
-# Markdown the code generates from the corresponding specified HTML.
-# 3. `html`: Specifies the HTML for the example, which will be compared with the
-# HTML the code generated from the corresponding specified Markdown.
-# * `api_context` (optional): This is used when a single markdown can be
-# rendered differently depending on the API endpoint or area of the app from which it is called or
-# used. The valid values for `api_context` are: `project`, `group`, `project_wiki`,
-# and (for EE only) `group_wiki`.The `name` attribute must also have a `_for_[API_CONTEXT]` suffix
-# which matches the `api_context`, in order to ensure that each example has a unique `name`
-# identifier. For example, `attachment_image_for_project`.
-# * `pending`: To skip an example that is broken or not yet fully implemented, add
-# a `pending: <reason with issue/MR URL>` attribute to the example. See
-# the `a_example_of_pending` entry for an example.
-# * `pending` with key: You can also mark an example pending on only the frontend or backend. See
-# the `a_example_of_pending_with_keys` entry for an example.
-# * `substitutions`: For examples which may have variable content in different environments,
-# such as portions of the URI, or database record IDs, you can specify
-# `substitutions`, which is an array of regex/replacement pairs. The HTML
-# value will be normalized with each of these pairs using Ruby `gsub`
-# before comparing.
-# The substitution values can (and are) also reused in multiple examples
-# via YAML anchors.
-#
-#
-# Notes:
-#
-# * The html values should exactly match what the backend markdown API endpoints return for the
-# given markdown example. The HTML is intentionally not indented, formatted, or split across lines.
-# This is a bit less readable, but it makes the spec logic simpler and less error prone for edge
-# cases.
-#
-#
-# Debugging Failures and Writing New Entries:
-#
-# * You need to compare what is different between the expected and actual values.
-# * In rspec, the diff printed out includes the full text of the HTML. This may be long, so you
-# may want to turn line wrapping on or off or copy the diff to separate file(s) for easier comparison.
-# * If the difference is just in an attribute value, use the `substitutions` support to normalize
-# the HTML before comparing. These specs are only validating the HTML structure, the individual
-# markdown elements' unit tests can provide coverage that the exact attribute values are correct.
-# * If you are making a new entry, you can create the entry according to the `Usage` section above,
-# but leave the `html` value blank. This will cause the spec to fail, and you can fill in the
-# `html` value based on the spec failure that is printed out.
-
----
-#- name: an_example_of_pending
-# pending: 'This is an example of the pending attribute: http://example.com'
-# markdown: ;)
-# html: |-
-# <blink data-sourcepos="1:1-1:2"/></blink>
-#
-
-#- name: an_example_of_pending_with_keys
-# pending:
-# frontend: 'This is an example of the frontend-only pending attribute: http://example.com'
-# backend: 'This is an example of the backend-only pending attribute: http://example.com'
-# markdown: ;)
-# html: |-
-# <blink data-sourcepos="1:1-1:2"/></blink>
-
-- name: attachment_image_for_group
- api_context: group
- substitutions:
- # Note: having the top level `substitutions` data structure be a hash of arrays
- # allows us to compose multiple substitutions via YAML anchors (YAML anchors
- # pointing to arrays can't be combined)
- uri_substitution: &uri_substitution
- # NOTE: We don't care about verifying specific attribute values here, that should be the
- # responsibility of unit tests. These tests are about the structure of the HTML.
- - regex: '(href|data-src)(=")(.*?)(test-file\.(png|zip)")'
- replacement: '\1\2URI_PREFIX\4'
- markdown: |-
- ![test-file](/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.png)
- html: |-
- <p data-sourcepos="1:1-1:69" dir="auto"><a class="no-attachment-icon gfm" href="/groups/group58/-/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.png" target="_blank" rel="noopener noreferrer" data-canonical-src="/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.png" data-link="true"><img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="test-file" decoding="async" class="lazy gfm" data-src="/groups/group58/-/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.png" data-canonical-src="/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.png"></a></p>
-
-- name: attachment_image_for_project
- api_context: project
- substitutions:
- uri_substitution: *uri_substitution
- markdown: |-
- ![test-file](/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.png)
- html: |-
- <p data-sourcepos="1:1-1:69" dir="auto"><a class="no-attachment-icon gfm" href="/group58/project22/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.png" target="_blank" rel="noopener noreferrer" data-canonical-src="/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.png" data-link="true"><img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="test-file" decoding="async" class="lazy gfm" data-src="/group58/project22/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.png" data-canonical-src="/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.png"></a></p>
-
-- name: attachment_image_for_project_wiki
- api_context: project_wiki
- substitutions:
- uri_substitution: *uri_substitution
- markdown: |-
- ![test-file](test-file.png)
- html: |-
- <p data-sourcepos="1:1-1:27" dir="auto"><a class="no-attachment-icon" href="/group1/project1/-/wikis/test-file.png" target="_blank" rel="noopener noreferrer" data-canonical-src="test-file.png"><img alt="test-file" decoding="async" class="lazy" data-src="/group1/project1/-/wikis/test-file.png" data-canonical-src="test-file.png"></a></p>
-
-- name: attachment_link_for_group
- api_context: group
- substitutions:
- uri_substitution: *uri_substitution
- markdown: |-
- [test-file](/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.zip)
- html: |-
- <p data-sourcepos="1:1-1:68" dir="auto"><a href="/groups/group58/-/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.zip" data-canonical-src="/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.zip" data-link="true" class="gfm">test-file</a></p>
-
-- name: attachment_link_for_project
- api_context: project
- substitutions:
- uri_substitution: *uri_substitution
- markdown: |-
- [test-file](/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.zip)
- html: |-
- <p data-sourcepos="1:1-1:68" dir="auto"><a href="/group58/project22/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.zip" data-canonical-src="/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.zip" data-link="true" class="gfm">test-file</a></p>
-
-- name: attachment_link_for_project_wiki
- api_context: project_wiki
- substitutions:
- uri_substitution: *uri_substitution
- # TODO: The current frontend example doesn't include the path, need to look into why it does after refactoring to the new golden master approach
- pending:
- frontend: 'The current frontend example doesnt include the path, need to look into why it does after refactoring to the new golden master approach'
- markdown: |-
- [test-file](test-file.zip)
- html: |-
- <p data-sourcepos="1:1-1:26" dir="auto"><a href="/group1/project1/-/wikis/test-file.zip" data-canonical-src="test-file.zip">test-file</a></p>
-
-- name: audio
- markdown: |-
- ![Sample Audio](https://gitlab.com/gitlab.mp3)
- html: |-
- <p data-sourcepos="1:1-1:46" dir="auto"><span class="media-container audio-container"><audio src="https://gitlab.com/gitlab.mp3" controls="true" data-setup="{}" data-title="Sample Audio"></audio><a href="https://gitlab.com/gitlab.mp3" target="_blank" rel="nofollow noreferrer noopener" title="Download 'Sample Audio'">Sample Audio</a></span></p>
-
-- name: audio_and_video_in_lists
- markdown: |-
- * ![Sample Audio](https://gitlab.com/1.mp3)
- * ![Sample Video](https://gitlab.com/2.mp4)
-
- 1. ![Sample Video](https://gitlab.com/1.mp4)
- 2. ![Sample Audio](https://gitlab.com/2.mp3)
-
- * [x] ![Sample Audio](https://gitlab.com/1.mp3)
- * [x] ![Sample Audio](https://gitlab.com/2.mp3)
- * [x] ![Sample Video](https://gitlab.com/3.mp4)
- html: |-
- <ul data-sourcepos="1:1-3:0" dir="auto">
- <li data-sourcepos="1:1-1:43"><span class="media-container audio-container"><audio src="https://gitlab.com/1.mp3" controls="true" data-setup="{}" data-title="Sample Audio"></audio><a href="https://gitlab.com/1.mp3" target="_blank" rel="nofollow noreferrer noopener" title="Download 'Sample Audio'">Sample Audio</a></span></li>
- <li data-sourcepos="2:1-3:0"><span class="media-container video-container"><video src="https://gitlab.com/2.mp4" controls="true" data-setup="{}" data-title="Sample Video" width="400" preload="metadata"></video><a href="https://gitlab.com/2.mp4" target="_blank" rel="nofollow noreferrer noopener" title="Download 'Sample Video'">Sample Video</a></span></li>
- </ul>
- <ol data-sourcepos="4:1-6:0" dir="auto">
- <li data-sourcepos="4:1-4:44"><span class="media-container video-container"><video src="https://gitlab.com/1.mp4" controls="true" data-setup="{}" data-title="Sample Video" width="400" preload="metadata"></video><a href="https://gitlab.com/1.mp4" target="_blank" rel="nofollow noreferrer noopener" title="Download 'Sample Video'">Sample Video</a></span></li>
- <li data-sourcepos="5:1-6:0"><span class="media-container audio-container"><audio src="https://gitlab.com/2.mp3" controls="true" data-setup="{}" data-title="Sample Audio"></audio><a href="https://gitlab.com/2.mp3" target="_blank" rel="nofollow noreferrer noopener" title="Download 'Sample Audio'">Sample Audio</a></span></li>
- </ol>
- <ul data-sourcepos="7:1-9:47" class="task-list" dir="auto">
- <li data-sourcepos="7:1-7:47" class="task-list-item">
- <task-button></task-button><input type="checkbox" class="task-list-item-checkbox" checked disabled> <span class="media-container audio-container"><audio src="https://gitlab.com/1.mp3" controls="true" data-setup="{}" data-title="Sample Audio"></audio><a href="https://gitlab.com/1.mp3" target="_blank" rel="nofollow noreferrer noopener" title="Download 'Sample Audio'">Sample Audio</a></span>
- </li>
- <li data-sourcepos="8:1-8:47" class="task-list-item">
- <task-button></task-button><input type="checkbox" class="task-list-item-checkbox" checked disabled> <span class="media-container audio-container"><audio src="https://gitlab.com/2.mp3" controls="true" data-setup="{}" data-title="Sample Audio"></audio><a href="https://gitlab.com/2.mp3" target="_blank" rel="nofollow noreferrer noopener" title="Download 'Sample Audio'">Sample Audio</a></span>
- </li>
- <li data-sourcepos="9:1-9:47" class="task-list-item">
- <task-button></task-button><input type="checkbox" class="task-list-item-checkbox" checked disabled> <span class="media-container video-container"><video src="https://gitlab.com/3.mp4" controls="true" data-setup="{}" data-title="Sample Video" width="400" preload="metadata"></video><a href="https://gitlab.com/3.mp4" target="_blank" rel="nofollow noreferrer noopener" title="Download 'Sample Video'">Sample Video</a></span>
- </li>
- </ul>
-
-- name: blockquote
- markdown: |-
- > This is a blockquote
- >
- > This is another one
- html: |-
- <blockquote data-sourcepos="1:1-3:21" dir="auto">
- <p data-sourcepos="1:3-1:22">This is a blockquote</p>
- <p data-sourcepos="3:3-3:21">This is another one</p>
- </blockquote>
-
-- name: bold
- markdown: |-
- **bold**
- html: |-
- <p data-sourcepos="1:1-1:8" dir="auto"><strong>bold</strong></p>
-
-- name: bullet_list_style_1
- markdown: |-
- * list item 1
- * list item 2
- * embedded list item 3
- html: |-
- <ul data-sourcepos="1:1-3:24" dir="auto">
- <li data-sourcepos="1:1-1:13">list item 1</li>
- <li data-sourcepos="2:1-3:24">list item 2
- <ul data-sourcepos="3:3-3:24">
- <li data-sourcepos="3:3-3:24">embedded list item 3</li>
- </ul>
- </li>
- </ul>
-
-- name: bullet_list_style_2
- markdown: |-
- - list item 1
- - list item 2
- * embedded list item 3
- html: |-
- <ul data-sourcepos="1:1-3:24" dir="auto">
- <li data-sourcepos="1:1-1:13">list item 1</li>
- <li data-sourcepos="2:1-3:24">list item 2
- <ul data-sourcepos="3:3-3:24">
- <li data-sourcepos="3:3-3:24">embedded list item 3</li>
- </ul>
- </li>
- </ul>
-
-- name: bullet_list_style_3
- markdown: |-
- + list item 1
- + list item 2
- - embedded list item 3
- html: |-
- <ul data-sourcepos="1:1-3:24" dir="auto">
- <li data-sourcepos="1:1-1:13">list item 1</li>
- <li data-sourcepos="2:1-3:24">list item 2
- <ul data-sourcepos="3:3-3:24">
- <li data-sourcepos="3:3-3:24">embedded list item 3</li>
- </ul>
- </li>
- </ul>
-
-- name: code_block_javascript
- markdown: |-
- ```javascript
- console.log('hello world')
- ```
- html: |-
- <div class="gl-relative markdown-code-block js-markdown-code">
- <pre data-sourcepos="1:1-3:3" lang="javascript" class="code highlight js-syntax-highlight language-javascript" v-pre="true"><code><span id="LC1" class="line" lang="javascript"> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">hello world</span><span class="dl">'</span><span class="p">)</span></span></code></pre>
- <copy-code></copy-code>
- </div>
-
-- name: code_block_plaintext
- markdown: |-
- ```
- plaintext
- ```
- html: |-
- <div class="gl-relative markdown-code-block js-markdown-code">
- <pre data-sourcepos="1:1-3:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> plaintext</span></code></pre>
- <copy-code></copy-code>
- </div>
-
-- name: code_block_unknown
- markdown: |-
- ```foobar
- custom_language = >> this <<
- ```
- html: |-
- <div class="gl-relative markdown-code-block js-markdown-code">
- <pre data-sourcepos="1:1-3:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="foobar" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> custom_language = &gt;&gt; this &lt;&lt;</span></code></pre>
- <copy-code></copy-code>
- </div>
-
-- name: color_chips
- markdown: |-
- - `#F00`
- - `#F00A`
- - `#FF0000`
- - `#FF0000AA`
- - `RGB(0,255,0)`
- - `RGB(0%,100%,0%)`
- - `RGBA(0,255,0,0.3)`
- - `HSL(540,70%,50%)`
- - `HSLA(540,70%,50%,0.3)`
- html: |-
- <ul data-sourcepos="1:1-9:25" dir="auto">
- <li data-sourcepos="1:1-1:8"><code>#F00<span class="gfm-color_chip"><span style="background-color: #F00;"></span></span></code></li>
- <li data-sourcepos="2:1-2:9"><code>#F00A<span class="gfm-color_chip"><span style="background-color: #F00A;"></span></span></code></li>
- <li data-sourcepos="3:1-3:11"><code>#FF0000<span class="gfm-color_chip"><span style="background-color: #FF0000;"></span></span></code></li>
- <li data-sourcepos="4:1-4:13"><code>#FF0000AA<span class="gfm-color_chip"><span style="background-color: #FF0000AA;"></span></span></code></li>
- <li data-sourcepos="5:1-5:16"><code>RGB(0,255,0)<span class="gfm-color_chip"><span style="background-color: RGB(0,255,0);"></span></span></code></li>
- <li data-sourcepos="6:1-6:19"><code>RGB(0%,100%,0%)<span class="gfm-color_chip"><span style="background-color: RGB(0%,100%,0%);"></span></span></code></li>
- <li data-sourcepos="7:1-7:21"><code>RGBA(0,255,0,0.3)<span class="gfm-color_chip"><span style="background-color: RGBA(0,255,0,0.3);"></span></span></code></li>
- <li data-sourcepos="8:1-8:20"><code>HSL(540,70%,50%)<span class="gfm-color_chip"><span style="background-color: HSL(540,70%,50%);"></span></span></code></li>
- <li data-sourcepos="9:1-9:25"><code>HSLA(540,70%,50%,0.3)<span class="gfm-color_chip"><span style="background-color: HSLA(540,70%,50%,0.3);"></span></span></code></li>
- </ul>
-
-- name: comment
- markdown: |-
- <!-- this is a
- multiline markdown
- comment -->
- html: |-
- <!-- this is a
- multiline markdown
- comment -->
-
-- name: description_list
- markdown: |-
- <dl>
- <dt>Frog</dt>
- <dd>Wet green thing</dd>
- <dt>Rabbit</dt>
- <dd>Warm fluffy thing</dd>
- <dt>Punt</dt>
- <dd>Kick a ball</dd>
- <dd>Take a bet</dd>
- <dt>Color</dt>
- <dt>Colour</dt>
- <dd>
-
- Any hue except _white_ or **black**
-
- </dd>
- </dl>
- html: |-
- <dl>
- <dt>Frog</dt>
- <dd>Wet green thing</dd>
- <dt>Rabbit</dt>
- <dd>Warm fluffy thing</dd>
- <dt>Punt</dt>
- <dd>Kick a ball</dd>
- <dd>Take a bet</dd>
- <dt>Color</dt>
- <dt>Colour</dt>
- <dd>
- <p data-sourcepos="13:1-13:35">Any hue except <em>white</em> or <strong>black</strong></p>
- </dd>
- </dl>
-
-- name: details
- markdown: |-
- <details>
- <summary>This is the visible summary of the collapsible section</summary>
-
- 1. collapsed markdown
- 2. more collapsed markdown
-
- </details>
- html: |-
- <details>
- <summary>This is the visible summary of the collapsible section</summary>
- <ol data-sourcepos="4:1-6:0">
- <li data-sourcepos="4:1-4:21">collapsed markdown</li>
- <li data-sourcepos="5:1-6:0">more collapsed markdown</li>
- </ol>
- </details>
-
-- name: diagram_kroki_nomnoml
- markdown: |-
- ```nomnoml
- #stroke: #a86128
- [<frame>Decorator pattern|
- [<abstract>Component||+ operation()]
- [Client] depends --> [Component]
- [Decorator|- next: Component]
- [Decorator] decorates -- [ConcreteComponent]
- [Component] <:- [Decorator]
- [Component] <:- [ConcreteComponent]
- ]
- ```
- html: |-
- <a class="no-attachment-icon" href="http://localhost:8000/nomnoml/svg/eNp1jbsOwjAMRfd-haUuIJQBBlRFVZb2L1CGkBqpgtpR6oEhH0_CW6hsts-9xwD1LJHPqKF2zX67ayqAQ3uKbkLTo-fohCMEJ4KRUoYFu2MuOS-m4ykwIUlKG-CAOT0yrdb2EewuY2YWBgxIwwxKmXx8dZ6h95ekgPAqGv4miuk-YnEVFfmIgr-Fzw6tVt-CZb7osdUNUAReJA==" target="_blank" rel="noopener noreferrer" data-diagram="nomnoml" data-diagram-src="data:text/plain;base64,ICAjc3Ryb2tlOiAjYTg2MTI4CiAgWzxmcmFtZT5EZWNvcmF0b3IgcGF0dGVybnwKICAgIFs8YWJzdHJhY3Q+Q29tcG9uZW50fHwrIG9wZXJhdGlvbigpXQogICAgW0NsaWVudF0gZGVwZW5kcyAtLT4gW0NvbXBvbmVudF0KICAgIFtEZWNvcmF0b3J8LSBuZXh0OiBDb21wb25lbnRdCiAgICBbRGVjb3JhdG9yXSBkZWNvcmF0ZXMgLS0gW0NvbmNyZXRlQ29tcG9uZW50XQogICAgW0NvbXBvbmVudF0gPDotIFtEZWNvcmF0b3JdCiAgICBbQ29tcG9uZW50XSA8Oi0gW0NvbmNyZXRlQ29tcG9uZW50XQogIF0K"><img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="js-render-kroki lazy" decoding="async" data-src="http://localhost:8000/nomnoml/svg/eNp1jbsOwjAMRfd-haUuIJQBBlRFVZb2L1CGkBqpgtpR6oEhH0_CW6hsts-9xwD1LJHPqKF2zX67ayqAQ3uKbkLTo-fohCMEJ4KRUoYFu2MuOS-m4ykwIUlKG-CAOT0yrdb2EewuY2YWBgxIwwxKmXx8dZ6h95ekgPAqGv4miuk-YnEVFfmIgr-Fzw6tVt-CZb7osdUNUAReJA=="></a>
-
-- name: diagram_plantuml
- markdown: |-
- ```plantuml
- Alice -> Bob: Authentication Request
- Bob --> Alice: Authentication Response
-
- Alice -> Bob: Another authentication Request
- Alice <-- Bob: Another authentication Response
- ```
- html: |-
- <a class="no-attachment-icon" href="http://localhost:8080/png/U9nJK73CoKnELT2rKt3AJx9IS2mjoKZDAybCJYp9pCzJ24ejB4qjBk5I0Cagw09LWPLZKLTSa9zNdCe5L8bcO5u-K6MHGY8kWo7ARNHr2QY7MW00AeWxTG00" target="_blank" rel="noopener noreferrer" data-diagram="plantuml" data-diagram-src="data:text/plain;base64,ICBBbGljZSAtPiBCb2I6IEF1dGhlbnRpY2F0aW9uIFJlcXVlc3QKICBCb2IgLS0+IEFsaWNlOiBBdXRoZW50aWNhdGlvbiBSZXNwb25zZQoKICBBbGljZSAtPiBCb2I6IEFub3RoZXIgYXV0aGVudGljYXRpb24gUmVxdWVzdAogIEFsaWNlIDwtLSBCb2I6IEFub3RoZXIgYXV0aGVudGljYXRpb24gUmVzcG9uc2UK"><img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" decoding="async" class="lazy" data-src="http://localhost:8080/png/U9nJK73CoKnELT2rKt3AJx9IS2mjoKZDAybCJYp9pCzJ24ejB4qjBk5I0Cagw09LWPLZKLTSa9zNdCe5L8bcO5u-K6MHGY8kWo7ARNHr2QY7MW00AeWxTG00"></a>
-
-- name: diagram_plantuml_unicode
- markdown: |-
- ```plantuml
- A -> B : Text with norwegian characters: æøå
- ```
- html: |-
- <a class="no-attachment-icon" href="http://localhost:8080/png/U9npLD2rKt1Ii588IQqeKIZFBCbGoCilAazDpqpCKqZEI2nAJ2v9BIgsKZYyxF2Emqkv07hO4WG0" target="_blank" rel="noopener noreferrer" data-diagram="plantuml" data-diagram-src="data:text/plain;base64,QSAtPiBCIDogVGV4dCB3aXRoIG5vcndlZ2lhbiBjaGFyYWN0ZXJzOiDDpsO4w6UK"><img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" decoding="async" class="lazy" data-src="http://localhost:8080/png/U9npLD2rKt1Ii588IQqeKIZFBCbGoCilAazDpqpCKqZEI2nAJ2v9BIgsKZYyxF2Emqkv07hO4WG0"></a>
-
-- name: div
- markdown: |-
- <div>plain text</div>
- <div>
-
- just a plain ol' div, not much to _expect_!
-
- </div>
- html: |-
- <div>plain text</div>
- <div>
- <p data-sourcepos="4:1-4:43">just a plain ol' div, not much to <em>expect</em>!</p>
- </div>
-
-- name: emoji
- markdown: |-
- :sparkles: :heart: :100:
- html: |-
- <p data-sourcepos="1:1-1:24" dir="auto"><gl-emoji title="sparkles" data-name="sparkles" data-unicode-version="6.0">✨</gl-emoji> <gl-emoji title="heavy black heart" data-name="heart" data-unicode-version="1.1">❤</gl-emoji> <gl-emoji title="hundred points symbol" data-name="100" data-unicode-version="6.0">💯</gl-emoji></p>
-
-- name: emphasis
- markdown: _emphasized text_
- html: <p data-sourcepos="1:1-1:17" dir="auto"><em>emphasized text</em></p>
-
-- name: figure
- markdown: |-
- <figure>
-
- ![Elephant at sunset](elephant-sunset.jpg)
-
- <figcaption>An elephant at sunset</figcaption>
- </figure>
- <figure>
-
- ![A crocodile wearing crocs](croc-crocs.jpg)
-
- <figcaption>
-
- A crocodile wearing _crocs_!
-
- </figcaption>
- </figure>
- html: |-
- <figure>
- <p data-sourcepos="3:1-3:42"><a class="no-attachment-icon" href="elephant-sunset.jpg" target="_blank" rel="noopener noreferrer"><img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Elephant at sunset" decoding="async" class="lazy" data-src="elephant-sunset.jpg"></a></p>
- <figcaption>An elephant at sunset</figcaption>
- </figure>
- <figure>
- <p data-sourcepos="9:1-9:44"><a class="no-attachment-icon" href="croc-crocs.jpg" target="_blank" rel="noopener noreferrer"><img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="A crocodile wearing crocs" decoding="async" class="lazy" data-src="croc-crocs.jpg"></a></p>
- <figcaption>
- <p data-sourcepos="13:1-13:28">A crocodile wearing <em>crocs</em>!</p>
- </figcaption>
- </figure>
-
-- name: footnotes
- substitutions:
- # NOTE: We don't care about verifying specific attribute values here, that should be the
- # responsibility of unit tests. These tests are about the structure of the HTML.
- fn_href_substitution:
- - regex: '(href)(=")(.+?)(")'
- replacement: '\1\2REF\4'
- footnote_id_substitution:
- - regex: '(id)(=")(.+?)(")'
- replacement: '\1\2ID\4'
-
- pending:
- backend: https://gitlab.com/gitlab-org/gitlab/-/issues/346591
- markdown: |-
- A footnote reference tag looks like this: [^1]
-
- This reference tag is a mix of letters and numbers. [^footnote]
-
- [^1]: This is the text inside a footnote.
-
- [^footnote]: This is another footnote.
- html: |-
- <p data-sourcepos="1:1-1:46" dir="auto">A footnote reference tag looks like this: <sup class="footnote-ref"><a href="#fn-1-2717" id="fnref-1-2717" data-footnote-ref="">1</a></sup></p>
- <p data-sourcepos="3:1-3:56" dir="auto">This reference tag is a mix of letters and numbers. <sup class="footnote-ref"><a href="#fn-footnote-2717" id="fnref-footnote-2717" data-footnote-ref="">2</a></sup></p>
- <section class="footnotes" data-footnotes><ol>
- <li id="fn-1-2717">
- <p data-sourcepos="5:7-5:41">This is the text inside a footnote. <a href="#fnref-1-2717" aria-label="Back to content" class="footnote-backref" data-footnote-backref=""><gl-emoji title="leftwards arrow with hook" data-name="leftwards_arrow_with_hook" data-unicode-version="1.1">↩</gl-emoji></a></p>
- </li>
- <li id="fn-footnote-2717">
- <p data-sourcepos="6:7-6:31">This is another footnote. <a href="#fnref-footnote-2717" aria-label="Back to content" class="footnote-backref" data-footnote-backref=""><gl-emoji title="leftwards arrow with hook" data-name="leftwards_arrow_with_hook" data-unicode-version="1.1">↩</gl-emoji></a></p>
- </li>
- </ol></section>
-
-- name: frontmatter_json
- markdown: |-
- ;;;
- {
- "title": "Page title"
- }
- ;;;
- html: |-
- <div class="gl-relative markdown-code-block js-markdown-code">
- <pre data-sourcepos="1:1-5:3" lang="json" class="code highlight js-syntax-highlight language-json" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="json"><span class="p">{</span></span>
- <span id="LC2" class="line" lang="json"><span class="w"> </span><span class="nl">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Page title"</span></span>
- <span id="LC3" class="line" lang="json"><span class="p">}</span></span></code></pre>
- <copy-code></copy-code>
- </div>
-
-- name: frontmatter_toml
- markdown: |-
- +++
- title = "Page title"
- +++
- html: |-
- <div class="gl-relative markdown-code-block js-markdown-code">
- <pre data-sourcepos="1:1-3:3" lang="toml" class="code highlight js-syntax-highlight language-toml" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="toml"><span class="py">title</span> <span class="p">=</span> <span class="s">"Page title"</span></span></code></pre>
- <copy-code></copy-code>
- </div>
-
-- name: frontmatter_yaml
- markdown: |-
- ---
- title: Page title
- ---
- html: |-
- <div class="gl-relative markdown-code-block js-markdown-code">
- <pre data-sourcepos="1:1-3:3" lang="yaml" class="code highlight js-syntax-highlight language-yaml" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="yaml"><span class="na">title</span><span class="pi">:</span> <span class="s">Page title</span></span></code></pre>
- <copy-code></copy-code>
- </div>
-
-- name: hard_break
- markdown: |-
- This is a line after a\
- hard break
- html: |-
- <p data-sourcepos="1:1-2:10" dir="auto">This is a line after a<br>
- hard break</p>
-
-- name: headings
- markdown: |-
- # Heading 1
-
- ## Heading 2
-
- ### Heading 3
-
- #### Heading 4
-
- ##### Heading 5
-
- ###### Heading 6
- html: |-
- <h1 data-sourcepos="1:1-1:11" dir="auto">
- <a id="user-content-heading-1" class="anchor" href="#heading-1" aria-hidden="true"></a>Heading 1</h1>
- <h2 data-sourcepos="3:1-3:12" dir="auto">
- <a id="user-content-heading-2" class="anchor" href="#heading-2" aria-hidden="true"></a>Heading 2</h2>
- <h3 data-sourcepos="5:1-5:13" dir="auto">
- <a id="user-content-heading-3" class="anchor" href="#heading-3" aria-hidden="true"></a>Heading 3</h3>
- <h4 data-sourcepos="7:1-7:14" dir="auto">
- <a id="user-content-heading-4" class="anchor" href="#heading-4" aria-hidden="true"></a>Heading 4</h4>
- <h5 data-sourcepos="9:1-9:15" dir="auto">
- <a id="user-content-heading-5" class="anchor" href="#heading-5" aria-hidden="true"></a>Heading 5</h5>
- <h6 data-sourcepos="11:1-11:16" dir="auto">
- <a id="user-content-heading-6" class="anchor" href="#heading-6" aria-hidden="true"></a>Heading 6</h6>
-
-- name: horizontal_rule
- markdown: |-
- ---
- html: |-
- <hr data-sourcepos="1:1-1:3">
-
-- name: html_marks
- markdown: |-
- * Content editor is ~~great~~<ins>amazing</ins>.
- * If the changes <abbr title="Looks good to merge">LGTM</abbr>, please <abbr title="Merge when pipeline succeeds">MWPS</abbr>.
- * The English song <q>Oh I do like to be beside the seaside</q> looks like this in Hebrew: <span dir="rtl">אה, אני אוהב להיות ליד חוף הים</span>. In the computer's memory, this is stored as <bdo dir="ltr">אה, אני אוהב להיות ליד חוף הים</bdo>.
- * <cite>The Scream</cite> by Edvard Munch. Painted in 1893.
- * <dfn>HTML</dfn> is the standard markup language for creating web pages.
- * Do not forget to buy <mark>milk</mark> today.
- * This is a paragraph and <small>smaller text goes here</small>.
- * The concert starts at <time datetime="20:00">20:00</time> and you'll be able to enjoy the band for at least <time datetime="PT2H30M">2h 30m</time>.
- * Press <kbd>Ctrl</kbd> + <kbd>C</kbd> to copy text (Windows).
- * WWF's goal is to: <q>Build a future where people live in harmony with nature.</q> We hope they succeed.
- * The error occurred was: <samp>Keyboard not found. Press F1 to continue.</samp>
- * The area of a triangle is: 1/2 x <var>b</var> x <var>h</var>, where <var>b</var> is the base, and <var>h</var> is the vertical height.
- * <ruby>漢<rt>ㄏㄢˋ</rt></ruby>
- * C<sub>7</sub>H<sub>16</sub> + O<sub>2</sub> → CO<sub>2</sub> + H<sub>2</sub>O
- * The **Pythagorean theorem** is often expressed as <var>a<sup>2</sup></var> + <var>b<sup>2</sup></var> = <var>c<sup>2</sup></var>
- html: |-
- <ul data-sourcepos="1:1-15:130" dir="auto">
- <li data-sourcepos="1:1-1:48">Content editor is <del>great</del><ins>amazing</ins>.</li>
- <li data-sourcepos="2:1-2:126">If the changes <abbr title="Looks good to merge">LGTM</abbr>, please <abbr title="Merge when pipeline succeeds">MWPS</abbr>.</li>
- <li data-sourcepos="3:1-3:288">The English song <q>Oh I do like to be beside the seaside</q> looks like this in Hebrew: <span dir="rtl">אה, אני אוהב להיות ליד חוף הים</span>. In the computer's memory, this is stored as <bdo dir="ltr">אה, אני אוהב להיות ליד חוף הים</bdo>.</li>
- <li data-sourcepos="4:1-4:59">
- <cite>The Scream</cite> by Edvard Munch. Painted in 1893.</li>
- <li data-sourcepos="5:1-5:73">
- <dfn>HTML</dfn> is the standard markup language for creating web pages.</li>
- <li data-sourcepos="6:1-6:47">Do not forget to buy <mark>milk</mark> today.</li>
- <li data-sourcepos="7:1-7:64">This is a paragraph and <small>smaller text goes here</small>.</li>
- <li data-sourcepos="8:1-8:149">The concert starts at <time datetime="20:00">20:00</time> and you'll be able to enjoy the band for at least <time datetime="PT2H30M">2h 30m</time>.</li>
- <li data-sourcepos="9:1-9:62">Press <kbd>Ctrl</kbd> + <kbd>C</kbd> to copy text (Windows).</li>
- <li data-sourcepos="10:1-10:105">WWF's goal is to: <q>Build a future where people live in harmony with nature.</q> We hope they succeed.</li>
- <li data-sourcepos="11:1-11:80">The error occurred was: <samp>Keyboard not found. Press F1 to continue.</samp>
- </li>
- <li data-sourcepos="12:1-12:136">The area of a triangle is: 1/2 x <var>b</var> x <var>h</var>, where <var>b</var> is the base, and <var>h</var> is the vertical height.</li>
- <li data-sourcepos="13:1-13:35"><ruby>漢<rt>ㄏㄢˋ</rt></ruby></li>
- <li data-sourcepos="14:1-14:81">C<sub>7</sub>H<sub>16</sub> + O<sub>2</sub> → CO<sub>2</sub> + H<sub>2</sub>O</li>
- <li data-sourcepos="15:1-15:130">The <strong>Pythagorean theorem</strong> is often expressed as <var>a<sup>2</sup></var> + <var>b<sup>2</sup></var> = <var>c<sup>2</sup></var>
- </li>
- </ul>
-
-- name: image
- markdown: |-
- ![alt text](https://gitlab.com/logo.png)
- html: |-
- <p data-sourcepos="1:1-1:40" dir="auto"><a class="no-attachment-icon" href="https://gitlab.com/logo.png" target="_blank" rel="nofollow noreferrer noopener"><img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="alt text" decoding="async" class="lazy" data-src="https://gitlab.com/logo.png"></a></p>
-
-- name: inline_code
- markdown: |-
- `code`
- html: |-
- <p data-sourcepos="1:1-1:6" dir="auto"><code>code</code></p>
-
-- name: inline_diff
- markdown: |-
- * {-deleted-}
- * {+added+}
- html: |-
- <ul data-sourcepos="1:1-2:11" dir="auto">
- <li data-sourcepos="1:1-1:13"><span class="idiff left right deletion">deleted</span></li>
- <li data-sourcepos="2:1-2:11"><span class="idiff left right addition">added</span></li>
- </ul>
-
-- name: label
- pending:
- # TODO: There is an error with the frontend HTML to markdown spec adding a double escape (\\) to the label tilde.
- frontend: 'There is an error with the frontend HTML to markdown spec adding a double escape (\\) to the label tilde.'
- markdown: |-
- ~bug
- html: |-
- <p data-sourcepos="1:1-1:4" dir="auto">~bug</p>
-
-- name: link
- markdown: |-
- [GitLab](https://gitlab.com)
- html: |-
- <p data-sourcepos="1:1-1:28" dir="auto"><a href="https://gitlab.com" rel="nofollow noreferrer noopener" target="_blank">GitLab</a></p>
-
-- name: math
- markdown: |-
- This math is inline $`a^2+b^2=c^2`$.
-
- This is on a separate line:
-
- ```math
- a^2+b^2=c^2
- ```
- html: |-
- <p data-sourcepos="1:1-1:36" dir="auto">This math is inline <code class="code math js-render-math" data-math-style="inline">a^2+b^2=c^2</code>.</p>
- <p data-sourcepos="3:1-3:27" dir="auto">This is on a separate line:</p>
- <div class="gl-relative markdown-code-block js-markdown-code">
- <pre data-sourcepos="5:1-7:3" lang="math" data-math-style="display" class="js-render-math code highlight js-syntax-highlight language-math" v-pre="true"><code><span id="LC1" class="line" lang="math">a^2+b^2=c^2</span></code></pre>
- <copy-code></copy-code>
- </div>
-
-- name: ordered_list
- markdown: |-
- 1. list item 1
- 2. list item 2
- 3. list item 3
- html: |-
- <ol data-sourcepos="1:1-3:14" dir="auto">
- <li data-sourcepos="1:1-1:14">list item 1</li>
- <li data-sourcepos="2:1-2:14">list item 2</li>
- <li data-sourcepos="3:1-3:14">list item 3</li>
- </ol>
-
-- name: ordered_list_with_start_order
- markdown: |-
- 134. list item 1
- 135. list item 2
- 136. list item 3
- html: |-
- <ol start="134" data-sourcepos="1:1-3:16" dir="auto">
- <li data-sourcepos="1:1-1:16">list item 1</li>
- <li data-sourcepos="2:1-2:16">list item 2</li>
- <li data-sourcepos="3:1-3:16">list item 3</li>
- </ol>
-
-- name: ordered_task_list
- markdown: |-
- 1. [x] hello
- 2. [x] world
- 3. [ ] example
- 1. [ ] of nested
- 1. [x] task list
- 2. [ ] items
- html: |-
- <ol data-sourcepos="1:1-6:18" class="task-list" dir="auto">
- <li data-sourcepos="1:1-1:12" class="task-list-item">
- <task-button></task-button><input type="checkbox" class="task-list-item-checkbox" checked disabled> hello</li>
- <li data-sourcepos="2:1-2:12" class="task-list-item">
- <task-button></task-button><input type="checkbox" class="task-list-item-checkbox" checked disabled> world</li>
- <li data-sourcepos="3:1-6:18" class="task-list-item">
- <task-button></task-button><input type="checkbox" class="task-list-item-checkbox" disabled> example
- <ol data-sourcepos="4:4-6:18" class="task-list">
- <li data-sourcepos="4:4-6:18" class="task-list-item">
- <task-button></task-button><input type="checkbox" class="task-list-item-checkbox" disabled> of nested
- <ol data-sourcepos="5:7-6:18" class="task-list">
- <li data-sourcepos="5:7-5:22" class="task-list-item">
- <task-button></task-button><input type="checkbox" class="task-list-item-checkbox" checked disabled> task list</li>
- <li data-sourcepos="6:7-6:18" class="task-list-item">
- <task-button></task-button><input type="checkbox" class="task-list-item-checkbox" disabled> items</li>
- </ol>
- </li>
- </ol>
- </li>
- </ol>
-
-- name: ordered_task_list_with_order
- markdown: |-
- 4893. [x] hello
- 4894. [x] world
- 4895. [ ] example
- html: |-
- <ol start="4893" data-sourcepos="1:1-3:17" class="task-list" dir="auto">
- <li data-sourcepos="1:1-1:15" class="task-list-item">
- <task-button></task-button><input type="checkbox" class="task-list-item-checkbox" checked disabled> hello</li>
- <li data-sourcepos="2:1-2:15" class="task-list-item">
- <task-button></task-button><input type="checkbox" class="task-list-item-checkbox" checked disabled> world</li>
- <li data-sourcepos="3:1-3:17" class="task-list-item">
- <task-button></task-button><input type="checkbox" class="task-list-item-checkbox" disabled> example</li>
- </ol>
-
-- name: reference_for_project_wiki
- api_context: project_wiki
- substitutions:
- # NOTE: We don't care about verifying specific attribute values here, that should be the
- # responsibility of unit tests. These tests are about the structure of the HTML.
- uri_substitution: *uri_substitution
- data_attribute_id_substitution:
- - regex: '(data-user|data-project|data-issue|data-iid|data-merge-request|data-milestone|data-label)(=")(\d+?)(")'
- replacement: '\1\2ID\4'
- text_attribute_substitution:
- - regex: '(title)(=")([^"]*)(")'
- replacement: '\1\2TEXT\4'
- path_attribute_id_substitution:
- - regex: '(group|project)(\d+)'
- replacement: '\1ID'
- markdown: |-
- Hi @gfm_user - thank you for reporting this ~"UX bug" (#1) we hope to fix it in %1.1 as part of !1
- html: |-
- <p data-sourcepos="1:1-1:98" dir="auto">Hi <a href="/gfm_user" data-reference-type="user" data-user="1" data-container="body" data-placement="top" class="gfm gfm-project_member js-user-link" title="John Doe1">@gfm_user</a> - thank you for reporting this <span class="gl-label gl-label-sm"><a href="/groupID/projectID/-/issues?label_name=UX+bug" data-reference-type="label" data-original='~"UX bug"' data-link="false" data-link-reference="false" data-project="ID" data-label="2" data-container="body" data-placement="top" title="TEXT" class="gfm gfm-label has-tooltip gl-link gl-label-link"><span class="gl-label-text gl-label-text-light" data-container="body" data-html="true" style="background-color: #990000">UX bug</span></a></span> (<a href="/group1/project1/-/issues/1" data-reference-type="issue" data-original="#1" data-link="false" data-link-reference="false" data-project="11" data-issue="11" data-project-path="group1/project1" data-iid="1" data-issue-type="issue" data-container="body" data-placement="top" title="My title 1" class="gfm gfm-issue">#1</a>) we hope to fix it in <a href="/group1/project1/-/milestones/1" data-reference-type="milestone" data-original="%1.1" data-link="false" data-link-reference="false" data-project="11" data-milestone="11" data-container="body" data-placement="top" title="" class="gfm gfm-milestone has-tooltip">%1.1</a> as part of <a href="/group1/project1/-/merge_requests/1" data-reference-type="merge_request" data-original="!1" data-link="false" data-link-reference="false" data-project="11" data-merge-request="11" data-project-path="group1/project1" data-iid="1" data-container="body" data-placement="top" title="My title 2" class="gfm gfm-merge_request">!1</a></p>
-- name: strike
- markdown: |-
- ~~del~~
- html: |-
- <p data-sourcepos="1:1-1:7" dir="auto"><del>del</del></p>
-
-- name: table
- markdown: |-
- | header | header |
- |--------|--------|
- | `code` | cell with **bold** |
- | ~~strike~~ | cell with _italic_ |
-
- # content after table
- html: |-
- <table data-sourcepos="1:1-4:35" dir="auto">
- <thead>
- <tr data-sourcepos="1:1-1:19">
- <th data-sourcepos="1:2-1:9">header</th>
- <th data-sourcepos="1:11-1:18">header</th>
- </tr>
- </thead>
- <tbody>
- <tr data-sourcepos="3:1-3:31">
- <td data-sourcepos="3:2-3:9"><code>code</code></td>
- <td data-sourcepos="3:11-3:30">cell with <strong>bold</strong>
- </td>
- </tr>
- <tr data-sourcepos="4:1-4:35">
- <td data-sourcepos="4:2-4:13"><del>strike</del></td>
- <td data-sourcepos="4:15-4:34">cell with <em>italic</em>
- </td>
- </tr>
- </tbody>
- </table>
- <h1 data-sourcepos="6:1-6:21" dir="auto">
- <a id="user-content-content-after-table" class="anchor" href="#content-after-table" aria-hidden="true"></a>content after table</h1>
-
-- name: table_of_contents
- markdown: |-
- [[_TOC_]]
-
- # Lorem
-
- Well, that's just like... your opinion.. man.
-
- ## Ipsum
-
- ### Dolar
-
- # Sit amit
-
- ### I don't know
- html: |-
- <ul class="section-nav">
- <li>
- <a href="#lorem">Lorem</a><ul><li>
- <a href="#ipsum">Ipsum</a><ul><li><a href="#dolar">Dolar</a></li></ul>
- </li></ul>
- </li>
- <li>
- <a href="#sit-amit">Sit amit</a><ul><li><a href="#i-dont-know">I don't know</a></li></ul>
- </li>
- </ul>
- <h1 data-sourcepos="3:1-3:7" dir="auto">
- <a id="user-content-lorem" class="anchor" href="#lorem" aria-hidden="true"></a>Lorem</h1>
- <p data-sourcepos="5:1-5:45" dir="auto">Well, that's just like... your opinion.. man.</p>
- <h2 data-sourcepos="7:1-7:8" dir="auto">
- <a id="user-content-ipsum" class="anchor" href="#ipsum" aria-hidden="true"></a>Ipsum</h2>
- <h3 data-sourcepos="9:1-9:9" dir="auto">
- <a id="user-content-dolar" class="anchor" href="#dolar" aria-hidden="true"></a>Dolar</h3>
- <h1 data-sourcepos="11:1-11:10" dir="auto">
- <a id="user-content-sit-amit" class="anchor" href="#sit-amit" aria-hidden="true"></a>Sit amit</h1>
- <h3 data-sourcepos="13:1-13:16" dir="auto">
- <a id="user-content-i-dont-know" class="anchor" href="#i-dont-know" aria-hidden="true"></a>I don't know</h3>
-
-- name: task_list
- markdown: |-
- * [x] hello
- * [x] world
- * [ ] example
- * [ ] of nested
- * [x] task list
- * [ ] items
- html: |-
- <ul data-sourcepos="1:1-6:15" class="task-list" dir="auto">
- <li data-sourcepos="1:1-1:11" class="task-list-item">
- <task-button></task-button><input type="checkbox" class="task-list-item-checkbox" checked disabled> hello</li>
- <li data-sourcepos="2:1-2:11" class="task-list-item">
- <task-button></task-button><input type="checkbox" class="task-list-item-checkbox" checked disabled> world</li>
- <li data-sourcepos="3:1-6:15" class="task-list-item">
- <task-button></task-button><input type="checkbox" class="task-list-item-checkbox" disabled> example
- <ul data-sourcepos="4:3-6:15" class="task-list">
- <li data-sourcepos="4:3-6:15" class="task-list-item">
- <task-button></task-button><input type="checkbox" class="task-list-item-checkbox" disabled> of nested
- <ul data-sourcepos="5:5-6:15" class="task-list">
- <li data-sourcepos="5:5-5:19" class="task-list-item">
- <task-button></task-button><input type="checkbox" class="task-list-item-checkbox" checked disabled> task list</li>
- <li data-sourcepos="6:5-6:15" class="task-list-item">
- <task-button></task-button><input type="checkbox" class="task-list-item-checkbox" disabled> items</li>
- </ul>
- </li>
- </ul>
- </li>
- </ul>
-
-- name: video
- markdown: |-
- ![Sample Video](https://gitlab.com/gitlab.mp4)
- html: |-
- <p data-sourcepos="1:1-1:46" dir="auto"><span class="media-container video-container"><video src="https://gitlab.com/gitlab.mp4" controls="true" data-setup="{}" data-title="Sample Video" width="400" preload="metadata"></video><a href="https://gitlab.com/gitlab.mp4" target="_blank" rel="nofollow noreferrer noopener" title="Download 'Sample Video'">Sample Video</a></span></p>
-
-- name: word_break
- markdown: Fernstraßen<wbr>bau<wbr>privat<wbr>finanzierungs<wbr>gesetz
- html: <p data-sourcepos="1:1-1:60" dir="auto">Fernstraßen<wbr>bau<wbr>privat<wbr>finanzierungs<wbr>gesetz</wbr></wbr></wbr></wbr></p>
diff --git a/spec/fixtures/tasks/gitlab/security/expected_banned_keys.yml b/spec/fixtures/tasks/gitlab/security/expected_banned_keys.yml
new file mode 100644
index 00000000000..2939b651f82
--- /dev/null
+++ b/spec/fixtures/tasks/gitlab/security/expected_banned_keys.yml
@@ -0,0 +1,12 @@
+---
+dsa:
+- SHA256:/JLp6z6uGE3BPcs70RQob6QOdEWQ6nDC0xY7ejPOCc0
+- SHA256:whDP3xjKBEettbDuecxtGsfWBST+78gb6McdB9P7jCU
+- SHA256:MEc4HfsOlMqJ3/9QMTmrKn5Xj/yfnMITMW8EwfUfTww
+- SHA256:aPoYT2nPIfhqv6BIlbCCpbDjirBxaDFOtPfZ2K20uWw
+- SHA256:VtjqZ5fiaeoZ3mXOYi49Lk9aO31iT4pahKFP9JPiQPc
+rsa:
+- SHA256:Z+q4XhSwWY7q0BIDVPR1v/S306FjGBsid7tLq/8kIxM
+- SHA256:uy5wXyEgbRCGsk23+J6f85om7G55Cu3UIPwC7oMZhNQ
+- SHA256:9prMbqhS4QteoFQ1ZRJDqSBLWoHXPyKB0iWR05Ghro4
+- SHA256:1M4RzhMyWuFS/86uPY/ce2prh/dVTHW7iD2RhpquOZA
diff --git a/spec/fixtures/tasks/gitlab/security/ssh-badkeys/LICENSE b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/LICENSE
new file mode 100644
index 00000000000..059a3757d67
--- /dev/null
+++ b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 Rapid7
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
diff --git a/spec/fixtures/tasks/gitlab/security/ssh-badkeys/README.md b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/README.md
new file mode 100644
index 00000000000..4c0b33e1117
--- /dev/null
+++ b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/README.md
@@ -0,0 +1,12 @@
+# SSH Bad Keys
+
+This is a collection of static SSH keys (host and authentication) that have made their way into software and hardware products. This was inspired by the [Little Black Box](https://code.google.com/p/littleblackbox/) project, but focused primarily on SSH (as opposed to TLS) keys.
+
+Keys are split into two categories; authorized keys and host keys. The authorized keys can be used to gain access to a device with this public key. The host keys can be used to conduct a MITM attack against the device, but do not provide direct access.
+
+This collection depends on submissions from researchers to stay relevant. If you are aware of a static key (host or authorized), please open an [Issue](https://github.com/rapid7/ssh-badkeys/issues) or submit a Pull Request. The [Issues](https://github.com/rapid7/ssh-badkeys/issues) list also contains a wishlist of known bad keys that we would like to include.
+
+For additional key types and a broader scope, take a look at the [Kompromat](https://github.com/BenBE/kompromat) project.
+
+
+
diff --git a/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/array-networks-vapv-vxag.pub b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/array-networks-vapv-vxag.pub
new file mode 100644
index 00000000000..467e5fb566f
--- /dev/null
+++ b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/array-networks-vapv-vxag.pub
@@ -0,0 +1 @@
+ssh-dss AAAAB3NzaC1kc3MAAACBAJTDsX+8olPZeyr58g9XE0L8PKT5030NZBPlE7np4hBqx36HoWarWq1Csn8M57dWN9StKbs03k2ggY6sYJK5AW2EWar70um3pYjKQHiZq7mITmitsozFN/K7wu2e2iKRgquUwH5SuYoOJ29n7uhaILXiKZP4/H/dDudqPRSY6tJPAAAAFQDtuWH90mDbU2L/Ms2lfl/cja/wHwAAAIAMBwSHZt2ysOHCFe1WLUvdwVDHUqk3QHTskuuAnMlwMtSvCaUxSatdHahsMZ9VCHjoQUx6j+TcgRLDbMlRLnwUlb6wpniehLBFk+qakGcREqks5NxYzFTJXwROzP72jPvVgQyOZHWq81gCild/ljL7hmrduCqYwxDIz4o7U92UKQAAAIBmhSl9CVPgVMv1xO8DAHVhM1huIIK8mNFrzMJz+JXzBx81ms1kWSeQOC/nraaXFTBlqiQsvB8tzr4xZdbaI/QzVLKNAF5C8BJ4ScNlTIx1aZJwyMil8Nzb+0YAsw5Ja+bEZZvEVlAYnd10qRWrPeEY1txLMmX3wDa+JvJL7fmuBg==
diff --git a/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/barracuda_load_balancer_vm.pub b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/barracuda_load_balancer_vm.pub
new file mode 100644
index 00000000000..a8a832f162b
--- /dev/null
+++ b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/barracuda_load_balancer_vm.pub
@@ -0,0 +1 @@
+ssh-dss AAAAB3NzaC1kc3MAAACBAMq5EcIFdfCjJakyQnP/BBp9oc6mpaZVguf0Znp5C40twiG1lASQJZlM1qOB/hkBWYeBCHUkcOLEnVXSZzB62L+W/LGKodqnsiQPRr57AA6jPc6mNBnejHai8cSdAl9n/0s2IQjdcrxM8CPq2uEyfm0J3AV6Lrbbxr5NgE5xxM+DAAAAFQCmFk/M7Rx2jexsJ9COpHkHwUjcNQAAAIAdg18oByp/tjjDKhWhmmv+HbVIROkRqSxBvuEZEmcWlg38mLIT1bydfpSou/V4rI5ctxwCfJ1rRr66pw6GwCrz4fXmyVlhrj7TrktyQ9+zRXhynF4wdNPWErhNHb8tGlSOFiOBcUTlouX3V/ka6Dkd6ZQrZLQFaH+gjfyTZZ82HQAAAIEArsJgp7RLPOsCeLqoia/eljseBFVDazO5Q0ysUotTw9wgXGGVWREwm8wNggFNb9eCiBAAUfVZVfhVAtFT0pBf/eIVLPXyaMw3prBt7LqeBrbagODc3WAAdMTPIdYYcOKgv+YvTXa51zG64v6pQOfS8WXgKCzDl44puXfYeDk5lVQ=
diff --git a/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/ceragon-fibeair-cve-2015-0936.pub b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/ceragon-fibeair-cve-2015-0936.pub
new file mode 100644
index 00000000000..1a8016efb1e
--- /dev/null
+++ b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/ceragon-fibeair-cve-2015-0936.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwRIdDlHaIqZXND/l1vFT7ue3rc/DvXh2yx5EFtuxGQRHVxGMazDhV4vj5ANGXDQwUYI0iZh6aOVrDy8I/y9/y+YDGCvsnqrDbuPDjW26s2bBXWgUPiC93T3TA6L2KOxhVcl7mljEOIYACRHPpJNYVGhinCxDUH9LxMrdNXgP5Ok= mateidu@localhost
diff --git a/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/exagrid-cve-2016-1561.pub b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/exagrid-cve-2016-1561.pub
new file mode 100644
index 00000000000..387cd23fb47
--- /dev/null
+++ b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/exagrid-cve-2016-1561.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBnZQ+6nhlPX/JnX5i5hXpljJ89bSnnrsSs51hSPuoJGmoKowBddISK7s10AIpO0xAWGcr8PUr2FOjEBbDHqlRxoXF0Ocms9xv3ql9EYUQ5+U+M6BymWhNTFPOs6gFHUl8Bw3t6c+SRKBpfRFB0yzBj9d093gSdfTAFoz+yLo4vRw==
diff --git a/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/f5-bigip-cve-2012-1493.pub b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/f5-bigip-cve-2012-1493.pub
new file mode 100644
index 00000000000..5cc9954edf4
--- /dev/null
+++ b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/f5-bigip-cve-2012-1493.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAvIhC5skTzxyHif/7iy3yhxuK6/OB13hjPqrskogkYFrcW8OK4VJT+5+Fx7wd4sQCnVn8rNqahw/x6sfcOMDI/Xvn4yKU4t8TnYf2MpUVr4ndz39L5Ds1n7Si1m2suUNxWbKv58I8+NMhlt2ITraSuTU0NGymWOc8+LNi+MHXdLk= SCCP Superuser
diff --git a/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/loadbalancer.org-enterprise-va.pub b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/loadbalancer.org-enterprise-va.pub
new file mode 100644
index 00000000000..e47ea5ca1fd
--- /dev/null
+++ b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/loadbalancer.org-enterprise-va.pub
@@ -0,0 +1 @@
+ssh-dss AAAAB3NzaC1kc3MAAACBAKwKBw7D4OA1H/uD4htdh04TBIHdbSjeXUSnWJsce8C0tvoB01Yarjv9TFj+tfeDYVWtUK1DA1JkyqSuoAtDANJzF4I6Isyd0KPrW3dHFTcg6Xlz8d3KEaHokY93NOmB/xWEkhme8b7Q0U2iZie2pgWbTLXV0FA+lhskTtPHW3+VAAAAFQDRyayUlVZKXEweF3bUe03zt9e8VQAAAIAEPK1k3Y6ErAbIl96dnUCnZjuWQ7xXy062pf63QuRWI6LYSscm3f1pEknWUNFr/erQ02pkfi2eP9uHl1TI1ql+UmJX3g3frfssLNZwWXAW0m8PbY3HZSs+f5hevM3ua32pnKDmbQ2WpvKNyycKHi81hSI14xMcdblJolhN5iY8/wAAAIAjEe5+0m/TlBtVkqQbUit+s/g+eB+PFQ+raaQdL1uztW3etntXAPH1MjxsAC/vthWYSTYXORkDFMhrO5ssE2rfg9io0NDyTIZt+VRQMGdi++dH8ptU+ldl2ZejLFdTJFwFgcfXz+iQ1mx6h9TPX1crE1KoMAVOj3yKVfKpLB1EkA== root@lbslave
diff --git a/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/monroe-dasdec-cve-2013-0137.pub b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/monroe-dasdec-cve-2013-0137.pub
new file mode 100644
index 00000000000..f7fee2c59ac
--- /dev/null
+++ b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/monroe-dasdec-cve-2013-0137.pub
@@ -0,0 +1 @@
+ssh-dss AAAAB3NzaC1kc3MAAACBAN3AITryJMQyOKZjAky+mQ/8pOHIlu4q8pzmR0qotKaLm2yye5a0PY2rOaQRAzi7EPheBXbqTb8a8TrHhGXI5P7GUHaJho5HhEnw+5TwAvP72L7LcPwxMxj/rLcR/jV+uLMsVeJVWjwJcUv83yzPXoVjK0hrIm+RLLeuTM+gTylHAAAAFQD5gBdXsXAiTz1atzMg3xDFF1zlowAAAIAlLy6TCMlOBM0IcPsvP/9bEjDj0M8YZazdqt4amO2IaNUPYt9/sIsLOQfxIj8myDK1TOp8NyRJep7V5aICG4f3Q+XktlmLzdWn3sjvbWuIAXe1opjG2T69YhxfHZr8Wn7P4tpCgyqM4uHmUKrfnBzQQ9vkUUWsZoUXM2Z7vUXVfQAAAIAU6eNlphQWDwx0KOBiiYhF9BM6kDbQlyw8333rAG3G4CcjI2G8eYGtpBNliaD185UjCEsjPiudhGil/j4Zt/+VY3aGOLoi8kqXBBc8ZAML9bbkXpyhQhMgwiywx3ciFmvSn2UAin8yurStYPQxtXauZN5PYbdwCHPS7ApIStdpMA== wood@endec1
diff --git a/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/quantum-dxi-v1000.pub b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/quantum-dxi-v1000.pub
new file mode 100644
index 00000000000..1cba0ffbdfd
--- /dev/null
+++ b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/quantum-dxi-v1000.pub
@@ -0,0 +1 @@
+ssh-dss AAAAB3NzaC1kc3MAAACBAISAE3CAX4hsxTw0dRc0gx8nQ41r3Vkj9OmG6LGeKWRmpy7C6vaExuupjxid76fd4aS56lCUEEoRlJ3zE93qoK9acI6EGqGQFLuDZ0fqMyRSX+ilf+1HDo/TRyuraggxp9Hj9LMpZVbpFATMm0+d9Xs7eLmaJjuMsowNlOf8NFdHAAAAFQCwdvqOAkR6QhuiAapQ/9iVuR0UAQAAAIBpLMo4dhSeWkChfv659WLPftxRrX/HR8YMD/jqa3R4PsVM2g6dQ1191nHugtdV7uaMeOqOJ/QRWeYM+UYwT0Zgx2LqvgVSjNDfdjk+ZRY8x3SmExFi62mKFoTGSOCXfcAfuanjaoF+sepnaiLUd+SoJShGYHoqR2QWiysTRqknlwAAAIBLEgYmr9XCSqjENFDVQPFELYKT7Zs9J87PjPS1AP0qF1OoRGZ5mefK6X/6VivPAUWmmmev/BuAs8M1HtfGeGGzMzDIiU/WZQ3bScLB1Ykrcjk7TOFD6xrnk/inYAp5l29hjidoAONcXoHmUAMYOKqn63Q2AsDpExVcmfj99/BlpQ==
diff --git a/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/vagrant-default.pub b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/vagrant-default.pub
new file mode 100644
index 00000000000..18a9c00fd56
--- /dev/null
+++ b/spec/fixtures/tasks/gitlab/security/ssh-badkeys/authorized/vagrant-default.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
diff --git a/spec/fixtures/valid.po b/spec/fixtures/valid.po
index e580af66939..99f6b317ffc 100644
--- a/spec/fixtures/valid.po
+++ b/spec/fixtures/valid.po
@@ -256,9 +256,6 @@ msgstr "crear un token de acceso personal"
msgid "Cron Timezone"
msgstr "Zona horaria del Cron"
-msgid "Cron syntax"
-msgstr "Sintaxis de Cron"
-
msgid "Custom notification events"
msgstr "Eventos de notificaciones personalizadas"
@@ -442,6 +439,9 @@ msgstr "Última actualización"
msgid "Last commit"
msgstr "Último cambio"
+msgid "Learn more."
+msgstr "Más información."
+
msgid "Learn more in the"
msgstr "Más información en la"