Skip to content
Snippets Groups Projects
Select Git revision
  • 5639f4b601188f74594631536462300be0aaef4a
  • master default
2 results

index.js

Blame
  • index.spec.ts 2.69 KiB
    import { readFileSync } from 'fs';
    import { resolve } from 'upath';
    import { getName } from '../../../test/util';
    import { defaultConfig, extractPackageFile } from '.';
    
    const dockerfileContent = readFileSync(
      resolve(__dirname, `./__fixtures__/Dockerfile`),
      'utf8'
    );
    describe(getName(__filename), () => {
      it('has default config', () => {
        expect(defaultConfig).toEqual({
          pinDigests: false,
        });
      });
      it('extracts multiple dependencies', async () => {
        const config = {
          matchStrings: [
            'ENV .*?_VERSION=(?<currentValue>.*) # (?<datasource>.*?)/(?<depName>.*?)(\\&versioning=(?<versioning>.*?))?\\s',
          ],
          versioningTemplate:
            '{{#if versioning}}{{versioning}}{{else}}semver{{/if}}',
        };
        const res = await extractPackageFile(
          dockerfileContent,
          'Dockerfile',
          config
        );
        expect(res).toMatchSnapshot();
        expect(res.deps).toHaveLength(8);
        expect(res.deps.find((dep) => dep.depName === 'yarn').versioning).toEqual(
          'semver'
        );
        expect(res.deps.find((dep) => dep.depName === 'gradle').versioning).toEqual(
          'maven'
        );
      });
      it('returns null if no dependencies found', async () => {
        const config = {
          matchStrings: [
            'ENV .*?_VERSION=(?<currentValue>.*) # (?<datasource>.*?)/(?<depName>.*?)(\\&versioning=(?<versioning>.*?))?\\s',
          ],
          versioningTemplate:
            '{{#if versioning}}{{versioning}}{{else}}semver{{/if}}',
        };
        const res = await extractPackageFile('', 'Dockerfile', config);
        expect(res).toBeNull();
      });
      it('returns null if invalid template', async () => {
        const config = {
          matchStrings: [
            'ENV .*?_VERSION=(?<currentValue>.*) # (?<datasource>.*?)/(?<depName>.*?)(\\&versioning=(?<versioning>.*?))?\\s',
          ],
          versioningTemplate: '{{#if versioning}}{{versioning}}{{else}}semver',
        };
        const res = await extractPackageFile(
          dockerfileContent,
          'Dockerfile',
          config
        );
        expect(res).toBeNull();
      });
      it('extracts registryUrl', async () => {
        const config = {
          matchStrings: [
            'chart:\n *repository: (?<registryUrl>.*?)\n *name: (?<depName>.*?)\n *version: (?<currentValue>.*)\n',
          ],
          datasourceTemplate: 'helm',
        };
        const res = await extractPackageFile(
          `
          apiVersion: helm.fluxcd.io/v1
          kind: HelmRelease
          metadata:
            name: prometheus-operator
            namespace: monitoring
          spec:
            releaseName: prometheus-operator
            chart:
              repository: https://kubernetes-charts.storage.googleapis.com/
              name: prometheus-operator
              version: 8.12.13
          `,
          'Dockerfile',
          config
        );
        expect(res).toMatchSnapshot();
      });
    });