| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import { describe, expect, test, vi, beforeEach } from 'vitest'
- import SubdomainValidation from '~/services/validation/subdomainValidation'
- import type ApiRequestService from '~/services/data/apiRequestService'
- import type { 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' ||
- !Object.prototype.hasOwnProperty.call(query, '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' ||
- !Object.prototype.hasOwnProperty.call(query, 'subdomain') ||
- query.subdomain !== 'abc'
- ) {
- throw new Error('Invalid arguments')
- }
- // @ts-ignore
- return { available: false } as Response
- },
- )
- expect(await subdomainValidation.isAvailable('abc')).toBeFalsy()
- })
- })
|