diff --git a/package.json b/package.json index a7155eb..44b5b49 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@zeit/schemas", - "version": "2.36.0", + "version": "2.37.0", "description": "All schemas used for validation that are shared between our projects", "scripts": { "test": "yarn run lint && best --verbose", diff --git a/test/user.js b/test/user.js index f6eacad..fe4d8fc 100644 --- a/test/user.js +++ b/test/user.js @@ -25,7 +25,7 @@ exports.test_username_invalid_pattern = () => { assert.equal(ajv.errors[0].dataPath, '.username'); assert.equal( ajv.errors[0].message, - 'should match pattern "^[a-z0-9][a-z0-9-]*[a-z0-9]$"' + 'should match pattern "^(?!-)(?:[a-z0-9-]{1,48})(? { assert.equal(ajv.errors[1].dataPath, '.username'); assert.equal( ajv.errors[1].message, - 'should match pattern "^[a-z0-9][a-z0-9-]*[a-z0-9]$"' + 'should match pattern "^(?!-)(?:[a-z0-9-]{1,48})(? { - const isValid = ajv.validate(User, { - username: 'a'.repeat(50) - }); + const username = 'a'.repeat(50); + const isValid = ajv.validate(User, { username }); assert.equal(isValid, false); - assert.equal(ajv.errors.length, 1); + assert.equal(ajv.errors.length, 2); assert.equal(ajv.errors[0].dataPath, '.username'); assert.equal( ajv.errors[0].message, 'should NOT be longer than 48 characters' ); + assert.equal( + ajv.errors[1].message, + 'should match pattern "^(?!-)(?:[a-z0-9-]{1,48})(? { @@ -65,6 +68,11 @@ exports.test_username_valid = () => { assert(ajv.validate(User, { username: 'rauchg' })); }; +exports.test_username_one_char = () => { + assert(ajv.validate(User, { username: 'a' })); + assert(ajv.validate(User, { username: '1' })); +}; + // Name exports.test_name_too_short = () => { const isValid = ajv.validate(User, { diff --git a/user/index.js b/user/index.js index 714e62d..50b995d 100644 --- a/user/index.js +++ b/user/index.js @@ -2,7 +2,7 @@ const Username = { type: 'string', minLength: 1, maxLength: 48, - pattern: '^[a-z0-9][a-z0-9-]*[a-z0-9]$' + pattern: '^(?!-)(?:[a-z0-9-]{1,48})(?