Files
caprover/tests/CustomDomainUniqueness.test.ts

48 lines
1.6 KiB
TypeScript

import AppsDataStore from '../src/datastore/AppsDataStore'
describe('custom domain ownership', () => {
test('rejects a domain already attached to another app', async () => {
const appsDataStore = new AppsDataStore({} as any, 'captain')
jest.spyOn(appsDataStore, 'getAppDefinitions').mockResolvedValue({
'first-app': {
customDomain: [
{
publicDomain: 'Shared.Example.Test',
hasSsl: false,
},
],
} as any,
'second-app': { customDomain: [] } as any,
})
await expect(
appsDataStore.ensureCustomDomainIsAvailable(
'second-app',
'shared.example.test'
)
).rejects.toMatchObject({
captainErrorType: 1110,
apiMessage:
'Custom domain shared.example.test is already attached to app first-app',
})
})
test('allows the app that already owns the domain', async () => {
const appsDataStore = new AppsDataStore({} as any, 'captain')
jest.spyOn(appsDataStore, 'getAppDefinitions').mockResolvedValue({
'first-app': {
customDomain: [
{ publicDomain: 'shared.example.test', hasSsl: false },
],
} as any,
})
await expect(
appsDataStore.ensureCustomDomainIsAvailable(
'first-app',
'shared.example.test'
)
).resolves.toBeUndefined()
})
})