mirror of https://github.com/renovatebot/renovate
156 lines
5.0 KiB
TypeScript
156 lines
5.0 KiB
TypeScript
import { codeBlock } from 'common-tags';
|
|
import { Fixtures } from '../../../../test/fixtures';
|
|
import { extractPackageFile } from '.';
|
|
|
|
const validPackages = Fixtures.get('validPackages.yml');
|
|
const malformedPackages = Fixtures.get('malformedPackages.yml');
|
|
const randomManifest = Fixtures.get('randomManifest.yml');
|
|
const mixedManifest = Fixtures.get('mixedManifest.yml');
|
|
|
|
describe('modules/manager/crossplane/extract', () => {
|
|
describe('extractPackageFile()', () => {
|
|
it('returns null for empty', () => {
|
|
expect(extractPackageFile('nothing here', 'packages.yml')).toBeNull();
|
|
});
|
|
|
|
it('returns null for invalid', () => {
|
|
expect(
|
|
extractPackageFile(`${malformedPackages}\n123`, 'packages.yml'),
|
|
).toBeNull();
|
|
});
|
|
|
|
it('return null for kubernetes manifest', () => {
|
|
const result = extractPackageFile(randomManifest, 'packages.yml');
|
|
expect(result).toBeNull();
|
|
});
|
|
|
|
it('return invalid-value if deps are not valid images and ignore if missing', () => {
|
|
const result = extractPackageFile(malformedPackages, 'packages.yml');
|
|
expect(result).toMatchObject({
|
|
deps: [
|
|
{
|
|
depType: 'function',
|
|
skipReason: 'invalid-value',
|
|
},
|
|
],
|
|
});
|
|
});
|
|
|
|
it('return result for double quoted pkg.crossplane.io apiVersion reference', () => {
|
|
const result = extractPackageFile(
|
|
codeBlock`
|
|
apiVersion: "pkg.crossplane.io/v1"
|
|
kind: Configuration
|
|
spec:
|
|
package: "xpkg.upbound.io/upbound/platform-ref-aws:v0.6.0"
|
|
`,
|
|
'packages.yml',
|
|
);
|
|
expect(result).toMatchObject({
|
|
deps: [
|
|
{
|
|
currentValue: 'v0.6.0',
|
|
datasource: 'docker',
|
|
depName: 'xpkg.upbound.io/upbound/platform-ref-aws',
|
|
},
|
|
],
|
|
});
|
|
});
|
|
|
|
it('return result for single quoted pkg.crossplane.io apiVersion reference', () => {
|
|
const result = extractPackageFile(
|
|
codeBlock`
|
|
apiVersion: 'pkg.crossplane.io/v1'
|
|
kind: Configuration
|
|
spec:
|
|
package: 'xpkg.upbound.io/upbound/platform-ref-aws:v0.6.0'
|
|
`,
|
|
'packages.yml',
|
|
);
|
|
expect(result).toMatchObject({
|
|
deps: [
|
|
{
|
|
currentValue: 'v0.6.0',
|
|
datasource: 'docker',
|
|
depName: 'xpkg.upbound.io/upbound/platform-ref-aws',
|
|
},
|
|
],
|
|
});
|
|
});
|
|
|
|
it('return no results for invalid resource', () => {
|
|
const result = extractPackageFile(
|
|
codeBlock`
|
|
---
|
|
apiVersion: pkg.crossplane.io/v1
|
|
kind: Configuration
|
|
metadata:
|
|
name: platform-ref-aws
|
|
spec:
|
|
`,
|
|
'packages.yml',
|
|
);
|
|
expect(result).toBeNull();
|
|
});
|
|
|
|
it('full test', () => {
|
|
const result = extractPackageFile(validPackages, 'packages.yml');
|
|
expect(result).toEqual({
|
|
deps: [
|
|
{
|
|
autoReplaceStringTemplate:
|
|
'{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}',
|
|
currentDigest: undefined,
|
|
currentValue: 'v0.2.0',
|
|
datasource: 'docker',
|
|
depName: 'xpkg.upbound.io/crossplane-contrib/provider-nop',
|
|
depType: 'provider',
|
|
replaceString:
|
|
'xpkg.upbound.io/crossplane-contrib/provider-nop:v0.2.0',
|
|
},
|
|
{
|
|
autoReplaceStringTemplate:
|
|
'{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}',
|
|
currentDigest: undefined,
|
|
currentValue: 'v0.2.1',
|
|
datasource: 'docker',
|
|
depName: 'xpkg.upbound.io/crossplane-contrib/function-dummy',
|
|
depType: 'function',
|
|
replaceString:
|
|
'xpkg.upbound.io/crossplane-contrib/function-dummy:v0.2.1',
|
|
},
|
|
{
|
|
autoReplaceStringTemplate:
|
|
'{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}',
|
|
currentDigest: undefined,
|
|
currentValue: 'v0.6.0',
|
|
datasource: 'docker',
|
|
depName: 'xpkg.upbound.io/upbound/platform-ref-aws',
|
|
depType: 'configuration',
|
|
replaceString: 'xpkg.upbound.io/upbound/platform-ref-aws:v0.6.0',
|
|
},
|
|
],
|
|
});
|
|
});
|
|
|
|
it('should work even if there are other resources in the file', () => {
|
|
const result = extractPackageFile(mixedManifest, 'packages.yml');
|
|
expect(result).toEqual({
|
|
deps: [
|
|
{
|
|
autoReplaceStringTemplate:
|
|
'{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}',
|
|
currentDigest: undefined,
|
|
currentValue: 'v0.2.0',
|
|
datasource: 'docker',
|
|
depName: 'xpkg.upbound.io/crossplane-contrib/provider-nop',
|
|
depType: 'provider',
|
|
replaceString:
|
|
'xpkg.upbound.io/crossplane-contrib/provider-nop:v0.2.0',
|
|
},
|
|
],
|
|
});
|
|
});
|
|
});
|
|
});
|