You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.spec.ts 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { validPassword } from './index'
  2. describe('validPassword Tests', () => {
  3. const passwordRegex = validPassword
  4. // Valid passwords
  5. test('Valid passwords: contains letter+digit, length ≥8', () => {
  6. expect(passwordRegex.test('password1')).toBe(true)
  7. expect(passwordRegex.test('PASSWORD1')).toBe(true)
  8. expect(passwordRegex.test('12345678a')).toBe(true)
  9. expect(passwordRegex.test('a1b2c3d4')).toBe(true)
  10. expect(passwordRegex.test('VeryLongPassword123')).toBe(true)
  11. expect(passwordRegex.test('short1')).toBe(false)
  12. })
  13. // Missing letter
  14. test('Invalid passwords: missing letter', () => {
  15. expect(passwordRegex.test('12345678')).toBe(false)
  16. expect(passwordRegex.test('!@#$%^&*123')).toBe(false)
  17. })
  18. // Missing digit
  19. test('Invalid passwords: missing digit', () => {
  20. expect(passwordRegex.test('password')).toBe(false)
  21. expect(passwordRegex.test('PASSWORD')).toBe(false)
  22. expect(passwordRegex.test('AbCdEfGh')).toBe(false)
  23. })
  24. // Too short
  25. test('Invalid passwords: less than 8 characters', () => {
  26. expect(passwordRegex.test('pass1')).toBe(false)
  27. expect(passwordRegex.test('abc123')).toBe(false)
  28. expect(passwordRegex.test('1a')).toBe(false)
  29. })
  30. // Boundary test
  31. test('Boundary test: exactly 8 characters', () => {
  32. expect(passwordRegex.test('abc12345')).toBe(true)
  33. expect(passwordRegex.test('1abcdefg')).toBe(true)
  34. })
  35. // Special characters
  36. test('Special characters: non-whitespace special chars allowed', () => {
  37. expect(passwordRegex.test('pass@123')).toBe(true)
  38. expect(passwordRegex.test('p@$$w0rd')).toBe(true)
  39. expect(passwordRegex.test('!1aBcDeF')).toBe(true)
  40. })
  41. // Contains whitespace
  42. test('Invalid passwords: contains whitespace', () => {
  43. expect(passwordRegex.test('pass word1')).toBe(false)
  44. expect(passwordRegex.test('password1 ')).toBe(false)
  45. expect(passwordRegex.test(' password1')).toBe(false)
  46. expect(passwordRegex.test('pass\tword1')).toBe(false)
  47. })
  48. })