diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-02-21 21:08:15 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-02-21 21:08:15 +0300 |
commit | 10c562403c5e2b842e1e833db80f890295fc2b40 (patch) | |
tree | 01392740fe1f126e5c91acc557f3b2269a8e2f9c /spec/frontend/lib | |
parent | 68dc19adb749288e0e5cd2469437be1093a8654c (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend/lib')
-rw-r--r-- | spec/frontend/lib/utils/ref_validator_spec.js | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/spec/frontend/lib/utils/ref_validator_spec.js b/spec/frontend/lib/utils/ref_validator_spec.js new file mode 100644 index 00000000000..7185ebf0a24 --- /dev/null +++ b/spec/frontend/lib/utils/ref_validator_spec.js @@ -0,0 +1,79 @@ +import { validateTag, validationMessages } from '~/lib/utils/ref_validator'; + +describe('~/lib/utils/ref_validator', () => { + describe('validateTag', () => { + describe.each([ + ['foo'], + ['FOO'], + ['foo/a.lockx'], + ['foo.123'], + ['foo/123'], + ['foo/bar/123'], + ['foo.bar.123'], + ['foo-bar_baz'], + ['head'], + ['"foo"-'], + ['foo@bar'], + ['\ud83e\udd8a'], + ['ünicöde'], + ['\x80}'], + ])('tag with the name "%s"', (tagName) => { + it('is valid', () => { + const result = validateTag(tagName); + expect(result.isValid).toBe(true); + expect(result.validationErrors).toEqual([]); + }); + }); + + describe.each([ + [' ', validationMessages.EmptyNameValidationMessage], + + ['refs/heads/tagName', validationMessages.DisallowedPrefixesValidationMessage], + ['/foo', validationMessages.DisallowedPrefixesValidationMessage], + ['-tagName', validationMessages.DisallowedPrefixesValidationMessage], + + ['HEAD', validationMessages.DisallowedNameValidationMessage], + ['@', validationMessages.DisallowedNameValidationMessage], + + ['tag name with spaces', validationMessages.DisallowedSubstringsValidationMessage], + ['tag\\name', validationMessages.DisallowedSubstringsValidationMessage], + ['tag^name', validationMessages.DisallowedSubstringsValidationMessage], + ['tag..name', validationMessages.DisallowedSubstringsValidationMessage], + ['..', validationMessages.DisallowedSubstringsValidationMessage], + ['tag?name', validationMessages.DisallowedSubstringsValidationMessage], + ['tag*name', validationMessages.DisallowedSubstringsValidationMessage], + ['tag[name', validationMessages.DisallowedSubstringsValidationMessage], + ['tag@{name', validationMessages.DisallowedSubstringsValidationMessage], + ['tag:name', validationMessages.DisallowedSubstringsValidationMessage], + ['tag~name', validationMessages.DisallowedSubstringsValidationMessage], + + ['/', validationMessages.DisallowedSequenceEmptyValidationMessage], + ['//', validationMessages.DisallowedSequenceEmptyValidationMessage], + ['foo//123', validationMessages.DisallowedSequenceEmptyValidationMessage], + + ['.', validationMessages.DisallowedSequencePrefixesValidationMessage], + ['/./', validationMessages.DisallowedSequencePrefixesValidationMessage], + ['./.', validationMessages.DisallowedSequencePrefixesValidationMessage], + ['.tagName', validationMessages.DisallowedSequencePrefixesValidationMessage], + ['tag/.Name', validationMessages.DisallowedSequencePrefixesValidationMessage], + ['foo/.123/bar', validationMessages.DisallowedSequencePrefixesValidationMessage], + + ['foo.', validationMessages.DisallowedSequencePostfixesValidationMessage], + ['a.lock', validationMessages.DisallowedSequencePostfixesValidationMessage], + ['foo/a.lock', validationMessages.DisallowedSequencePostfixesValidationMessage], + ['foo/a.lock/b', validationMessages.DisallowedSequencePostfixesValidationMessage], + ['foo.123.', validationMessages.DisallowedSequencePostfixesValidationMessage], + + ['foo/', validationMessages.DisallowedPostfixesValidationMessage], + + ['control-character\x7f', validationMessages.ControlCharactersValidationMessage], + ['control-character\x15', validationMessages.ControlCharactersValidationMessage], + ])('tag with name "%s"', (tagName, validationMessage) => { + it(`should be invalid with validation message "${validationMessage}"`, () => { + const result = validateTag(tagName); + expect(result.isValid).toBe(false); + expect(result.validationErrors).toContain(validationMessage); + }); + }); + }); +}); |