mirror of
				https://github.com/docker/setup-buildx-action.git
				synced 2025-11-04 06:34:19 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			89 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import {describe, expect, jest, test, beforeEach} from '@jest/globals';
 | 
						|
import * as fs from 'fs';
 | 
						|
import * as os from 'os';
 | 
						|
import * as path from 'path';
 | 
						|
import * as auth from '../src/auth';
 | 
						|
 | 
						|
const tmpdir = fs.mkdtempSync(path.join(os.tmpdir(), 'docker-setup-buildx-jest')).split(path.sep).join(path.posix.sep);
 | 
						|
const dockerConfigHome = path.join(tmpdir, '.docker');
 | 
						|
const credsdir = path.join(dockerConfigHome, 'buildx', 'creds');
 | 
						|
 | 
						|
describe('setCredentials', () => {
 | 
						|
  beforeEach(() => {
 | 
						|
    process.env = Object.keys(process.env).reduce((object, key) => {
 | 
						|
      if (!key.startsWith(auth.envPrefix)) {
 | 
						|
        object[key] = process.env[key];
 | 
						|
      }
 | 
						|
      return object;
 | 
						|
    }, {});
 | 
						|
  });
 | 
						|
 | 
						|
  // prettier-ignore
 | 
						|
  test.each([
 | 
						|
    [
 | 
						|
      'mycontext',
 | 
						|
      'docker-container',
 | 
						|
      {},
 | 
						|
      [],
 | 
						|
      []
 | 
						|
    ],
 | 
						|
    [
 | 
						|
      'docker-container://mycontainer',
 | 
						|
      'docker-container',
 | 
						|
      {},
 | 
						|
      [],
 | 
						|
      []
 | 
						|
    ],
 | 
						|
    [
 | 
						|
      'tcp://graviton2:1234',
 | 
						|
      'remote',
 | 
						|
      {},
 | 
						|
      [],
 | 
						|
      []
 | 
						|
    ],
 | 
						|
    [
 | 
						|
      'tcp://graviton2:1234',
 | 
						|
      'remote',
 | 
						|
      {
 | 
						|
        'BUILDER_NODE_0_AUTH_TLS_CACERT': 'foo',
 | 
						|
        'BUILDER_NODE_0_AUTH_TLS_CERT': 'foo',
 | 
						|
        'BUILDER_NODE_0_AUTH_TLS_KEY': 'foo'
 | 
						|
      },
 | 
						|
      [
 | 
						|
        path.join(credsdir, 'cacert_graviton2-1234.pem'),
 | 
						|
        path.join(credsdir, 'cert_graviton2-1234.pem'),
 | 
						|
        path.join(credsdir, 'key_graviton2-1234.pem')
 | 
						|
      ],
 | 
						|
      [
 | 
						|
        `cacert=${path.join(credsdir, 'cacert_graviton2-1234.pem')}`,
 | 
						|
        `cert=${path.join(credsdir, 'cert_graviton2-1234.pem')}`,
 | 
						|
        `key=${path.join(credsdir, 'key_graviton2-1234.pem')}`
 | 
						|
      ]
 | 
						|
    ],
 | 
						|
    [
 | 
						|
      'tcp://graviton2:1234',
 | 
						|
      'docker-container',
 | 
						|
      {
 | 
						|
        'BUILDER_NODE_0_AUTH_TLS_CACERT': 'foo',
 | 
						|
        'BUILDER_NODE_0_AUTH_TLS_CERT': 'foo',
 | 
						|
        'BUILDER_NODE_0_AUTH_TLS_KEY': 'foo'
 | 
						|
      },
 | 
						|
      [
 | 
						|
        path.join(credsdir, 'cacert_graviton2-1234.pem'),
 | 
						|
        path.join(credsdir, 'cert_graviton2-1234.pem'),
 | 
						|
        path.join(credsdir, 'key_graviton2-1234.pem')
 | 
						|
      ],
 | 
						|
      []
 | 
						|
    ],
 | 
						|
  ])('given %p endpoint', async (endpoint: string, driver: string, envs: Record<string, string>, expectedFiles: Array<string>, expectedOpts: Array<string>) => {
 | 
						|
    fs.mkdirSync(credsdir, {recursive: true});
 | 
						|
    for (const [key, value] of Object.entries(envs)) {
 | 
						|
      process.env[key] = value;
 | 
						|
    }
 | 
						|
    expect(auth.setCredentials(credsdir, 0, driver, endpoint)).toEqual(expectedOpts);
 | 
						|
    expectedFiles.forEach( (file) => {
 | 
						|
      expect(fs.existsSync(file)).toBe(true);
 | 
						|
    });
 | 
						|
  });
 | 
						|
});
 |