UNPKG

@dossierhq/integration-test

Version:

Integration test to ensure that different Dossier database adapters work as expected.

88 lines 4.57 kB
/// <reference types="./PublishedEntityGetEntityListSubSuite.d.ts" /> import { notOk, ok, Schema } from '@dossierhq/core'; import { assertEquals, assertOkResult, assertResultValue } from '../Asserts.js'; import { adminToPublishedEntity, SUBJECT_ONLY_CREATE, TITLE_ONLY_CREATE, } from '../shared-entity/Fixtures.js'; export const GetEntityListSubSuite = [ getEntityList_minimal, getEntityList_none, getEntityList_authKeySubjectOneCorrectOneWrong, getEntityList_oneMissingOneExisting, getEntityList_errorArchivedEntity, getEntityList_errorWrongAuthKeyFromReadonlyRandom, ]; async function getEntityList_minimal({ clientProvider }) { const client = clientProvider.dossierClient(); const publishedClient = clientProvider.publishedClient(); const schema = new Schema((await client.getSchemaSpecification()).valueOrThrow()); const create1Result = await client.createEntity(TITLE_ONLY_CREATE, { publish: true }); const create2Result = await client.createEntity(TITLE_ONLY_CREATE, { publish: true }); assertOkResult(create1Result); assertOkResult(create2Result); const { entity: { id: id1 }, } = create1Result.value; const { entity: { id: id2 }, } = create2Result.value; const getResult = await publishedClient.getEntityList([{ id: id1 }, { id: id2 }]); assertOkResult(getResult); const [get1Result, get2Result] = getResult.value; assertOkResult(get1Result); assertOkResult(get2Result); assertEquals(get1Result.value, adminToPublishedEntity(schema, create1Result.value.entity)); assertEquals(get2Result.value, adminToPublishedEntity(schema, create2Result.value.entity)); } async function getEntityList_none({ clientProvider }) { const result = await clientProvider.publishedClient().getEntityList([]); assertResultValue(result, []); } async function getEntityList_authKeySubjectOneCorrectOneWrong({ clientProvider, }) { const primaryClient = clientProvider.dossierClient(); const schema = new Schema((await primaryClient.getSchemaSpecification()).valueOrThrow()); const create1Result = await clientProvider .dossierClient('secondary') .createEntity(SUBJECT_ONLY_CREATE, { publish: true }); const create2Result = await primaryClient.createEntity(SUBJECT_ONLY_CREATE, { publish: true, }); assertOkResult(create1Result); assertOkResult(create2Result); const { entity: { id: id1 }, } = create1Result.value; const { entity: { id: id2 }, } = create2Result.value; const getResult = await clientProvider .publishedClient() .getEntityList([{ id: id1 }, { id: id2 }]); assertResultValue(getResult, [ notOk.NotAuthorized('Wrong authKey provided'), ok(adminToPublishedEntity(schema, create2Result.value.entity)), ]); } async function getEntityList_oneMissingOneExisting({ clientProvider }) { const client = clientProvider.dossierClient(); const schema = new Schema((await client.getSchemaSpecification()).valueOrThrow()); const createResult = await client.createEntity(TITLE_ONLY_CREATE, { publish: true }); const { entity } = createResult.valueOrThrow(); const getResult = await clientProvider .publishedClient() .getEntityList([{ id: 'f09fdd62-4a1e-4320-afba-8dd0781799df' }, { id: entity.id }]); assertResultValue(getResult, [ notOk.NotFound('No such entity'), ok(adminToPublishedEntity(schema, entity)), ]); } async function getEntityList_errorArchivedEntity({ clientProvider }) { const client = clientProvider.dossierClient(); const publishedClient = clientProvider.publishedClient(); const createResult = await client.createEntity(TITLE_ONLY_CREATE); assertOkResult(createResult); const { entity: { id }, } = createResult.value; const archiveResult = await client.archiveEntity({ id }); assertOkResult(archiveResult); const result = await publishedClient.getEntityList([{ id }]); assertResultValue(result, [notOk.NotFound('No such entity')]); } async function getEntityList_errorWrongAuthKeyFromReadonlyRandom({ clientProvider, }) { const primaryClient = clientProvider.dossierClient(); const { entity } = (await primaryClient.createEntity(SUBJECT_ONLY_CREATE, { publish: true })).valueOrThrow(); const getResult = await clientProvider .publishedClient('random', 'readonly') .getEntityList([{ id: entity.id }]); assertResultValue(getResult, [notOk.NotAuthorized('Wrong authKey provided')]); } //# sourceMappingURL=PublishedEntityGetEntityListSubSuite.js.map