Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

index.spec.ts 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import { validPassword } from './index'
  2. import { VAR_REGEX, resetReg } from './index'
  3. describe('config test', () => {
  4. const passwordRegex = validPassword
  5. // Valid passwords
  6. test('Valid passwords: contains letter+digit, length ≥8', () => {
  7. expect(passwordRegex.test('password1')).toBe(true)
  8. expect(passwordRegex.test('PASSWORD1')).toBe(true)
  9. expect(passwordRegex.test('12345678a')).toBe(true)
  10. expect(passwordRegex.test('a1b2c3d4')).toBe(true)
  11. expect(passwordRegex.test('VeryLongPassword123')).toBe(true)
  12. expect(passwordRegex.test('short1')).toBe(false)
  13. })
  14. // Missing letter
  15. test('Invalid passwords: missing letter', () => {
  16. expect(passwordRegex.test('12345678')).toBe(false)
  17. expect(passwordRegex.test('!@#$%^&*123')).toBe(false)
  18. })
  19. // Missing digit
  20. test('Invalid passwords: missing digit', () => {
  21. expect(passwordRegex.test('password')).toBe(false)
  22. expect(passwordRegex.test('PASSWORD')).toBe(false)
  23. expect(passwordRegex.test('AbCdEfGh')).toBe(false)
  24. })
  25. // Too short
  26. test('Invalid passwords: less than 8 characters', () => {
  27. expect(passwordRegex.test('pass1')).toBe(false)
  28. expect(passwordRegex.test('abc123')).toBe(false)
  29. expect(passwordRegex.test('1a')).toBe(false)
  30. })
  31. // Boundary test
  32. test('Boundary test: exactly 8 characters', () => {
  33. expect(passwordRegex.test('abc12345')).toBe(true)
  34. expect(passwordRegex.test('1abcdefg')).toBe(true)
  35. })
  36. // Special characters
  37. test('Special characters: non-whitespace special chars allowed', () => {
  38. expect(passwordRegex.test('pass@123')).toBe(true)
  39. expect(passwordRegex.test('p@$$w0rd')).toBe(true)
  40. expect(passwordRegex.test('!1aBcDeF')).toBe(true)
  41. })
  42. // Contains whitespace
  43. test('Invalid passwords: contains whitespace', () => {
  44. expect(passwordRegex.test('pass word1')).toBe(false)
  45. expect(passwordRegex.test('password1 ')).toBe(false)
  46. expect(passwordRegex.test(' password1')).toBe(false)
  47. expect(passwordRegex.test('pass\tword1')).toBe(false)
  48. })
  49. it('matched variable names', () => {
  50. const vars = [
  51. // node output variables
  52. '{{#1749783300519.text#}}',
  53. '{{#1749783300519.llm.a#}}',
  54. '{{#1749783300519.llm.a.b.c#}}',
  55. '{{#1749783300519.llm.a#}}',
  56. // system variables
  57. '{{#sys.query#}}',
  58. // conversation variables
  59. '{{#conversation.aaa#}}',
  60. // env variables
  61. '{{#env.a#}}',
  62. // rag variables
  63. '{{#rag.1748945155129.a#}}',
  64. '{{#rag.shared.bbb#}}',
  65. ]
  66. vars.forEach((variable) => {
  67. expect(VAR_REGEX.test(variable)).toBe(true)
  68. resetReg()
  69. })
  70. })
  71. })