@dossierhq/integration-test
Version:
Integration test to ensure that different Dossier database adapters work as expected.
43 lines • 2.28 kB
JavaScript
/// <reference types="./AdvisoryLockReleaseSubSuite.d.ts" />
import { ErrorType } from '@dossierhq/core';
import { assertErrorResult, assertOkResult, assertResultValue } from '../Asserts.js';
export const AdvisoryLockReleaseSubSuite = [
releaseLock_minimal,
releaseLock_errorInvalidName,
releaseLock_errorInvalidHandle,
releaseLock_errorReadonlySession,
];
async function releaseLock_minimal({ clientProvider }) {
const client = clientProvider.dossierClient();
const acquireResult = await client.acquireAdvisoryLock('releaseLock_minimal', {
leaseDuration: 1_000,
});
assertOkResult(acquireResult);
const { name, handle } = acquireResult.value;
const releaseResult = await client.releaseAdvisoryLock(name, handle);
assertResultValue(releaseResult, { name });
const acquireAgainResult = await client.acquireAdvisoryLock('releaseLock_minimal', {
leaseDuration: 1,
});
assertOkResult(acquireAgainResult);
}
async function releaseLock_errorInvalidName({ clientProvider }) {
const client = clientProvider.dossierClient();
const releaseResult = await client.releaseAdvisoryLock('releaseLock_errorInvalidName', 123);
assertErrorResult(releaseResult, ErrorType.NotFound, "Failed releasing lock, no advisory lock with the name 'releaseLock_errorInvalidName' exists");
}
async function releaseLock_errorInvalidHandle({ clientProvider }) {
const client = clientProvider.dossierClient();
const acquireResult = await client.acquireAdvisoryLock('releaseLock_errorInvalidHandle', {
leaseDuration: 500,
});
assertOkResult(acquireResult);
const releaseResult = await client.releaseAdvisoryLock('releaseLock_errorInvalidHandle', acquireResult.value.handle + 1);
assertErrorResult(releaseResult, ErrorType.NotFound, "Invalid handle used for releasing lock 'releaseLock_errorInvalidHandle'");
}
async function releaseLock_errorReadonlySession({ clientProvider }) {
const client = clientProvider.dossierClient('main', 'readonly');
const result = await client.releaseAdvisoryLock('releaseLock_errorReadonlySession', 123);
assertErrorResult(result, ErrorType.BadRequest, 'Readonly session used to release advisory lock');
}
//# sourceMappingURL=AdvisoryLockReleaseSubSuite.js.map