| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import {describe, expect, test} from "vitest";
- import SubdomainValidation from "~/services/validation/subdomainValidation";
- import ApiRequestService from "~/services/data/apiRequestService";
- import {AssociativeArray} from "~/types/data";
- let subdomainValidation: SubdomainValidation
- let apiRequestService: ApiRequestService
- beforeEach(() => {
- // @ts-ignore
- apiRequestService = vi.fn() as ApiRequestService
- subdomainValidation = new SubdomainValidation(apiRequestService)
- })
- describe('isValid', () => {
- test('simple cases', () => {
- expect(SubdomainValidation.isValid("abcd")).toBeTruthy()
- expect(SubdomainValidation.isValid("abc-def")).toBeTruthy()
- expect(SubdomainValidation.isValid("abc-123")).toBeTruthy()
- expect(SubdomainValidation.isValid("abcdefghijklmnopqrstuvwxyz0123456789")).toBeTruthy()
- expect(SubdomainValidation.isValid("0123456789-0123456789-0123456789-0123456789-0123456789-0123456789-0123456789")).toBeFalsy() // Too long
- expect(SubdomainValidation.isValid("a")).toBeFalsy()
- expect(SubdomainValidation.isValid("abc_def")).toBeFalsy()
- expect(SubdomainValidation.isValid("abc%")).toBeFalsy()
- expect(SubdomainValidation.isValid("ab/")).toBeFalsy()
- expect(SubdomainValidation.isValid("ab cd")).toBeFalsy()
- expect(SubdomainValidation.isValid("-abcd")).toBeFalsy()
- expect(SubdomainValidation.isValid("abcd-")).toBeFalsy()
- })
- })
- describe('isAvailable', () => {
- test('is available', async () => {
- apiRequestService.get = vi.fn(async (url: string, query: AssociativeArray) => {
- if (url !== '/api/subdomains/is_available' || !query.hasOwnProperty('subdomain') || query['subdomain'] !== 'abc' ) {
- throw new Error("Invalid arguments")
- }
- // @ts-ignore
- return {"available": true} as Response
- })
- expect(await subdomainValidation.isAvailable('abc')).toBeTruthy()
- })
- test('is not available', async () => {
- apiRequestService.get = vi.fn(async (url: string, query: AssociativeArray) => {
- if (url !== '/api/subdomains/is_available' || !query.hasOwnProperty('subdomain') || query['subdomain'] !== 'abc' ) {
- throw new Error("Invalid arguments")
- }
- // @ts-ignore
- return {"available": false} as Response
- })
- expect(await subdomainValidation.isAvailable('abc')).toBeFalsy()
- })
- })
|