From 87a73b3fceb8e81f56a628a88d0ff50d4275b6e2 Mon Sep 17 00:00:00 2001 From: Ben Wheeler Date: Wed, 23 Oct 2019 17:01:58 -0400 Subject: [PATCH 1/3] allow underscores in username --- src/lib/validate.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/validate.js b/src/lib/validate.js index 5df20b0e4..6a11dedf7 100644 --- a/src/lib/validate.js +++ b/src/lib/validate.js @@ -9,7 +9,7 @@ module.exports.validateUsernameLocally = username => { return {valid: false, errMsgId: 'registration.validationUsernameMinLength'}; } else if (username.length > 20) { return {valid: false, errMsgId: 'registration.validationUsernameMaxLength'}; - } else if (!/^[\w-]+$/i.test(username)) { + } else if (!/^[\w_-]+$/i.test(username)) { return {valid: false, errMsgId: 'registration.validationUsernameRegexp'}; } return {valid: true}; From a9810b6a1f9b94489c162ab507c97935b595984d Mon Sep 17 00:00:00 2001 From: Ben Wheeler Date: Wed, 30 Oct 2019 15:16:15 -0400 Subject: [PATCH 2/3] revised username tests to separate them, make them clearer --- test/unit/lib/validate.test.js | 40 +++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/test/unit/lib/validate.test.js b/test/unit/lib/validate.test.js index a051e1faa..6074736d5 100644 --- a/test/unit/lib/validate.test.js +++ b/test/unit/lib/validate.test.js @@ -1,27 +1,55 @@ const validate = require('../../../src/lib/validate'); describe('unit test lib/validate.js', () => { - test('validate username locally', () => { + + test('validate username exists locally', () => { let response; expect(typeof validate.validateUsernameLocally).toBe('function'); response = validate.validateUsernameLocally('abc'); expect(response).toEqual({valid: true}); - response = validate.validateUsernameLocally('abcdefghijklmnopqrst'); - expect(response).toEqual({valid: true}); - response = validate.validateUsernameLocally('abc-def-ghi'); - expect(response).toEqual({valid: true}); response = validate.validateUsernameLocally(''); expect(response).toEqual({valid: false, errMsgId: 'general.required'}); + }); + + test('validate username length locally', () => { + let response; + response = validate.validateUsernameLocally('abcdefghijklmnopqrst'); + expect(response).toEqual({valid: true}); response = validate.validateUsernameLocally('ab'); expect(response).toEqual({valid: false, errMsgId: 'registration.validationUsernameMinLength'}); response = validate.validateUsernameLocally('abcdefghijklmnopqrstu'); expect(response).toEqual({valid: false, errMsgId: 'registration.validationUsernameMaxLength'}); - response = validate.validateUsernameLocally('abc def'); + }); + + test('validate username hyphens allowed', () => { + const response = validate.validateUsernameLocally('-abc-def-ghi-'); + expect(response).toEqual({valid: true}); + }); + + test('validate username underscores allowed', () => { + const response = validate.validateUsernameLocally('_abc_def_ghi_'); + expect(response).toEqual({valid: true}); + }); + + test('validate username spaces not allowed', () => { + const response = validate.validateUsernameLocally('abc def'); expect(response).toEqual({valid: false, errMsgId: 'registration.validationUsernameRegexp'}); + }); + + test('validate username special chars not allowed', () => { + let response; response = validate.validateUsernameLocally('abc!def'); expect(response).toEqual({valid: false, errMsgId: 'registration.validationUsernameRegexp'}); + response = validate.validateUsernameLocally('amiascratcher?'); + expect(response).toEqual({valid: false, errMsgId: 'registration.validationUsernameRegexp'}); + }); + + test('validate username unicode chars not allowed', () => { + let response; response = validate.validateUsernameLocally('abc😄def'); expect(response).toEqual({valid: false, errMsgId: 'registration.validationUsernameRegexp'}); + response = validate.validateUsernameLocally('🦆🦆🦆😺😺😺'); + expect(response).toEqual({valid: false, errMsgId: 'registration.validationUsernameRegexp'}); }); test('validate password', () => { From 24fd824e72ecf5876dce28af281679977f83793a Mon Sep 17 00:00:00 2001 From: Ben Wheeler Date: Mon, 4 Nov 2019 11:59:17 -0500 Subject: [PATCH 3/3] removed unnecessary underscore --- src/lib/validate.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/validate.js b/src/lib/validate.js index 6a11dedf7..5df20b0e4 100644 --- a/src/lib/validate.js +++ b/src/lib/validate.js @@ -9,7 +9,7 @@ module.exports.validateUsernameLocally = username => { return {valid: false, errMsgId: 'registration.validationUsernameMinLength'}; } else if (username.length > 20) { return {valid: false, errMsgId: 'registration.validationUsernameMaxLength'}; - } else if (!/^[\w_-]+$/i.test(username)) { + } else if (!/^[\w-]+$/i.test(username)) { return {valid: false, errMsgId: 'registration.validationUsernameRegexp'}; } return {valid: true};