fix(plugins): preserve unavailable release failures
This commit is contained in:
@@ -122,6 +122,33 @@ describe('MarketplaceHostedAdmissionResolver', () => {
|
||||
expect(error).toMatchObject({ code: 'plugin_runtime_stale', status: 409, retryable: false });
|
||||
});
|
||||
|
||||
it.each([
|
||||
'plugin_release_not_ready',
|
||||
'plugin_client_incompatible',
|
||||
])('preserves an explicit unavailable Release as plugin_release_unavailable (%s)', async (reason) => {
|
||||
const marketplace = {
|
||||
resolve: vi.fn(async () => resolved({
|
||||
action: 'unavailable',
|
||||
releaseAdmissionId: null,
|
||||
reason,
|
||||
})),
|
||||
} as unknown as Pick<MarketplacePackageClientPort, 'resolve'>;
|
||||
const unavailableResolver = new MarketplaceHostedAdmissionResolver({
|
||||
packageStore: { getInstalledRelease: vi.fn(async () => installed()) } as unknown as Pick<PluginPackageStore, 'getInstalledRelease'>,
|
||||
marketplace,
|
||||
makeloreVersion: '1.2.4',
|
||||
});
|
||||
|
||||
await expect(unavailableResolver.resolve({
|
||||
pluginId: PLUGIN_ID,
|
||||
workerSnapshot: { requestId: REQUEST_ID, pluginReleaseId: RELEASE_ID },
|
||||
})).rejects.toMatchObject({
|
||||
code: 'plugin_release_unavailable',
|
||||
status: 409,
|
||||
retryable: false,
|
||||
});
|
||||
});
|
||||
|
||||
it('projects an account change as a typed non-retryable worker failure', async () => {
|
||||
const { resolver, resolve } = resolverFixture();
|
||||
resolve.mockRejectedValueOnce({ code: 'marketplace_account_changed' });
|
||||
|
||||
Reference in New Issue
Block a user