0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-04-07 23:01:25 -05:00

feat: add GET /connector-factories (#2480)

This commit is contained in:
Darcy Ye 2022-11-24 17:35:39 +08:00 committed by GitHub
parent 1e0a21a703
commit c93200f431
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 37 additions and 1 deletions

View file

@ -23,7 +23,13 @@ import {
mockMetadata6,
} from './connector-base-data.js';
export { mockMetadata } from './connector-base-data.js';
export {
mockMetadata,
mockMetadata0,
mockMetadata1,
mockMetadata2,
mockMetadata3,
} from './connector-base-data.js';
export const mockConnector: Connector = {
id: 'id',

View file

@ -5,6 +5,10 @@ import { any } from 'zod';
import {
mockMetadata,
mockMetadata0,
mockMetadata1,
mockMetadata2,
mockMetadata3,
mockConnector,
mockConnectorFactory,
mockLogtoConnectorList,
@ -81,6 +85,25 @@ describe('connector route', () => {
});
});
describe('GET /connector-factories', () => {
it('show all connector factories', async () => {
(loadConnectorFactoriesPlaceHolder as jest.Mock).mockResolvedValueOnce([
{ ...mockConnectorFactory, metadata: mockMetadata0, type: ConnectorType.Sms },
{ ...mockConnectorFactory, metadata: mockMetadata1, type: ConnectorType.Social },
{ ...mockConnectorFactory, metadata: mockMetadata2, type: ConnectorType.Email },
{ ...mockConnectorFactory, metadata: mockMetadata3, type: ConnectorType.Social },
]);
const response = await connectorRequest.get('/connector-factories').send({});
expect(response.body).toMatchObject([
{ ...mockMetadata0, type: ConnectorType.Sms },
{ ...mockMetadata1, type: ConnectorType.Social },
{ ...mockMetadata2, type: ConnectorType.Email },
{ ...mockMetadata3, type: ConnectorType.Social },
]);
expect(response).toHaveProperty('statusCode', 200);
});
});
describe('GET /connectors/:id', () => {
afterEach(() => {
jest.clearAllMocks();

View file

@ -71,6 +71,13 @@ export default function connectorRoutes<T extends AuthedRouter>(router: T) {
}
);
router.get('/connector-factories', async (ctx, next) => {
const connectorFactories = await loadConnectorFactories();
ctx.body = connectorFactories.map(({ metadata, type }) => ({ type, ...metadata }));
return next();
});
router.get(
'/connectors/:id',
koaGuard({ params: object({ id: string().min(1) }) }),