diff --git a/src/compose/network.ts b/src/compose/network.ts index 8b6e98f2..a4cbf264 100644 --- a/src/compose/network.ts +++ b/src/compose/network.ts @@ -94,7 +94,9 @@ export class Network { public static fromComposeObject( name: string, appId: number, - network: Partial, + network: Partial> & { + ipam?: Partial; + }, opts: NetworkOptions, ): Network { const net = new Network(opts); diff --git a/test/18-compose-network.coffee b/test/18-compose-network.coffee deleted file mode 100644 index 94234364..00000000 --- a/test/18-compose-network.coffee +++ /dev/null @@ -1,104 +0,0 @@ -{ expect } = require './lib/chai-config' - -{ Network } = require '../src/compose/network' - -describe 'compose/network', -> - - describe 'compose config -> internal config', -> - - it 'should convert a compose configuration to an internal representation', -> - - network = Network.fromComposeObject('test', 123, { - 'driver': 'bridge', - 'ipam': { - 'driver': 'default', - 'config': [ - { - 'subnet': '172.25.0.0/25', - 'gateway': '172.25.0.1' - } - ] - } - }, { logger: null, docker: null }) - - expect(network.config).to.deep.equal({ - driver: 'bridge' - ipam: { - driver: 'default' - config: [ - subnet: '172.25.0.0/25' - gateway: '172.25.0.1' - ] - options: {} - } - enableIPv6: false, - internal: false, - labels: {} - options: {} - }) - - it 'should handle an incomplete ipam configuration', -> - network = Network.fromComposeObject('test', 123, { - ipam: { - config: [ - { - subnet: '172.25.0.0/25', - gateway: '172.25.0.1' - } - ] - } - }, { logger: null, docker: null }) - - expect(network.config).to.deep.equal({ - driver: 'bridge', - enableIPv6: false, - internal: false, - labels: {} - options: {} - ipam: { - driver: 'default', - options: {}, - config: [ - { - subnet: '172.25.0.0/25', - gateway: '172.25.0.1' - } - ] - } - }) - - describe 'internal config -> docker config', -> - - it 'should convert an internal representation to a docker representation', -> - - network = Network.fromComposeObject('test', 123, { - 'driver': 'bridge', - 'ipam': { - 'driver': 'default', - 'config': [ - { - 'subnet': '172.25.0.0/25', - 'gateway': '172.25.0.1' - } - ] - } - }, { logger: null, docker: null }) - - expect(network.toDockerConfig()).to.deep.equal({ - Name: '123_test', - Driver: 'bridge', - CheckDuplicate: true, - IPAM: { - Driver: 'default', - Config: [{ - Subnet: '172.25.0.0/25' - Gateway: '172.25.0.1' - }] - Options: {} - } - EnableIPv6: false, - Internal: false, - Labels: { - 'io.balena.supervised': 'true' - } - }) diff --git a/test/18-compose-network.js b/test/18-compose-network.js new file mode 100644 index 00000000..29123f50 --- /dev/null +++ b/test/18-compose-network.js @@ -0,0 +1,125 @@ +import { expect } from './lib/chai-config'; +import { Network } from '../src/compose/network'; + +describe('compose/network', function() { + describe('compose config -> internal config', function() { + it('should convert a compose configuration to an internal representation', function() { + const network = Network.fromComposeObject( + 'test', + 123, + { + driver: 'bridge', + ipam: { + driver: 'default', + config: [ + { + subnet: '172.25.0.0/25', + gateway: '172.25.0.1', + }, + ], + }, + }, + // @ts-ignore ignore passing nulls instead of actual objects + { logger: null, docker: null }, + ); + + expect(network.config).to.deep.equal({ + driver: 'bridge', + ipam: { + driver: 'default', + config: [ + { + subnet: '172.25.0.0/25', + gateway: '172.25.0.1', + }, + ], + options: {}, + }, + enableIPv6: false, + internal: false, + labels: {}, + options: {}, + }); + }); + + it('should handle an incomplete ipam configuration', function() { + const network = Network.fromComposeObject( + 'test', + 123, + { + ipam: { + config: [ + { + subnet: '172.25.0.0/25', + gateway: '172.25.0.1', + }, + ], + }, + }, + // @ts-ignore ignore passing nulls instead of actual objects + { logger: null, docker: null }, + ); + + expect(network.config).to.deep.equal({ + driver: 'bridge', + enableIPv6: false, + internal: false, + labels: {}, + options: {}, + ipam: { + driver: 'default', + options: {}, + config: [ + { + subnet: '172.25.0.0/25', + gateway: '172.25.0.1', + }, + ], + }, + }); + }); + }); + + describe('internal config -> docker config', () => + it('should convert an internal representation to a docker representation', function() { + const network = Network.fromComposeObject( + 'test', + 123, + { + driver: 'bridge', + ipam: { + driver: 'default', + config: [ + { + subnet: '172.25.0.0/25', + gateway: '172.25.0.1', + }, + ], + }, + }, + // @ts-ignore ignore passing nulls instead of actual objects + { logger: null, docker: null }, + ); + + expect(network.toDockerConfig()).to.deep.equal({ + Name: '123_test', + Driver: 'bridge', + CheckDuplicate: true, + IPAM: { + Driver: 'default', + Config: [ + { + Subnet: '172.25.0.0/25', + Gateway: '172.25.0.1', + }, + ], + Options: {}, + }, + EnableIPv6: false, + Internal: false, + Labels: { + 'io.balena.supervised': 'true', + }, + }); + })); +});