import { expect } from 'chai';
import { testWithData } from './lib/mocked-dockerode';

import * as dockerUtils from '../src/lib/docker-utils';

describe('Docker Utils', () => {
	describe('Supervisor Address', () => {
		// setup some fake data...
		const networks = {
			supervisor0: {
				IPAM: {
					Config: [
						{
							Gateway: '10.0.105.1',
							Subnet: '10.0.105.0/16',
						},
					],
				},
			},
		};

		// test using existing data...
		it('should return the correct gateway address for supervisor0', async () => {
			await testWithData({ networks }, async () => {
				const gateway = await dockerUtils.getNetworkGateway('supervisor0');
				expect(gateway).to.equal('10.0.105.1');
			});
		});

		it('should return the correct gateway address for host', async () => {
			await testWithData({ networks }, async () => {
				const gateway = await dockerUtils.getNetworkGateway('host');
				expect(gateway).to.equal('127.0.0.1');
			});
		});
	});

	describe('Image Environment', () => {
		const images = {
			['test-image']: {
				Config: {
					Env: ['TEST_VAR_1=1234', 'TEST_VAR_2=5678'],
				},
			},
		};

		// test using existing data...
		it('should return the correct image environment', async () => {
			await testWithData({ images }, async () => {
				const obj = await dockerUtils.getImageEnv('test-image');
				expect(obj).to.have.property('TEST_VAR_1').equal('1234');
				expect(obj).to.have.property('TEST_VAR_2').equal('5678');
			});
		});
	});
});
