0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-03-24 22:41:28 -05:00

test: add default resource integration test

This commit is contained in:
Gao Sun 2023-06-02 23:35:17 +08:00
parent c933bf58f7
commit e8ed876878
No known key found for this signature in database
GPG key ID: 13EBE123E4773688
4 changed files with 29 additions and 1 deletions

View file

@ -40,6 +40,7 @@ export const mockResource: Resource = {
name: 'management api',
indicator: 'logto.dev/api',
accessTokenTtl: 3600,
isDefault: false,
};
export const mockResource2: Resource = {
@ -48,6 +49,7 @@ export const mockResource2: Resource = {
name: 'management api',
indicator: 'logto.dev/api',
accessTokenTtl: 3600,
isDefault: false,
};
export const mockResource3: Resource = {
@ -56,6 +58,7 @@ export const mockResource3: Resource = {
name: 'management api',
indicator: 'logto.dev/api',
accessTokenTtl: 3600,
isDefault: false,
};
export const mockScope: Scope = {

View file

@ -101,6 +101,7 @@ describe('resource routes', () => {
id: 'randomId',
name,
indicator,
isDefault: false,
accessTokenTtl,
scopes: [],
});
@ -157,7 +158,7 @@ describe('resource routes', () => {
});
});
it('PATCH /resources/:id should throw with invalid propreties', async () => {
it('PATCH /resources/:id should throw with invalid properties', async () => {
const response = await resourceRequest.patch('/resources/foo').send({ name: 12 });
expect(response.status).toEqual(400);
});

View file

@ -34,3 +34,8 @@ export const updateResource = async (
export const deleteResource = async (resourceId: string) =>
authedAdminApi.delete(`resources/${resourceId}`);
export const setDefaultResource = async (resourceId: string, isDefault = true) =>
authedAdminApi
.patch(`resources/${resourceId}/is-default`, { json: { isDefault } })
.json<Resource>();

View file

@ -7,6 +7,7 @@ import {
getResources,
updateResource,
deleteResource,
setDefaultResource,
} from '#src/api/index.js';
import { createResponseWithCode } from '#src/helpers/admin-tenant.js';
import { generateResourceIndicator, generateResourceName } from '#src/utils.js';
@ -124,4 +125,22 @@ describe('admin console api resources', () => {
const response = await deleteResource('dummy_id').catch((error: unknown) => error);
expect(response instanceof HTTPError && response.response.statusCode === 404).toBe(true);
});
it('be able to set only one default api resource', async () => {
const [resource1, resource2] = await Promise.all([
createResource(generateResourceName(), generateResourceIndicator()),
createResource(generateResourceName(), generateResourceIndicator()),
]);
await setDefaultResource(resource1.id);
await setDefaultResource(resource2.id);
const resources = await getResources();
const defaultData = resources.filter(({ isDefault }) => isDefault);
expect(defaultData).toHaveLength(1);
expect(defaultData[0]?.id).toBe(resource2.id);
await Promise.all([deleteResource(resource1.id), deleteResource(resource2.id)]);
});
});