# frozen_string_literal: true require 'spec_helper' describe Gitlab::Regex do describe '.project_name_regex' do subject { described_class.project_name_regex } it { is_expected.to match('gitlab-ce') } it { is_expected.to match('GitLab CE') } it { is_expected.to match('100 lines') } it { is_expected.to match('gitlab.git') } it { is_expected.to match('Český název') } it { is_expected.to match('Dash – is this') } it { is_expected.not_to match('?gitlab') } end describe '.environment_name_regex' do subject { described_class.environment_name_regex } it { is_expected.to match('foo') } it { is_expected.to match('a') } it { is_expected.to match('foo-1') } it { is_expected.to match('FOO') } it { is_expected.to match('foo/1') } it { is_expected.to match('foo.1') } it { is_expected.not_to match('9&foo') } it { is_expected.not_to match('foo-^') } it { is_expected.not_to match('!!()()') } it { is_expected.not_to match('/foo') } it { is_expected.not_to match('foo/') } it { is_expected.not_to match('/foo/') } it { is_expected.not_to match('/') } end describe '.environment_scope_regex' do subject { described_class.environment_scope_regex } it { is_expected.to match('foo') } it { is_expected.to match('foo*Z') } it { is_expected.not_to match('!!()()') } end describe '.environment_slug_regex' do subject { described_class.environment_slug_regex } it { is_expected.to match('foo') } it { is_expected.to match('foo-1') } it { is_expected.not_to match('FOO') } it { is_expected.not_to match('foo/1') } it { is_expected.not_to match('foo.1') } it { is_expected.not_to match('foo*1') } it { is_expected.not_to match('9foo') } it { is_expected.not_to match('foo-') } end describe '.container_repository_name_regex' do subject { described_class.container_repository_name_regex } it { is_expected.to match('image') } it { is_expected.to match('my/image') } it { is_expected.to match('my/awesome/image-1') } it { is_expected.to match('my/awesome/image.test') } it { is_expected.not_to match('.my/image') } it { is_expected.not_to match('my/image.') } end describe '.aws_account_id_regex' do subject { described_class.aws_account_id_regex } it { is_expected.to match('123456789012') } it { is_expected.not_to match('12345678901') } it { is_expected.not_to match('1234567890123') } it { is_expected.not_to match('12345678901a') } end describe '.aws_arn_regex' do subject { described_class.aws_arn_regex } it { is_expected.to match('arn:aws:iam::123456789012:role/role-name') } it { is_expected.to match('arn:aws:s3:::bucket/key') } it { is_expected.to match('arn:aws:ec2:us-east-1:123456789012:volume/vol-1') } it { is_expected.to match('arn:aws:rds:us-east-1:123456789012:pg:prod') } it { is_expected.not_to match('123456789012') } it { is_expected.not_to match('role/role-name') } end describe '.utc_date_regex' do subject { described_class.utc_date_regex } it { is_expected.to match('2019-10-20') } it { is_expected.to match('1990-01-01') } it { is_expected.not_to match('11-1234-90') } it { is_expected.not_to match('aa-1234-cc') } it { is_expected.not_to match('9/9/2018') } end end