From df886259bd08881a933ea699b01f7c978d946d64 Mon Sep 17 00:00:00 2001 From: Rhon Joe Date: Mon, 14 Jul 2025 09:32:34 +0800 Subject: [PATCH] test(web): add password regexp test case (#22308) --- web/config/index.spec.ts | 56 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 web/config/index.spec.ts diff --git a/web/config/index.spec.ts b/web/config/index.spec.ts new file mode 100644 index 000000000..de3ee7284 --- /dev/null +++ b/web/config/index.spec.ts @@ -0,0 +1,56 @@ +import { validPassword } from './index' + +describe('validPassword Tests', () => { + const passwordRegex = validPassword + + // Valid passwords + test('Valid passwords: contains letter+digit, length ≥8', () => { + expect(passwordRegex.test('password1')).toBe(true) + expect(passwordRegex.test('PASSWORD1')).toBe(true) + expect(passwordRegex.test('12345678a')).toBe(true) + expect(passwordRegex.test('a1b2c3d4')).toBe(true) + expect(passwordRegex.test('VeryLongPassword123')).toBe(true) + expect(passwordRegex.test('short1')).toBe(false) + }) + + // Missing letter + test('Invalid passwords: missing letter', () => { + expect(passwordRegex.test('12345678')).toBe(false) + expect(passwordRegex.test('!@#$%^&*123')).toBe(false) + }) + + // Missing digit + test('Invalid passwords: missing digit', () => { + expect(passwordRegex.test('password')).toBe(false) + expect(passwordRegex.test('PASSWORD')).toBe(false) + expect(passwordRegex.test('AbCdEfGh')).toBe(false) + }) + + // Too short + test('Invalid passwords: less than 8 characters', () => { + expect(passwordRegex.test('pass1')).toBe(false) + expect(passwordRegex.test('abc123')).toBe(false) + expect(passwordRegex.test('1a')).toBe(false) + }) + + // Boundary test + test('Boundary test: exactly 8 characters', () => { + expect(passwordRegex.test('abc12345')).toBe(true) + expect(passwordRegex.test('1abcdefg')).toBe(true) + }) + + // Special characters + test('Special characters: non-whitespace special chars allowed', () => { + expect(passwordRegex.test('pass@123')).toBe(true) + expect(passwordRegex.test('p@$$w0rd')).toBe(true) + expect(passwordRegex.test('!1aBcDeF')).toBe(true) + }) + + // Contains whitespace + test('Invalid passwords: contains whitespace', () => { + expect(passwordRegex.test('pass word1')).toBe(false) + expect(passwordRegex.test('password1 ')).toBe(false) + expect(passwordRegex.test(' password1')).toBe(false) + expect(passwordRegex.test('pass\tword1')).toBe(false) + }) +})