mirror of https://github.com/renovatebot/renovate
154 lines
5.2 KiB
TypeScript
154 lines
5.2 KiB
TypeScript
import { getPkgReleases } from '..';
|
|
import { Fixtures } from '../../../../test/fixtures';
|
|
import * as httpMock from '../../../../test/http-mock';
|
|
import { GlasskubePackagesDatasource } from '.';
|
|
|
|
describe('modules/datasource/glasskube-packages/index', () => {
|
|
const customRegistryUrl = 'https://packages.test.example/packages';
|
|
const customVersionsUrl = new URL(
|
|
`${customRegistryUrl}/cloudnative-pg/versions.yaml`,
|
|
);
|
|
const defaultVersionUrl = new URL(
|
|
`${GlasskubePackagesDatasource.defaultRegistryUrl}/cloudnative-pg/versions.yaml`,
|
|
);
|
|
const versionsYaml = Fixtures.get('versions.yaml');
|
|
const customPackageManifestUrl = new URL(
|
|
`${customRegistryUrl}/cloudnative-pg/v1.23.1+1/package.yaml`,
|
|
);
|
|
const defaultPackageManifestUrl = new URL(
|
|
`${GlasskubePackagesDatasource.defaultRegistryUrl}/cloudnative-pg/v1.23.1+1/package.yaml`,
|
|
);
|
|
const packageManifestYaml = Fixtures.get('package.yaml');
|
|
const packageManifestNoReferencesYaml = Fixtures.get(
|
|
'package_no_references.yaml',
|
|
);
|
|
|
|
it('should handle error response on versions request', async () => {
|
|
httpMock
|
|
.scope(customVersionsUrl.origin)
|
|
.get(customVersionsUrl.pathname)
|
|
.reply(500, 'internal server error');
|
|
await expect(
|
|
getPkgReleases({
|
|
datasource: GlasskubePackagesDatasource.id,
|
|
packageName: 'cloudnative-pg',
|
|
registryUrls: [customRegistryUrl],
|
|
}),
|
|
).rejects.toThrow();
|
|
});
|
|
|
|
it('should handle empty response on versions request', async () => {
|
|
httpMock
|
|
.scope(customVersionsUrl.origin)
|
|
.get(customVersionsUrl.pathname)
|
|
.reply(200);
|
|
const response = await getPkgReleases({
|
|
datasource: GlasskubePackagesDatasource.id,
|
|
packageName: 'cloudnative-pg',
|
|
registryUrls: [customRegistryUrl],
|
|
});
|
|
expect(response).toBeNull();
|
|
});
|
|
|
|
it('should handle error response on manifest request', async () => {
|
|
httpMock
|
|
.scope(customVersionsUrl.origin)
|
|
.get(customVersionsUrl.pathname)
|
|
.reply(200, versionsYaml);
|
|
httpMock
|
|
.scope(customPackageManifestUrl.origin)
|
|
.get(customPackageManifestUrl.pathname)
|
|
.reply(500, 'internal server error');
|
|
await expect(
|
|
getPkgReleases({
|
|
datasource: GlasskubePackagesDatasource.id,
|
|
packageName: 'cloudnative-pg',
|
|
registryUrls: [customRegistryUrl],
|
|
}),
|
|
).rejects.toThrow();
|
|
});
|
|
|
|
it('should handle empty response on manifest request', async () => {
|
|
httpMock
|
|
.scope(customVersionsUrl.origin)
|
|
.get(customVersionsUrl.pathname)
|
|
.reply(200, versionsYaml);
|
|
httpMock
|
|
.scope(customPackageManifestUrl.origin)
|
|
.get(customPackageManifestUrl.pathname)
|
|
.reply(200);
|
|
const response = await getPkgReleases({
|
|
datasource: GlasskubePackagesDatasource.id,
|
|
packageName: 'cloudnative-pg',
|
|
registryUrls: [customRegistryUrl],
|
|
});
|
|
expect(response).toBeNull();
|
|
});
|
|
|
|
it('should handle package manifest without references', async () => {
|
|
httpMock
|
|
.scope(customVersionsUrl.origin)
|
|
.get(customVersionsUrl.pathname)
|
|
.reply(200, versionsYaml);
|
|
httpMock
|
|
.scope(customPackageManifestUrl.origin)
|
|
.get(customPackageManifestUrl.pathname)
|
|
.reply(200, packageManifestNoReferencesYaml);
|
|
const response = await getPkgReleases({
|
|
datasource: GlasskubePackagesDatasource.id,
|
|
packageName: 'cloudnative-pg',
|
|
registryUrls: [customRegistryUrl],
|
|
});
|
|
expect(response).toEqual({
|
|
registryUrl: customRegistryUrl,
|
|
tags: { latest: 'v1.23.1+1' },
|
|
releases: [{ version: 'v1.22.0+1' }, { version: 'v1.23.1+1' }],
|
|
});
|
|
});
|
|
|
|
it('should handle package manifest with references and default url', async () => {
|
|
httpMock
|
|
.scope(defaultVersionUrl.origin)
|
|
.get(defaultVersionUrl.pathname)
|
|
.reply(200, versionsYaml);
|
|
httpMock
|
|
.scope(defaultPackageManifestUrl.origin)
|
|
.get(defaultPackageManifestUrl.pathname)
|
|
.reply(200, packageManifestYaml);
|
|
const response = await getPkgReleases({
|
|
datasource: GlasskubePackagesDatasource.id,
|
|
packageName: 'cloudnative-pg',
|
|
});
|
|
expect(response).toEqual({
|
|
sourceUrl: 'https://github.com/cloudnative-pg/cloudnative-pg',
|
|
homepage: 'https://cloudnative-pg.io/',
|
|
registryUrl: GlasskubePackagesDatasource.defaultRegistryUrl,
|
|
tags: { latest: 'v1.23.1+1' },
|
|
releases: [{ version: 'v1.22.0+1' }, { version: 'v1.23.1+1' }],
|
|
});
|
|
});
|
|
|
|
it('should handle package manifest with references and custom url', async () => {
|
|
httpMock
|
|
.scope(customVersionsUrl.origin)
|
|
.get(customVersionsUrl.pathname)
|
|
.reply(200, versionsYaml);
|
|
httpMock
|
|
.scope(customPackageManifestUrl.origin)
|
|
.get(customPackageManifestUrl.pathname)
|
|
.reply(200, packageManifestYaml);
|
|
const response = await getPkgReleases({
|
|
datasource: GlasskubePackagesDatasource.id,
|
|
packageName: 'cloudnative-pg',
|
|
registryUrls: [customRegistryUrl],
|
|
});
|
|
expect(response).toEqual({
|
|
sourceUrl: 'https://github.com/cloudnative-pg/cloudnative-pg',
|
|
homepage: 'https://cloudnative-pg.io/',
|
|
registryUrl: customRegistryUrl,
|
|
tags: { latest: 'v1.23.1+1' },
|
|
releases: [{ version: 'v1.22.0+1' }, { version: 'v1.23.1+1' }],
|
|
});
|
|
});
|
|
});
|