subdomainValidation.test.ts 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import {describe, expect, test} from "vitest";
  2. import SubdomainValidation from "~/services/validation/subdomainValidation";
  3. import ApiRequestService from "~/services/data/apiRequestService";
  4. import {AssociativeArray} from "~/types/data";
  5. let subdomainValidation: SubdomainValidation
  6. let apiRequestService: ApiRequestService
  7. beforeEach(() => {
  8. // @ts-ignore
  9. apiRequestService = vi.fn() as ApiRequestService
  10. subdomainValidation = new SubdomainValidation(apiRequestService)
  11. })
  12. describe('isValid', () => {
  13. test('simple cases', () => {
  14. expect(SubdomainValidation.isValid("abcd")).toBeTruthy()
  15. expect(SubdomainValidation.isValid("abc-def")).toBeTruthy()
  16. expect(SubdomainValidation.isValid("abc-123")).toBeTruthy()
  17. expect(SubdomainValidation.isValid("abcdefghijklmnopqrstuvwxyz0123456789")).toBeTruthy()
  18. expect(SubdomainValidation.isValid("0123456789-0123456789-0123456789-0123456789-0123456789-0123456789-0123456789")).toBeFalsy() // Too long
  19. expect(SubdomainValidation.isValid("a")).toBeFalsy()
  20. expect(SubdomainValidation.isValid("abc_def")).toBeFalsy()
  21. expect(SubdomainValidation.isValid("abc%")).toBeFalsy()
  22. expect(SubdomainValidation.isValid("ab/")).toBeFalsy()
  23. expect(SubdomainValidation.isValid("ab cd")).toBeFalsy()
  24. expect(SubdomainValidation.isValid("-abcd")).toBeFalsy()
  25. expect(SubdomainValidation.isValid("abcd-")).toBeFalsy()
  26. })
  27. })
  28. describe('isAvailable', () => {
  29. test('is available', async () => {
  30. apiRequestService.get = vi.fn(async (url: string, query: AssociativeArray) => {
  31. if (url !== '/api/subdomains/is_available' || !query.hasOwnProperty('subdomain') || query['subdomain'] !== 'abc' ) {
  32. throw new Error("Invalid arguments")
  33. }
  34. // @ts-ignore
  35. return {"available": true} as Response
  36. })
  37. expect(await subdomainValidation.isAvailable('abc')).toBeTruthy()
  38. })
  39. test('is not available', async () => {
  40. apiRequestService.get = vi.fn(async (url: string, query: AssociativeArray) => {
  41. if (url !== '/api/subdomains/is_available' || !query.hasOwnProperty('subdomain') || query['subdomain'] !== 'abc' ) {
  42. throw new Error("Invalid arguments")
  43. }
  44. // @ts-ignore
  45. return {"available": false} as Response
  46. })
  47. expect(await subdomainValidation.isAvailable('abc')).toBeFalsy()
  48. })
  49. })