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:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-05-19 18:44:42 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-05-19 18:44:42 +0300
commit4555e1b21c365ed8303ffb7a3325d773c9b8bf31 (patch)
tree5423a1c7516cffe36384133ade12572cf709398d /spec/lib/gitlab/regex_spec.rb
parente570267f2f6b326480d284e0164a6464ba4081bc (diff)
Add latest changes from gitlab-org/gitlab@13-12-stable-eev13.12.0-rc42
Diffstat (limited to 'spec/lib/gitlab/regex_spec.rb')
-rw-r--r--spec/lib/gitlab/regex_spec.rb187
1 files changed, 187 insertions, 0 deletions
diff --git a/spec/lib/gitlab/regex_spec.rb b/spec/lib/gitlab/regex_spec.rb
index f62a3c74005..28447d5c2a9 100644
--- a/spec/lib/gitlab/regex_spec.rb
+++ b/spec/lib/gitlab/regex_spec.rb
@@ -427,6 +427,19 @@ RSpec.describe Gitlab::Regex do
it { is_expected.not_to match('%2e%2e%2fmy_package') }
end
+ describe '.terraform_module_package_name_regex' do
+ subject { described_class.terraform_module_package_name_regex }
+
+ it { is_expected.to match('my-module/my-system') }
+ it { is_expected.to match('my/module') }
+ it { is_expected.not_to match('my-module') }
+ it { is_expected.not_to match('My-Module') }
+ it { is_expected.not_to match('my_module') }
+ it { is_expected.not_to match('my.module') }
+ it { is_expected.not_to match('../../../my-module') }
+ it { is_expected.not_to match('%2e%2e%2fmy-module') }
+ end
+
describe '.pypi_version_regex' do
subject { described_class.pypi_version_regex }
@@ -628,6 +641,50 @@ RSpec.describe Gitlab::Regex do
it { is_expected.not_to match('hé') }
end
+ describe '.helm_channel_regex' do
+ subject { described_class.helm_channel_regex }
+
+ it { is_expected.to match('release') }
+ it { is_expected.to match('my-repo') }
+ it { is_expected.to match('my-repo42') }
+
+ # Do not allow empty
+ it { is_expected.not_to match('') }
+
+ # Do not allow Unicode
+ it { is_expected.not_to match('hé') }
+ end
+
+ describe '.helm_package_regex' do
+ subject { described_class.helm_package_regex }
+
+ it { is_expected.to match('release') }
+ it { is_expected.to match('my-repo') }
+ it { is_expected.to match('my-repo42') }
+
+ # Do not allow empty
+ it { is_expected.not_to match('') }
+
+ # Do not allow Unicode
+ it { is_expected.not_to match('hé') }
+
+ it { is_expected.not_to match('my/../repo') }
+ it { is_expected.not_to match('me%2f%2e%2e%2f') }
+ end
+
+ describe '.helm_version_regex' do
+ subject { described_class.helm_version_regex }
+
+ it { is_expected.to match('v1.2.3') }
+ it { is_expected.to match('v1.2.3-beta') }
+ it { is_expected.to match('v1.2.3-alpha.3') }
+ it { is_expected.not_to match('v1') }
+ it { is_expected.not_to match('v1.2') }
+ it { is_expected.not_to match('v1./2.3') }
+ it { is_expected.not_to match('v../../../../../1.2.3') }
+ it { is_expected.not_to match('v%2e%2e%2f1.2.3') }
+ end
+
describe '.semver_regex' do
subject { described_class.semver_regex }
@@ -726,4 +783,134 @@ RSpec.describe Gitlab::Regex do
it { is_expected.not_to match('v../../../../../1.2.3') }
it { is_expected.not_to match('v%2e%2e%2f1.2.3') }
end
+
+ describe 'Packages::API_PATH_REGEX' do
+ subject { described_class::Packages::API_PATH_REGEX }
+
+ it { is_expected.to match('/api/v4/group/12345/-/packages/composer/p/123456789') }
+ it { is_expected.to match('/api/v4/group/12345/-/packages/composer/p2/pkg_name') }
+ it { is_expected.to match('/api/v4/group/12345/-/packages/composer/packages') }
+ it { is_expected.to match('/api/v4/group/12345/-/packages/composer/pkg_name') }
+ it { is_expected.to match('/api/v4/groups/1234/-/packages/maven/a/path/file.jar') }
+ it { is_expected.to match('/api/v4/groups/1234/-/packages/nuget/index') }
+ it { is_expected.to match('/api/v4/groups/1234/-/packages/nuget/metadata/pkg_name/1.3.4') }
+ it { is_expected.to match('/api/v4/groups/1234/-/packages/nuget/metadata/pkg_name/index') }
+ it { is_expected.to match('/api/v4/groups/1234/-/packages/nuget/query') }
+ it { is_expected.to match('/api/v4/packages/conan/v1/conans/pkg_name/1.2.3/username/stable') }
+ it { is_expected.to match('/api/v4/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/digest') }
+ it { is_expected.to match('/api/v4/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/download_urls') }
+ it { is_expected.to match('/api/v4/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/packages/pkg_ref') }
+ it { is_expected.to match('/api/v4/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/packages/pkg_ref/digest') }
+ it { is_expected.to match('/api/v4/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/packages/pkg_ref/download_urls') }
+ it { is_expected.to match('/api/v4/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/packages/pkg_ref/upload_urls') }
+ it { is_expected.to match('/api/v4/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/upload_urls') }
+ it { is_expected.to match('/api/v4/packages/conan/v1/conans/search') }
+ it { is_expected.to match('/api/v4/packages/conan/v1/files/pkg_name/1.2.3/username/stable/2.3/export/file.name') }
+ it { is_expected.to match('/api/v4/packages/conan/v1/files/pkg_name/1.2.3/username/stable/2.3/export/file.name/authorize') }
+ it { is_expected.to match('/api/v4/packages/conan/v1/files/pkg_name/1.2.3/username/stable/2.3/package/pkg_ref/pkg_revision/file.name') }
+ it { is_expected.to match('/api/v4/packages/conan/v1/files/pkg_name/1.2.3/username/stable/2.3/package/pkg_ref/pkg_revision/file.name/authorize') }
+ it { is_expected.to match('/api/v4/packages/conan/v1/ping') }
+ it { is_expected.to match('/api/v4/packages/conan/v1/users/authenticate') }
+ it { is_expected.to match('/api/v4/packages/conan/v1/users/check_credentials') }
+ it { is_expected.to match('/api/v4/packages/maven/a/path/file.jar') }
+ it { is_expected.to match('/api/v4/packages/npm/-/package/pkg_name/dist-tags') }
+ it { is_expected.to match('/api/v4/packages/npm/-/package/pkg_name/dist-tags/tag') }
+ it { is_expected.to match('/api/v4/packages/npm/pkg_name') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/composer') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/composer/archives/pkg_name') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/conan/v1/conans/pkg_name/1.2.3/username/stable') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/digest') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/download_urls') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/packages/pkg_ref') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/packages/pkg_ref/digest') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/packages/pkg_ref/download_urls') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/packages/pkg_ref/upload_urls') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/conan/v1/conans/pkg_name/1.2.3/username/stable/upload_urls') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/conan/v1/conans/search') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/conan/v1/files/pkg_name/1.2.3/username/stable/2.3/export/file.name') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/conan/v1/files/pkg_name/1.2.3/username/stable/2.3/export/file.name/authorize') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/conan/v1/files/pkg_name/1.2.3/username/stable/2.3/package/pkg_ref/pkg_revision/file.name') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/conan/v1/files/pkg_name/1.2.3/username/stable/2.3/package/pkg_ref/pkg_revision/file.name/authorize') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/conan/v1/ping') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/conan/v1/users/authenticate') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/conan/v1/users/check_credentials') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/debian/dists/stable/compon/binary-x64/Packages') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/debian/dists/stable/InRelease') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/debian/dists/stable/Release') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/debian/dists/stable/Release.gpg') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/debian/file.name') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/debian/file.name/authorize') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/debian/pool/compon/e/pkg/file.name') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/generic/pkg_name/1.3.4/myfile.txt') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/generic/pkg_name/1.3.4/myfile.txt/authorize') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/go/my_module/@v/11.2.3.info') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/go/my_module/@v/11.2.3.mod') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/go/my_module/@v/11.2.3.zip') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/go/my_module/@v/list') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/maven/a/path/file.jar') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/maven/a/path/file.jar/authorize') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/npm/-/package/pkg_name/dist-tags') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/npm/-/package/pkg_name/dist-tags/tag') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/npm/pkg_name') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/npm/pkg_name/-/tarball.tgz') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/nuget') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/nuget/authorize') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/nuget/download/pkg_name/1.3.4/pkg.npkg') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/nuget/download/pkg_name/index') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/nuget/index') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/nuget/metadata/pkg_name/1.3.4') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/nuget/metadata/pkg_name/index') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/nuget/query') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/pypi') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/pypi/authorize') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/pypi/files/1234567890/file.identifier') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/pypi/simple/pkg_name') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/rubygems/api/v1/dependencies') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/rubygems/api/v1/gems') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/rubygems/api/v1/gems/authorize') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/rubygems/gems/pkg') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/rubygems/pkg') }
+ it { is_expected.to match('/api/v4/projects/1234/packages/rubygems/quick/Marshal.4.8/pkg') }
+ it { is_expected.not_to match('') }
+ it { is_expected.not_to match('foo') }
+ it { is_expected.not_to match('/api/v4') }
+ it { is_expected.not_to match('/api/v4/version') }
+ it { is_expected.not_to match('/api/v4/packages') }
+ it { is_expected.not_to match('/api/v4/packages/') }
+ it { is_expected.not_to match('/api/v4/group') }
+ it { is_expected.not_to match('/api/v4/group/12345') }
+ it { is_expected.not_to match('/api/v4/group/12345/-') }
+ it { is_expected.not_to match('/api/v4/group/12345/-/packages') }
+ it { is_expected.not_to match('/api/v4/group/12345/-/packages/') }
+ it { is_expected.not_to match('/api/v4/group/12345/-/packages/50') }
+ it { is_expected.not_to match('/api/v4/groups') }
+ it { is_expected.not_to match('/api/v4/groups/12345') }
+ it { is_expected.not_to match('/api/v4/groups/12345/-') }
+ it { is_expected.not_to match('/api/v4/groups/12345/-/packages') }
+ it { is_expected.not_to match('/api/v4/groups/12345/-/packages/') }
+ it { is_expected.not_to match('/api/v4/groups/12345/-/packages/50') }
+ it { is_expected.not_to match('/api/v4/groups/12345/packages') }
+ it { is_expected.not_to match('/api/v4/groups/12345/packages/') }
+ it { is_expected.not_to match('/api/v4/groups/12345/badges') }
+ it { is_expected.not_to match('/api/v4/groups/12345/issues') }
+ it { is_expected.not_to match('/api/v4/projects') }
+ it { is_expected.not_to match('/api/v4/projects/1234') }
+ it { is_expected.not_to match('/api/v4/projects/1234/packages') }
+ it { is_expected.not_to match('/api/v4/projects/1234/packages/') }
+ it { is_expected.not_to match('/api/v4/projects/1234/packages/50') }
+ it { is_expected.not_to match('/api/v4/projects/1234/packages/50/package_files') }
+ it { is_expected.not_to match('/api/v4/projects/1234/merge_requests') }
+ it { is_expected.not_to match('/api/v4/projects/1234/registry/repositories') }
+ it { is_expected.not_to match('/api/v4/projects/1234/issues') }
+ it { is_expected.not_to match('/api/v4/projects/1234/members') }
+ it { is_expected.not_to match('/api/v4/projects/1234/milestones') }
+
+ # Group level Debian API endpoints are not matched as it's not using the correct prefix (groups/:id/-/packages/)
+ # TODO: Update Debian group level endpoints urls and adjust this specs: https://gitlab.com/gitlab-org/gitlab/-/issues/326805
+ it { is_expected.not_to match('/api/v4/groups/1234/packages/debian/dists/stable/compon/binary-compo/Packages') }
+ it { is_expected.not_to match('/api/v4/groups/1234/packages/debian/dists/stable/InRelease') }
+ it { is_expected.not_to match('/api/v4/groups/1234/packages/debian/dists/stable/Release') }
+ it { is_expected.not_to match('/api/v4/groups/1234/packages/debian/dists/stable/Release.gpg') }
+ it { is_expected.not_to match('/api/v4/groups/1234/packages/debian/pool/compon/a/pkg/file.name') }
+ end
end