renovate/lib/modules/datasource/utils.spec.ts

74 lines
2.2 KiB
TypeScript

import { GoogleAuth as _googleAuth } from 'google-auth-library';
import { mocked } from '../../../test/util';
import type { HttpResponse } from '../../util/http/types';
import { getGoogleAuthToken, isArtifactoryServer } from './util';
const googleAuth = mocked(_googleAuth);
jest.mock('google-auth-library');
describe('modules/datasource/utils', () => {
it('is artifactory server invalid', () => {
const response: HttpResponse<string> = {
statusCode: 200,
body: 'test',
headers: { 'invalid-header': 'version' },
};
expect(isArtifactoryServer(response)).toBeFalse();
});
it('is artifactory server valid', () => {
const response: HttpResponse<string> = {
statusCode: 200,
body: 'test',
headers: { 'x-jfrog-version': 'version' },
};
expect(isArtifactoryServer(response)).toBeTrue();
});
it('retrieves a Google Access token', async () => {
googleAuth.mockImplementationOnce(
jest.fn().mockImplementationOnce(() => ({
getAccessToken: jest.fn().mockResolvedValue('some-token'),
})),
);
const res = await getGoogleAuthToken();
expect(res).toBe('b2F1dGgyYWNjZXNzdG9rZW46c29tZS10b2tlbg==');
});
it('no Google Access token results in null', async () => {
googleAuth.mockImplementationOnce(
jest.fn().mockImplementationOnce(() => ({
getAccessToken: jest.fn().mockReturnValue(''),
})),
);
const res = await getGoogleAuthToken();
expect(res).toBeNull();
});
it('Google Access token error throws an exception', async () => {
const err = 'some-error';
googleAuth.mockImplementationOnce(
jest.fn().mockImplementationOnce(() => ({
getAccessToken: jest.fn().mockRejectedValue(new Error(err)),
})),
);
await expect(getGoogleAuthToken()).rejects.toThrow('some-error');
});
it('Google Access token could not load default credentials', async () => {
googleAuth.mockImplementationOnce(
jest.fn().mockImplementationOnce(() => ({
getAccessToken: jest.fn().mockRejectedValue({
message: 'Could not load the default credentials',
}),
})),
);
const res = await getGoogleAuthToken();
expect(res).toBeNull();
});
});