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

feat: update PATCH /connectors/:id (#2469)

This commit is contained in:
Darcy Ye 2022-11-18 16:36:53 +08:00 committed by GitHub
parent b35d422e1d
commit 4dc4322504
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 45 additions and 20 deletions

View file

@ -20,7 +20,7 @@
},
"dependencies": {
"@logto/cli": "workspace:^",
"@logto/connector-kit": "1.0.0-beta.22",
"@logto/connector-kit": "1.0.0-beta.23",
"@logto/core-kit": "^1.0.0-beta.18",
"@logto/language-kit": "1.0.0-beta.21",
"@logto/phrases": "workspace:^",

View file

@ -132,20 +132,24 @@ export default function connectorRoutes<T extends AuthedRouter>(router: T) {
'/connectors/:id',
koaGuard({
params: object({ id: string().min(1) }),
body: Connectors.createGuard.omit({ id: true, enabled: true, createdAt: true }).partial(),
body: Connectors.createGuard.pick({ config: true, metadata: true }).partial(),
}),
async (ctx, next) => {
const {
params: { id },
body: { config },
body,
} = ctx.guard;
const { metadata, type, validateConfig } = await getLogtoConnectorById(id);
if (body.config) {
validateConfig(body.config);
if (config) {
validateConfig(config);
}
// FIXME @Darcy [LOG-4696]: revisit databaseMetadata check when implementing AC
const connector = await updateConnector({ set: body, where: { id }, jsonbMode: 'replace' });
ctx.body = { ...connector, metadata, type };

View file

@ -36,6 +36,7 @@ const getLogtoConnectorByIdPlaceholder = jest.fn(async (connectorId: string) =>
sendMessage: sendMessagePlaceHolder,
};
}) as jest.MockedFunction<(connectorId: string) => Promise<LogtoConnector>>;
const mockedUpdateConnector = updateConnector as jest.Mock;
const sendMessagePlaceHolder = jest.fn();
jest.mock('@/queries/connector', () => ({
@ -276,24 +277,44 @@ describe('connector PATCH routes', () => {
getLogtoConnectorsPlaceholder.mockResolvedValueOnce([
{
dbEntry: mockConnector,
metadata: mockMetadata,
type: ConnectorType.Sms,
metadata: { ...mockMetadata, isStandard: true },
type: ConnectorType.Social,
...mockLogtoConnector,
},
]);
const response = await connectorRequest
.patch('/connectors/id')
.send({ config: { cliend_id: 'client_id', client_secret: 'client_secret' } });
mockedUpdateConnector.mockResolvedValueOnce({
...mockConnector,
metadata: {
target: 'target',
name: { en: 'connector_name', fr: 'connector_name' },
logo: 'new_logo.png',
logoDark: null,
},
});
const response = await connectorRequest.patch('/connectors/id').send({
config: { cliend_id: 'client_id', client_secret: 'client_secret' },
metadata: {
target: 'target',
name: { en: 'connector_name', fr: 'connector_name' },
logo: 'new_logo.png',
logoDark: null,
},
});
expect(updateConnector).toHaveBeenCalledWith(
expect.objectContaining({
where: { id: 'id' },
set: { config: { cliend_id: 'client_id', client_secret: 'client_secret' } },
set: {
config: { cliend_id: 'client_id', client_secret: 'client_secret' },
metadata: {
target: 'target',
name: { en: 'connector_name', fr: 'connector_name' },
logo: 'new_logo.png',
logoDark: null,
},
},
jsonbMode: 'replace',
})
);
expect(response.body).toMatchObject({
metadata: mockMetadata,
});
expect(response).toHaveProperty('statusCode', 200);
});
});

View file

@ -67,7 +67,7 @@
},
"prettier": "@silverhand/eslint-config/.prettierrc",
"dependencies": {
"@logto/connector-kit": "1.0.0-beta.22",
"@logto/connector-kit": "1.0.0-beta.23",
"@logto/core-kit": "1.0.0-beta.21",
"@logto/language-kit": "1.0.0-beta.21",
"@logto/phrases": "workspace:^",

12
pnpm-lock.yaml generated
View file

@ -251,7 +251,7 @@ importers:
packages/core:
specifiers:
'@logto/cli': workspace:^
'@logto/connector-kit': 1.0.0-beta.22
'@logto/connector-kit': 1.0.0-beta.23
'@logto/core-kit': ^1.0.0-beta.18
'@logto/language-kit': 1.0.0-beta.21
'@logto/phrases': workspace:^
@ -329,7 +329,7 @@ importers:
zod: ^3.19.1
dependencies:
'@logto/cli': link:../cli
'@logto/connector-kit': 1.0.0-beta.22
'@logto/connector-kit': 1.0.0-beta.23
'@logto/core-kit': 1.0.0-beta.18
'@logto/language-kit': 1.0.0-beta.21
'@logto/phrases': link:../phrases
@ -575,7 +575,7 @@ importers:
packages/schemas:
specifiers:
'@logto/connector-kit': 1.0.0-beta.22
'@logto/connector-kit': 1.0.0-beta.23
'@logto/core-kit': 1.0.0-beta.21
'@logto/language-kit': 1.0.0-beta.21
'@logto/phrases': workspace:^
@ -600,7 +600,7 @@ importers:
typescript: ^4.7.4
zod: ^3.19.1
dependencies:
'@logto/connector-kit': 1.0.0-beta.22
'@logto/connector-kit': 1.0.0-beta.23
'@logto/core-kit': 1.0.0-beta.21
'@logto/language-kit': 1.0.0-beta.21
'@logto/phrases': link:../phrases
@ -2293,8 +2293,8 @@ packages:
lodash.once: 4.1.1
dev: true
/@logto/connector-kit/1.0.0-beta.22:
resolution: {integrity: sha512-ZlZup6yPaaWerpH53din/FcTfEK6M1M0TMh0W9CIYQtazGNilPWiJh1wo1iVZlFzC9KS+m/x2HDj41NVwKlHwQ==}
/@logto/connector-kit/1.0.0-beta.23:
resolution: {integrity: sha512-j5y/jH9mA+i2vk2xcfXPswHH8AfE5nC47C4SLQTWDwI+s4V6OL6A/d45qSqPcnj8orF4fn8GtA5F7YOsc/ty3w==}
engines: {node: ^16.0.0}
dependencies:
'@logto/core-kit': 1.0.0-beta.21