Skip to content
Snippets Groups Projects
Unverified Commit 1405689c authored by RahulGautamSingh's avatar RahulGautamSingh Committed by GitHub
Browse files

fix(datasource/custom): better logging for jsonata errors (#31520)

parent 8724a8e0
No related branches found
No related tags found
No related merge requests found
...@@ -3,6 +3,7 @@ import { getPkgReleases } from '..'; ...@@ -3,6 +3,7 @@ import { getPkgReleases } from '..';
import { Fixtures } from '../../../../test/fixtures'; import { Fixtures } from '../../../../test/fixtures';
import * as httpMock from '../../../../test/http-mock'; import * as httpMock from '../../../../test/http-mock';
import { fs } from '../../../../test/util'; import { fs } from '../../../../test/util';
import { logger } from '../../../logger';
import { CustomDatasource } from './index'; import { CustomDatasource } from './index';
jest.mock('../../../util/fs'); jest.mock('../../../util/fs');
...@@ -228,6 +229,31 @@ describe('modules/datasource/custom/index', () => { ...@@ -228,6 +229,31 @@ describe('modules/datasource/custom/index', () => {
expect(result).toEqual(expected); expect(result).toEqual(expected);
}); });
it('returns null if transformation using jsonata rules fail', async () => {
httpMock
.scope('https://example.com')
.get('/v1')
.reply(200, '1.0.0 \n2.0.0 \n 3.0.0 ', {
'Content-Type': 'text/plain',
});
const result = await getPkgReleases({
datasource: `${CustomDatasource.id}.foo`,
packageName: 'myPackage',
customDatasources: {
foo: {
defaultRegistryUrlTemplate: 'https://example.com/v1',
transformTemplates: ['$[.name = "Alice" and'],
format: 'plain',
},
},
});
expect(result).toBeNull();
expect(logger.debug).toHaveBeenCalledWith(
{ err: expect.any(Object), transformTemplate: '$[.name = "Alice" and' },
'Error while transforming response',
);
});
it('return releases for plain text API when only returns a single version', async () => { it('return releases for plain text API when only returns a single version', async () => {
const expected = { const expected = {
releases: [ releases: [
......
...@@ -46,8 +46,16 @@ export class CustomDatasource extends Datasource { ...@@ -46,8 +46,16 @@ export class CustomDatasource extends Datasource {
logger.trace({ data }, `Custom manager fetcher '${format}' returned data.`); logger.trace({ data }, `Custom manager fetcher '${format}' returned data.`);
for (const transformTemplate of transformTemplates) { for (const transformTemplate of transformTemplates) {
const expression = jsonata(transformTemplate); try {
data = await expression.evaluate(data); const expression = jsonata(transformTemplate);
data = await expression.evaluate(data);
} catch (err) {
logger.debug(
{ err, transformTemplate },
'Error while transforming response',
);
return null;
}
} }
try { try {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment