0
Fork 0
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 ()

This commit is contained in:
Darcy Ye 2022-09-06 02:40:35 +08:00 committed by GitHub
parent cfa67cae57
commit c97d8610d9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 39 additions and 0 deletions

View file

@ -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);
}
};

View file

@ -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',

View file

@ -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);

View file

@ -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:

View file

@ -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.",

View file

@ -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.",

View file

@ -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: '연동 응답이 유효하지 않아요.',

View file

@ -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.',

View file

@ -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.',

View file

@ -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: '无法从连接器配置中找到对应的模板',