mirror of
https://github.com/renovatebot/renovate.git
synced 2026-10-26 23:39:13 +00:00
2561284dc4
* build(deps): update dependency got to v15 | datasource | package | from | to | | ---------- | ------- | ------ | ------ | | npm | got | 14.6.6 | 15.0.5 | * chore: adapt code to breaking changes * test: fix test --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: secustor <sebastian@poxhofer.at> Co-authored-by: Michael Kriese <michael.kriese@mend.io>
140 lines
3.4 KiB
TypeScript
140 lines
3.4 KiB
TypeScript
import * as httpMock from '~test/http-mock.ts';
|
|
import { partial } from '~test/util.ts';
|
|
import * as hostRules from '../util/host-rules.ts';
|
|
import { Http } from '../util/http/index.ts';
|
|
import errSerializer from './err-serializer.ts';
|
|
import { sanitizeValue } from './utils.ts';
|
|
|
|
describe('logger/err-serializer', () => {
|
|
it('expands errors', () => {
|
|
const err = partial<Error & Record<string, unknown>>({
|
|
a: 1,
|
|
b: 2,
|
|
message: 'some message',
|
|
response: {
|
|
body: 'some response body',
|
|
url: 'some/path',
|
|
},
|
|
options: {
|
|
headers: {
|
|
authorization: 'Bearer testtoken',
|
|
},
|
|
},
|
|
});
|
|
expect(errSerializer(err)).toEqual({
|
|
a: 1,
|
|
b: 2,
|
|
message: 'some message',
|
|
response: {
|
|
body: 'some response body',
|
|
url: 'some/path',
|
|
},
|
|
options: {
|
|
headers: {
|
|
authorization: 'Bearer testtoken',
|
|
},
|
|
},
|
|
});
|
|
});
|
|
|
|
it('handles missing fields', () => {
|
|
const err = partial<Error & Record<string, unknown>>({
|
|
a: 1,
|
|
stack: 'foo',
|
|
body: 'some body',
|
|
});
|
|
expect(errSerializer(err)).toEqual({
|
|
a: 1,
|
|
stack: 'foo',
|
|
body: 'some body',
|
|
});
|
|
});
|
|
|
|
describe('got', () => {
|
|
const baseUrl = 'https://github.com';
|
|
|
|
beforeEach(() => {
|
|
// clean up hostRules
|
|
hostRules.clear();
|
|
hostRules.add({
|
|
hostType: 'any',
|
|
matchHost: baseUrl,
|
|
token: 'token',
|
|
});
|
|
});
|
|
|
|
it('handles http error', async () => {
|
|
httpMock
|
|
.scope(baseUrl)
|
|
.post('/api')
|
|
.reply(412, { err: { message: 'failed' } });
|
|
let err: any;
|
|
try {
|
|
await new Http('any').postJson('https://:token@github.com/api');
|
|
} catch (error) {
|
|
err = errSerializer(error);
|
|
}
|
|
|
|
expect(err).toBeDefined();
|
|
expect(err.response.body).toBeDefined();
|
|
expect(err.options).toBeDefined();
|
|
});
|
|
|
|
it('sanitize http error', async () => {
|
|
httpMock
|
|
.scope(baseUrl)
|
|
.post('/api')
|
|
.reply(412, { err: { message: 'failed' } });
|
|
let err: any;
|
|
try {
|
|
await new Http('any').postJson('https://:token@github.com/api');
|
|
} catch (error) {
|
|
err = error;
|
|
}
|
|
|
|
expect(err).toBeDefined();
|
|
|
|
// remove platform related props
|
|
delete err.timings;
|
|
delete err.stack;
|
|
|
|
// sanitize like Bunyan
|
|
expect(sanitizeValue(err)).toMatchObject({
|
|
message:
|
|
'Request failed with status code 412 (Precondition Failed): POST https://github.com/api',
|
|
name: 'HTTPError',
|
|
options: {
|
|
headers: {
|
|
authorization: '***********',
|
|
},
|
|
method: 'POST',
|
|
password: '***********',
|
|
url: 'https://**redacted**@github.com/api',
|
|
username: '',
|
|
},
|
|
});
|
|
});
|
|
|
|
it('handles AggregateErrors', () => {
|
|
const err = partial<Error & Record<string, unknown>>({
|
|
message: 'foo',
|
|
stack: 'error stack',
|
|
body: 'error body',
|
|
});
|
|
const aggregateError = new AggregateError([err], 'bar');
|
|
aggregateError.stack = 'aggregate stack';
|
|
expect(errSerializer(aggregateError)).toEqual({
|
|
message: 'bar',
|
|
stack: 'aggregate stack',
|
|
errors: [
|
|
{
|
|
message: 'foo',
|
|
body: 'error body',
|
|
stack: 'error stack',
|
|
},
|
|
],
|
|
});
|
|
});
|
|
});
|
|
});
|