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:
parent
b35d422e1d
commit
4dc4322504
5 changed files with 45 additions and 20 deletions
|
@ -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:^",
|
||||
|
|
|
@ -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 };
|
||||
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -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
12
pnpm-lock.yaml
generated
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue