mirror of
https://github.com/logto-io/logto.git
synced 2025-04-14 23:11:31 -05:00
chore(connector-core,core,phrases): use try catch on JSON.parse (#1857)
This commit is contained in:
parent
cfa67cae57
commit
c97d8610d9
10 changed files with 39 additions and 0 deletions
packages
connector-core/src
core/src/middleware
phrases/src/locales
|
@ -11,3 +11,16 @@ export function validateConfig<T>(config: unknown, guard: ZodType): asserts conf
|
|||
throw new ConnectorError(ConnectorErrorCodes.InvalidConfig, result.error);
|
||||
}
|
||||
}
|
||||
|
||||
export const parseJson = (
|
||||
jsonString: string,
|
||||
errorCode: ConnectorErrorCodes = ConnectorErrorCodes.InvalidResponse,
|
||||
errorPayload?: unknown
|
||||
) => {
|
||||
try {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
||||
return JSON.parse(jsonString);
|
||||
} catch {
|
||||
throw new ConnectorError(errorCode, errorPayload ?? jsonString);
|
||||
}
|
||||
};
|
||||
|
|
|
@ -24,6 +24,7 @@ export enum ConnectorErrorCodes {
|
|||
InvalidMetadata = 'invalid_metadata',
|
||||
UnexpectedType = 'unexpected_type',
|
||||
InvalidConfigGuard = 'invalid_config_guard',
|
||||
InvalidRequestParameters = 'invalid_request_parameters',
|
||||
InsufficientRequestParameters = 'insufficient_request_parameters',
|
||||
InvalidConfig = 'invalid_config',
|
||||
InvalidResponse = 'invalid_response',
|
||||
|
|
|
@ -23,6 +23,24 @@ describe('koaConnectorErrorHandler middleware', () => {
|
|||
await expect(koaConnectorErrorHandler()(ctx, next)).rejects.toMatchError(error);
|
||||
});
|
||||
|
||||
it('Invalid Request Parameters', async () => {
|
||||
const message = 'Mock Invalid Request Parameters';
|
||||
const error = new ConnectorError(ConnectorErrorCodes.InvalidRequestParameters, message);
|
||||
next.mockImplementationOnce(() => {
|
||||
throw error;
|
||||
});
|
||||
|
||||
await expect(koaConnectorErrorHandler()(ctx, next)).rejects.toMatchError(
|
||||
new RequestError(
|
||||
{
|
||||
code: 'connector.invalid_request_parameters',
|
||||
status: 400,
|
||||
},
|
||||
{ message }
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
it('Insufficient Request Parameters', async () => {
|
||||
const message = 'Mock Insufficient Request Parameters';
|
||||
const error = new ConnectorError(ConnectorErrorCodes.InsufficientRequestParameters, message);
|
||||
|
|
|
@ -23,6 +23,7 @@ export default function koaConnectorErrorHandler<StateT, ContextT>(): Middleware
|
|||
switch (code) {
|
||||
case ConnectorErrorCodes.InvalidMetadata:
|
||||
case ConnectorErrorCodes.InvalidConfigGuard:
|
||||
case ConnectorErrorCodes.InvalidRequestParameters:
|
||||
case ConnectorErrorCodes.InsufficientRequestParameters:
|
||||
case ConnectorErrorCodes.InvalidConfig:
|
||||
case ConnectorErrorCodes.InvalidResponse:
|
||||
|
|
|
@ -65,6 +65,7 @@ const errors = {
|
|||
invalid_metadata: "The connector's metadata is invalid.",
|
||||
invalid_config_guard: "The connector's config guard is invalid.",
|
||||
unexpected_type: "The connector's type is unexpected.",
|
||||
invalid_request_parameters: 'The request is with wrong input parameter(s).',
|
||||
insufficient_request_parameters: 'The request might miss some input parameters.',
|
||||
invalid_config: "The connector's config is invalid.",
|
||||
invalid_response: "The connector's response is invalid.",
|
||||
|
|
|
@ -70,6 +70,7 @@ const errors = {
|
|||
invalid_metadata: "The connector's metadata is invalid.", // UNTRANSLATED
|
||||
invalid_config_guard: "The connector's config guard is invalid.", // UNTRANSLATED
|
||||
unexpected_type: "The connector's type is unexpected.", // UNTRANSLATED
|
||||
invalid_request_parameters: 'The request is with wrong input parameter(s).', // UNTRANSLATED
|
||||
insufficient_request_parameters: 'Certains paramètres peuvent manquer dans la requête.',
|
||||
invalid_config: "La configuration du connecteur n'est pas valide.",
|
||||
invalid_response: "La réponse du connecteur n'est pas valide.",
|
||||
|
|
|
@ -64,6 +64,7 @@ const errors = {
|
|||
invalid_metadata: "The connector's metadata is invalid.", // UNTRANSLATED
|
||||
invalid_config_guard: "The connector's config guard is invalid.", // UNTRANSLATED
|
||||
unexpected_type: "The connector's type is unexpected.", // UNTRANSLATED
|
||||
invalid_request_parameters: 'The request is with wrong input parameter(s).', // UNTRANSLATED
|
||||
insufficient_request_parameters: '요청 데이터에서 일부 정보가 없어요.',
|
||||
invalid_config: '연동 설정이 유효하지 않아요.',
|
||||
invalid_response: '연동 응답이 유효하지 않아요.',
|
||||
|
|
|
@ -66,6 +66,7 @@ const errors = {
|
|||
invalid_metadata: 'Os metadados do conector são inválidos.',
|
||||
invalid_config_guard: 'A configuração de proteção do conector é inválida.',
|
||||
unexpected_type: 'O tipo do conector é inesperado.',
|
||||
invalid_request_parameters: 'The request is with wrong input parameter(s).', // UNTRANSLATED
|
||||
insufficient_request_parameters: 'A solicitação pode perder alguns parâmetros de entrada.',
|
||||
invalid_config: 'A configuração do conector é inválida.',
|
||||
invalid_response: 'A resposta do conector é inválida.',
|
||||
|
|
|
@ -66,6 +66,7 @@ const errors = {
|
|||
invalid_metadata: "The connector's metadata is invalid.", // UNTRANSLATED
|
||||
invalid_config_guard: "The connector's config guard is invalid.", // UNTRANSLATED
|
||||
unexpected_type: "The connector's type is unexpected.", // UNTRANSLATED
|
||||
invalid_request_parameters: 'The request is with wrong input parameter(s).', // UNTRANSLATED
|
||||
insufficient_request_parameters: 'İstek, bazı input parametrelerini atlayabilir.',
|
||||
invalid_config: 'Bağlayıcının ayarları geçersiz.',
|
||||
invalid_response: 'Bağlayıcının yanıtı geçersiz.',
|
||||
|
|
|
@ -65,6 +65,7 @@ const errors = {
|
|||
invalid_config_guard: '连接器配置 guard 错误',
|
||||
unexpected_type: '连接器类型错误',
|
||||
insufficient_request_parameters: '请求参数缺失',
|
||||
invalid_request_parameters: '请求参数错误',
|
||||
invalid_config: '连接器配置错误',
|
||||
invalid_response: '连接器错误响应',
|
||||
template_not_found: '无法从连接器配置中找到对应的模板',
|
||||
|
|
Loading…
Add table
Reference in a new issue