|
@@ -0,0 +1,58 @@
|
|
|
|
|
+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()
|
|
|
|
|
+ })
|
|
|
|
|
+})
|