1177 строки
49 KiB
JavaScript
1177 строки
49 KiB
JavaScript
|
describe('virtualNetworkSettings', () => {
|
||
|
let rewire = require('rewire');
|
||
|
let virtualNetworkSettings = rewire('../src/core/virtualNetworkSettings.js');
|
||
|
let _ = require('lodash');
|
||
|
let validation = require('../src/core/validation.js');
|
||
|
|
||
|
describe('validations', () => {
|
||
|
let virtualNetworkSettingsValidations = virtualNetworkSettings.__get__('virtualNetworkSettingsValidations');
|
||
|
|
||
|
describe('virtualNetworkSubnetsValidations', () => {
|
||
|
let subnetValidations = virtualNetworkSettings.__get__('virtualNetworkSettingsSubnetsValidations');
|
||
|
let subnetsSettings = [
|
||
|
{
|
||
|
name: 'web',
|
||
|
addressPrefix: '10.0.1.0/24'
|
||
|
},
|
||
|
{
|
||
|
name: 'biz',
|
||
|
addressPrefix: '10.0.2.0/24'
|
||
|
}
|
||
|
];
|
||
|
|
||
|
let settings;
|
||
|
beforeEach(() => {
|
||
|
settings = _.cloneDeep(subnetsSettings);
|
||
|
});
|
||
|
|
||
|
it('name undefined', () => {
|
||
|
delete settings[0].name;
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: subnetValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('[0].name');
|
||
|
});
|
||
|
|
||
|
it('name empty', () => {
|
||
|
settings[0].name = '';
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: subnetValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('[0].name');
|
||
|
});
|
||
|
|
||
|
it('name whitespace', () => {
|
||
|
settings[0].name = ' ';
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: subnetValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('[0].name');
|
||
|
});
|
||
|
|
||
|
it('addressPrefix undefined', () => {
|
||
|
delete settings[0].addressPrefix;
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: subnetValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('[0].addressPrefix');
|
||
|
});
|
||
|
|
||
|
it('addressPrefix empty', () => {
|
||
|
settings[0].addressPrefix = '';
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: subnetValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('[0].addressPrefix');
|
||
|
});
|
||
|
|
||
|
it('addressPrefix whitespace', () => {
|
||
|
settings[0].addressPrefix = ' ';
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: subnetValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('[0].addressPrefix');
|
||
|
});
|
||
|
|
||
|
it('addressPrefix invalid cidr', () => {
|
||
|
settings[0].addressPrefix = '10.0.0.1';
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: subnetValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('[0].addressPrefix');
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('virtualNetworkSettingsPeeringValidations', () => {
|
||
|
let peeringValidations = virtualNetworkSettings.__get__('virtualNetworkSettingsPeeringValidations');
|
||
|
let peeringSettings = [
|
||
|
{
|
||
|
name: 'another-provided-peering-name',
|
||
|
remoteVirtualNetwork: {
|
||
|
name: 'my-third-virtual-network'
|
||
|
},
|
||
|
allowForwardedTraffic: false,
|
||
|
allowGatewayTransit: false,
|
||
|
useRemoteGateways: true
|
||
|
}
|
||
|
];
|
||
|
|
||
|
let settings;
|
||
|
beforeEach(() => {
|
||
|
settings = _.cloneDeep(peeringSettings);
|
||
|
});
|
||
|
|
||
|
it('name undefined', () => {
|
||
|
delete settings[0].name;
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: peeringValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(0);
|
||
|
});
|
||
|
|
||
|
it('name empty', () => {
|
||
|
settings[0].name = '';
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: peeringValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('[0].name');
|
||
|
});
|
||
|
|
||
|
it('name only whitespace', () => {
|
||
|
settings[0].name = ' ';
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: peeringValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('[0].name');
|
||
|
});
|
||
|
|
||
|
it('allowForwardedTraffic undefined', () => {
|
||
|
delete settings[0].allowForwardedTraffic;
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: peeringValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('[0].allowForwardedTraffic');
|
||
|
});
|
||
|
|
||
|
it('allowForwardedTraffic null', () => {
|
||
|
settings[0].allowForwardedTraffic = null;
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: peeringValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('[0].allowForwardedTraffic');
|
||
|
});
|
||
|
|
||
|
it('allowGatewayTransit undefined', () => {
|
||
|
delete settings[0].allowGatewayTransit;
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: peeringValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('[0].allowGatewayTransit');
|
||
|
});
|
||
|
|
||
|
it('allowGatewayTransit null', () => {
|
||
|
settings[0].allowGatewayTransit = null;
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: peeringValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('[0].allowGatewayTransit');
|
||
|
});
|
||
|
|
||
|
it('useRemoteGateways undefined', () => {
|
||
|
delete settings[0].useRemoteGateways;
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: peeringValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('[0].useRemoteGateways');
|
||
|
});
|
||
|
|
||
|
it('useRemoteGateways null', () => {
|
||
|
settings[0].useRemoteGateways = null;
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: peeringValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('[0].useRemoteGateways');
|
||
|
});
|
||
|
|
||
|
describe('remoteVirtualNetworkValidations', () => {
|
||
|
let remoteVirtualNetworkValidations = peeringValidations.remoteVirtualNetwork;
|
||
|
let remoteVirtualNetworkSettings = peeringSettings[0].remoteVirtualNetwork;
|
||
|
|
||
|
it('name undefined', () => {
|
||
|
let settings = _.cloneDeep(remoteVirtualNetworkSettings);
|
||
|
delete settings.name;
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: remoteVirtualNetworkValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('.name');
|
||
|
});
|
||
|
|
||
|
it('name empty', () => {
|
||
|
let settings = _.cloneDeep(remoteVirtualNetworkSettings);
|
||
|
settings.name = '';
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: remoteVirtualNetworkValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('.name');
|
||
|
});
|
||
|
|
||
|
it('name whitespace', () => {
|
||
|
let settings = _.cloneDeep(remoteVirtualNetworkSettings);
|
||
|
settings.name = ' ';
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: remoteVirtualNetworkValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('.name');
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('virtualNetworkValidations', () => {
|
||
|
let virtualNetworkValidations = virtualNetworkSettingsValidations;
|
||
|
let virtualNetworkSettings = {
|
||
|
name: 'my-virtual-network',
|
||
|
addressPrefixes: [
|
||
|
'10.0.0.0/16'
|
||
|
],
|
||
|
subnets: [
|
||
|
{
|
||
|
name: 'web',
|
||
|
addressPrefix: '10.0.1.0/24'
|
||
|
},
|
||
|
{
|
||
|
name: 'biz',
|
||
|
addressPrefix: '10.0.2.0/24'
|
||
|
}
|
||
|
],
|
||
|
dnsServers: ['10.0.0.1'],
|
||
|
virtualNetworkPeerings: [
|
||
|
{
|
||
|
name: 'another-provided-peering-name',
|
||
|
remoteVirtualNetwork: {
|
||
|
name: 'my-third-virtual-network'
|
||
|
},
|
||
|
allowForwardedTraffic: false,
|
||
|
allowGatewayTransit: false,
|
||
|
useRemoteGateways: true
|
||
|
}
|
||
|
],
|
||
|
tags: {
|
||
|
name1: 'value1',
|
||
|
name2: 'value2',
|
||
|
name3: 'value3'
|
||
|
}
|
||
|
};
|
||
|
|
||
|
let settings;
|
||
|
beforeEach(() => {
|
||
|
settings = _.cloneDeep(virtualNetworkSettings);
|
||
|
});
|
||
|
|
||
|
it('name undefined', () => {
|
||
|
delete settings.name;
|
||
|
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: virtualNetworkValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('.name');
|
||
|
});
|
||
|
|
||
|
it('addressPrefixes undefined', () => {
|
||
|
delete settings.addressPrefixes;
|
||
|
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: virtualNetworkValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('.addressPrefixes');
|
||
|
});
|
||
|
|
||
|
it('addressPrefixes empty', () => {
|
||
|
settings.addressPrefixes = [];
|
||
|
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: virtualNetworkValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('.addressPrefixes');
|
||
|
});
|
||
|
|
||
|
it('addressPrefixes invalid cidr', () => {
|
||
|
settings.addressPrefixes = ['10.0.0.1'];
|
||
|
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: virtualNetworkValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('.addressPrefixes');
|
||
|
});
|
||
|
|
||
|
it('subnets undefined', () => {
|
||
|
delete settings.subnets;
|
||
|
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: virtualNetworkValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('.subnets');
|
||
|
});
|
||
|
|
||
|
it('subnets empty', () => {
|
||
|
settings.subnets = [];
|
||
|
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: virtualNetworkValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('.subnets');
|
||
|
});
|
||
|
|
||
|
it('dnsServers undefined', () => {
|
||
|
delete settings.dnsServers;
|
||
|
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: virtualNetworkValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('.dnsServers');
|
||
|
});
|
||
|
|
||
|
it('dnsServers null', () => {
|
||
|
settings.dnsServers = null;
|
||
|
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: virtualNetworkValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('.dnsServers');
|
||
|
});
|
||
|
|
||
|
it('dnsServers empty', () => {
|
||
|
settings.dnsServers = [];
|
||
|
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: virtualNetworkValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(0);
|
||
|
});
|
||
|
|
||
|
it('dnsServers invalid ip address', () => {
|
||
|
settings.dnsServers = ['10.0.0'];
|
||
|
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: virtualNetworkValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('.dnsServers[0]');
|
||
|
});
|
||
|
|
||
|
it('virtualNetworkPeerings undefined', () => {
|
||
|
delete settings.virtualNetworkPeerings;
|
||
|
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: virtualNetworkValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('.virtualNetworkPeerings');
|
||
|
});
|
||
|
|
||
|
it('virtualNetworkPeerings null', () => {
|
||
|
settings.virtualNetworkPeerings = null;
|
||
|
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: virtualNetworkValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(1);
|
||
|
expect(errors[0].name).toEqual('.virtualNetworkPeerings');
|
||
|
});
|
||
|
|
||
|
it('virtualNetworkPeerings empty', () => {
|
||
|
settings.virtualNetworkPeerings = [];
|
||
|
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: virtualNetworkValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(0);
|
||
|
});
|
||
|
|
||
|
it('valid', () => {
|
||
|
let errors = validation.validate({
|
||
|
settings: settings,
|
||
|
validations: virtualNetworkValidations
|
||
|
});
|
||
|
|
||
|
expect(errors.length).toEqual(0);
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('merge', () => {
|
||
|
let merge = virtualNetworkSettings.__get__('merge');
|
||
|
let validate = virtualNetworkSettings.__get__('validate');
|
||
|
let virtualNetworkSettingsDefaults = virtualNetworkSettings.__get__('VIRTUALNETWORK_SETTINGS_DEFAULTS');
|
||
|
let buildingBlockSettings = {
|
||
|
subscriptionId: '00000000-0000-1000-8000-000000000000',
|
||
|
resourceGroupName: 'test-rg',
|
||
|
location: 'westus'
|
||
|
};
|
||
|
|
||
|
describe('customizer', () => {
|
||
|
let virtualNetworkSettings = [
|
||
|
{
|
||
|
name: 'my-virtual-network',
|
||
|
addressPrefixes: [
|
||
|
'10.0.0.0/16'
|
||
|
],
|
||
|
subnets: [
|
||
|
{
|
||
|
name: 'web',
|
||
|
addressPrefix: '10.0.1.0/24'
|
||
|
}
|
||
|
],
|
||
|
dnsServers: ['10.0.0.1'],
|
||
|
virtualNetworkPeerings: [
|
||
|
{
|
||
|
name: 'peering-name',
|
||
|
remoteVirtualNetwork: {
|
||
|
name: 'my-other-virtual-network'
|
||
|
},
|
||
|
allowForwardedTraffic: false,
|
||
|
allowGatewayTransit: false,
|
||
|
useRemoteGateways: true
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
];
|
||
|
|
||
|
it('defaults', () => {
|
||
|
let result = merge({
|
||
|
settings: [{}],
|
||
|
buildingBlockSettings: buildingBlockSettings
|
||
|
});
|
||
|
|
||
|
expect(result[0].addressPrefixes).toEqual(virtualNetworkSettingsDefaults.addressPrefixes);
|
||
|
expect(result[0].subnets).toEqual(virtualNetworkSettingsDefaults.subnets);
|
||
|
expect(result[0].dnsServers).toEqual(virtualNetworkSettingsDefaults.dnsServers);
|
||
|
expect(result[0].tags).toEqual(virtualNetworkSettingsDefaults.tags);
|
||
|
expect(result[0].virtualNetworkPeerings).toEqual([]);
|
||
|
});
|
||
|
|
||
|
describe('', () => {
|
||
|
let settings;
|
||
|
beforeEach(() => {
|
||
|
settings = _.cloneDeep(virtualNetworkSettings);
|
||
|
});
|
||
|
|
||
|
it('subnets undefined', () => {
|
||
|
delete settings[0].subnets;
|
||
|
let merged = validation.merge(settings, virtualNetworkSettingsDefaults);
|
||
|
expect(merged[0].subnets.length).toEqual(0);
|
||
|
});
|
||
|
|
||
|
it('subnets null', () => {
|
||
|
settings[0].subnets = null;
|
||
|
let merged = validation.merge(settings, virtualNetworkSettingsDefaults);
|
||
|
expect(merged[0].subnets.length).toEqual(0);
|
||
|
});
|
||
|
|
||
|
it('subnets present', () => {
|
||
|
let merged = validation.merge(settings, virtualNetworkSettingsDefaults);
|
||
|
expect(merged[0].subnets.length).toEqual(1);
|
||
|
expect(merged[0].subnets[0].name).toEqual('web');
|
||
|
expect(merged[0].subnets[0].addressPrefix).toEqual('10.0.1.0/24');
|
||
|
});
|
||
|
|
||
|
it('virtualNetworkPeerings undefined', () => {
|
||
|
delete settings[0].virtualNetworkPeerings;
|
||
|
let merged = validation.merge(settings, virtualNetworkSettingsDefaults);
|
||
|
expect(merged[0].virtualNetworkPeerings.length).toEqual(0);
|
||
|
});
|
||
|
|
||
|
it('virtualNetworkPeerings null', () => {
|
||
|
settings[0].virtualNetworkPeerings = null;
|
||
|
let merged = validation.merge(settings, virtualNetworkSettingsDefaults);
|
||
|
expect(merged[0].virtualNetworkPeerings.length).toEqual(0);
|
||
|
});
|
||
|
|
||
|
it('virtualNetworkPeerings present', () => {
|
||
|
let merged = validation.merge(settings, virtualNetworkSettingsDefaults);
|
||
|
expect(merged[0].virtualNetworkPeerings.length).toEqual(1);
|
||
|
expect(merged[0].virtualNetworkPeerings[0].name).toEqual('peering-name');
|
||
|
});
|
||
|
|
||
|
it('virtual network location and peering cannot be different', () => {
|
||
|
settings[0].location = 'westus';
|
||
|
settings[0].virtualNetworkPeerings[0].remoteVirtualNetwork.location = 'centralus';
|
||
|
|
||
|
let merged = merge({
|
||
|
settings: settings,
|
||
|
buildingBlockSettings: buildingBlockSettings
|
||
|
});
|
||
|
let results = validate({settings: merged});
|
||
|
expect(results.length).toEqual(1);
|
||
|
});
|
||
|
|
||
|
it('multiple virtualNetworkPeerings present with missing properties (defaults)', () => {
|
||
|
settings[0].virtualNetworkPeerings.push(
|
||
|
{
|
||
|
name: 'peering-name1',
|
||
|
remoteVirtualNetwork: {
|
||
|
name: 'my-other-virtual-network1'
|
||
|
},
|
||
|
allowForwardedTraffic: true
|
||
|
}
|
||
|
);
|
||
|
let merged = validation.merge(settings, virtualNetworkSettingsDefaults);
|
||
|
expect(merged[0].virtualNetworkPeerings.length).toEqual(2);
|
||
|
expect(merged[0].virtualNetworkPeerings[0].name).toEqual('peering-name');
|
||
|
expect(merged[0].virtualNetworkPeerings[0].remoteVirtualNetwork.name).toEqual('my-other-virtual-network');
|
||
|
expect(merged[0].virtualNetworkPeerings[0].allowForwardedTraffic).toEqual(false);
|
||
|
expect(merged[0].virtualNetworkPeerings[0].allowGatewayTransit).toEqual(false);
|
||
|
expect(merged[0].virtualNetworkPeerings[0].useRemoteGateways).toEqual(true);
|
||
|
expect(merged[0].virtualNetworkPeerings[1].name).toEqual('peering-name1');
|
||
|
expect(merged[0].virtualNetworkPeerings[1].remoteVirtualNetwork.name).toEqual('my-other-virtual-network1');
|
||
|
expect(merged[0].virtualNetworkPeerings[1].allowForwardedTraffic).toEqual(true);
|
||
|
expect(merged[0].virtualNetworkPeerings[1].allowGatewayTransit).toEqual(false);
|
||
|
expect(merged[0].virtualNetworkPeerings[1].useRemoteGateways).toEqual(false);
|
||
|
});
|
||
|
|
||
|
it('multiple virtualNetworkSettings with multiple virtualNetworkPeerings with missing properties (defaults)', () => {
|
||
|
settings.push(_.cloneDeep(virtualNetworkSettings[0]));
|
||
|
delete settings[0].subnets;
|
||
|
settings[0].virtualNetworkPeerings.push(
|
||
|
{
|
||
|
name: 'peering-name1',
|
||
|
remoteVirtualNetwork: {
|
||
|
name: 'my-other-virtual-network1'
|
||
|
},
|
||
|
allowForwardedTraffic: true
|
||
|
}
|
||
|
);
|
||
|
settings[1].virtualNetworkPeerings.push(
|
||
|
{
|
||
|
name: 'peering-name1',
|
||
|
remoteVirtualNetwork: {
|
||
|
name: 'my-other-virtual-network1'
|
||
|
},
|
||
|
allowForwardedTraffic: true,
|
||
|
allowGatewayTransit: true
|
||
|
}
|
||
|
);
|
||
|
let merged = validation.merge(settings, virtualNetworkSettingsDefaults);
|
||
|
expect(merged[0].subnets.length).toEqual(0);
|
||
|
expect(merged[0].virtualNetworkPeerings.length).toEqual(2);
|
||
|
expect(merged[0].virtualNetworkPeerings[0].name).toEqual('peering-name');
|
||
|
expect(merged[0].virtualNetworkPeerings[0].remoteVirtualNetwork.name).toEqual('my-other-virtual-network');
|
||
|
expect(merged[0].virtualNetworkPeerings[0].allowForwardedTraffic).toEqual(false);
|
||
|
expect(merged[0].virtualNetworkPeerings[0].allowGatewayTransit).toEqual(false);
|
||
|
expect(merged[0].virtualNetworkPeerings[0].useRemoteGateways).toEqual(true);
|
||
|
expect(merged[0].virtualNetworkPeerings[1].name).toEqual('peering-name1');
|
||
|
expect(merged[0].virtualNetworkPeerings[1].remoteVirtualNetwork.name).toEqual('my-other-virtual-network1');
|
||
|
expect(merged[0].virtualNetworkPeerings[1].allowForwardedTraffic).toEqual(true);
|
||
|
expect(merged[0].virtualNetworkPeerings[1].allowGatewayTransit).toEqual(false);
|
||
|
expect(merged[0].virtualNetworkPeerings[1].useRemoteGateways).toEqual(false);
|
||
|
expect(merged[1].subnets.length).toEqual(1);
|
||
|
expect(merged[1].virtualNetworkPeerings.length).toEqual(2);
|
||
|
expect(merged[1].virtualNetworkPeerings[0].name).toEqual('peering-name');
|
||
|
expect(merged[1].virtualNetworkPeerings[0].remoteVirtualNetwork.name).toEqual('my-other-virtual-network');
|
||
|
expect(merged[1].virtualNetworkPeerings[0].allowForwardedTraffic).toEqual(false);
|
||
|
expect(merged[1].virtualNetworkPeerings[0].allowGatewayTransit).toEqual(false);
|
||
|
expect(merged[1].virtualNetworkPeerings[0].useRemoteGateways).toEqual(true);
|
||
|
expect(merged[1].virtualNetworkPeerings[1].name).toEqual('peering-name1');
|
||
|
expect(merged[1].virtualNetworkPeerings[1].remoteVirtualNetwork.name).toEqual('my-other-virtual-network1');
|
||
|
expect(merged[1].virtualNetworkPeerings[1].allowForwardedTraffic).toEqual(true);
|
||
|
expect(merged[1].virtualNetworkPeerings[1].allowGatewayTransit).toEqual(true);
|
||
|
expect(merged[1].virtualNetworkPeerings[1].useRemoteGateways).toEqual(false);
|
||
|
});
|
||
|
|
||
|
it('setupResources', () => {
|
||
|
let result = merge({
|
||
|
settings: settings,
|
||
|
buildingBlockSettings: buildingBlockSettings
|
||
|
});
|
||
|
|
||
|
expect(result[0].subscriptionId).toEqual(buildingBlockSettings.subscriptionId);
|
||
|
expect(result[0].resourceGroupName).toEqual(buildingBlockSettings.resourceGroupName);
|
||
|
expect(result[0].location).toEqual(buildingBlockSettings.location);
|
||
|
|
||
|
expect(result[0].virtualNetworkPeerings[0].remoteVirtualNetwork.subscriptionId).toEqual(buildingBlockSettings.subscriptionId);
|
||
|
expect(result[0].virtualNetworkPeerings[0].remoteVirtualNetwork.resourceGroupName).toEqual(buildingBlockSettings.resourceGroupName);
|
||
|
expect(result[0].virtualNetworkPeerings[0].remoteVirtualNetwork.location).toEqual(buildingBlockSettings.location);
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('userDefaults', () => {
|
||
|
let merge = virtualNetworkSettings.__get__('merge');
|
||
|
let buildingBlockSettings = {
|
||
|
subscriptionId: '00000000-0000-1000-8000-000000000000',
|
||
|
resourceGroupName: 'test-rg',
|
||
|
location: 'westus'
|
||
|
};
|
||
|
|
||
|
describe('customizer', () => {
|
||
|
let virtualNetworkSettings = [
|
||
|
{
|
||
|
name: 'my-virtual-network',
|
||
|
addressPrefixes: [
|
||
|
'10.0.0.0/16'
|
||
|
],
|
||
|
subnets: [
|
||
|
{
|
||
|
name: 'web',
|
||
|
addressPrefix: '10.0.1.0/24'
|
||
|
}
|
||
|
],
|
||
|
dnsServers: ['10.0.0.1'],
|
||
|
virtualNetworkPeerings: [
|
||
|
{
|
||
|
name: 'peering-name',
|
||
|
remoteVirtualNetwork: {
|
||
|
name: 'my-other-virtual-network'
|
||
|
},
|
||
|
allowForwardedTraffic: false,
|
||
|
allowGatewayTransit: false,
|
||
|
useRemoteGateways: true
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
];
|
||
|
|
||
|
let defaultsVirtualNetwork = [
|
||
|
{
|
||
|
name: 'default-virtual-network',
|
||
|
addressPrefixes: [
|
||
|
'10.1.0.0/16'
|
||
|
],
|
||
|
subnets: [
|
||
|
{
|
||
|
name: 'default2subnet',
|
||
|
addressPrefix: '10.1.1.0/26'
|
||
|
},
|
||
|
{
|
||
|
name: 'default2subnet',
|
||
|
addressPrefix: '10.1.1.64/26'
|
||
|
},
|
||
|
{
|
||
|
name: 'default3subnet',
|
||
|
addressPrefix: '10.1.1.128/25'
|
||
|
}
|
||
|
],
|
||
|
dnsServers: ['10.1.0.1'],
|
||
|
virtualNetworkPeerings: [
|
||
|
{
|
||
|
name: 'default-peering-name',
|
||
|
remoteVirtualNetwork: {
|
||
|
name: 'default-secondary-virtual-network'
|
||
|
},
|
||
|
allowForwardedTraffic: true,
|
||
|
allowGatewayTransit: true,
|
||
|
useRemoteGateways: false
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
];
|
||
|
|
||
|
let settings;
|
||
|
let defaults;
|
||
|
beforeEach(() => {
|
||
|
settings = _.cloneDeep(virtualNetworkSettings);
|
||
|
defaults = _.cloneDeep(defaultsVirtualNetwork);
|
||
|
});
|
||
|
|
||
|
it('subnets undefined both at user-params and user-defaults', () => {
|
||
|
delete settings[0].subnets;
|
||
|
delete defaults[0].subnets;
|
||
|
|
||
|
let merged = merge({
|
||
|
settings,
|
||
|
buildingBlockSettings,
|
||
|
defaultSettings: defaults });
|
||
|
expect(merged[0].subnets.length).toEqual(0);
|
||
|
});
|
||
|
|
||
|
it('subnets null', () => {
|
||
|
settings[0].subnets = null;
|
||
|
|
||
|
defaults[0].subnets = null;
|
||
|
|
||
|
let merged = merge({
|
||
|
settings,
|
||
|
buildingBlockSettings,
|
||
|
defaultSettings: defaults });
|
||
|
expect(merged[0].subnets.length).toEqual(0);
|
||
|
});
|
||
|
|
||
|
it('subnets present', () => {
|
||
|
let merged = merge({
|
||
|
settings,
|
||
|
buildingBlockSettings,
|
||
|
defaultSettings: defaults });
|
||
|
|
||
|
expect(merged[0].subnets.length).toEqual(1);
|
||
|
expect(merged[0].subnets[0].name).toEqual('web');
|
||
|
expect(merged[0].subnets[0].addressPrefix).toEqual('10.0.1.0/24');
|
||
|
});
|
||
|
|
||
|
it('virtualNetworkPeerings undefined', () => {
|
||
|
delete settings[0].virtualNetworkPeerings;
|
||
|
delete defaults[0].virtualNetworkPeerings;
|
||
|
|
||
|
let merged = merge({
|
||
|
settings,
|
||
|
buildingBlockSettings,
|
||
|
defaultSettings: defaults });
|
||
|
|
||
|
expect(merged[0].virtualNetworkPeerings.length).toEqual(0);
|
||
|
});
|
||
|
|
||
|
it('virtualNetworkPeerings null', () => {
|
||
|
settings[0].virtualNetworkPeerings = null;
|
||
|
|
||
|
defaults[0].virtualNetworkPeerings = null;
|
||
|
|
||
|
let merged = merge({
|
||
|
settings,
|
||
|
buildingBlockSettings,
|
||
|
defaultSettings: defaults });
|
||
|
|
||
|
expect(merged[0].virtualNetworkPeerings.length).toEqual(0);
|
||
|
});
|
||
|
|
||
|
it('virtualNetworkPeerings present', () => {
|
||
|
let merged = merge({
|
||
|
settings,
|
||
|
buildingBlockSettings,
|
||
|
defaultSettings: defaults });
|
||
|
|
||
|
expect(merged[0].virtualNetworkPeerings.length).toEqual(1);
|
||
|
expect(merged[0].virtualNetworkPeerings[0].name).toEqual('peering-name');
|
||
|
});
|
||
|
|
||
|
it('multiple virtualNetworkPeerings present with missing properties (defaults)', () => {
|
||
|
settings[0].virtualNetworkPeerings.push(
|
||
|
{
|
||
|
name: 'peering-name1',
|
||
|
remoteVirtualNetwork: {
|
||
|
name: 'my-other-virtual-network1'
|
||
|
},
|
||
|
allowForwardedTraffic: true,
|
||
|
allowGatewayTransit: false,
|
||
|
useRemoteGateways: true
|
||
|
}
|
||
|
);
|
||
|
defaults[0].virtualNetworkPeerings.push(
|
||
|
{
|
||
|
name: 'defasult2-peering-name',
|
||
|
remoteVirtualNetwork: {
|
||
|
name: 'default2-secondary-virtual-network'
|
||
|
},
|
||
|
allowForwardedTraffic: false
|
||
|
}
|
||
|
);
|
||
|
|
||
|
let merged = merge({
|
||
|
settings,
|
||
|
buildingBlockSettings,
|
||
|
defaultSettings: defaults });
|
||
|
|
||
|
expect(merged[0].virtualNetworkPeerings.length).toEqual(2);
|
||
|
expect(merged[0].virtualNetworkPeerings[0].name).toEqual('peering-name');
|
||
|
expect(merged[0].virtualNetworkPeerings[0].remoteVirtualNetwork.name).toEqual('my-other-virtual-network');
|
||
|
expect(merged[0].virtualNetworkPeerings[0].allowForwardedTraffic).toEqual(false);
|
||
|
expect(merged[0].virtualNetworkPeerings[0].allowGatewayTransit).toEqual(false);
|
||
|
expect(merged[0].virtualNetworkPeerings[0].useRemoteGateways).toEqual(true);
|
||
|
expect(merged[0].virtualNetworkPeerings[1].name).toEqual('peering-name1');
|
||
|
expect(merged[0].virtualNetworkPeerings[1].remoteVirtualNetwork.name).toEqual('my-other-virtual-network1');
|
||
|
expect(merged[0].virtualNetworkPeerings[1].allowForwardedTraffic).toEqual(true);
|
||
|
expect(merged[0].virtualNetworkPeerings[1].allowGatewayTransit).toEqual(false);
|
||
|
expect(merged[0].virtualNetworkPeerings[1].useRemoteGateways).toEqual(true);
|
||
|
});
|
||
|
|
||
|
it('multiple virtualNetworkSettings with multiple virtualNetworkPeerings with missing properties (defaults)', () => {
|
||
|
settings.push(_.cloneDeep(virtualNetworkSettings[0]));
|
||
|
defaults.push(_.cloneDeep(defaultsVirtualNetwork[0]));
|
||
|
delete settings[0].subnets;
|
||
|
delete defaults[0].subnets;
|
||
|
settings[0].virtualNetworkPeerings.push(
|
||
|
{
|
||
|
name: 'peering-name1',
|
||
|
remoteVirtualNetwork: {
|
||
|
name: 'my-other-virtual-network1'
|
||
|
},
|
||
|
allowForwardedTraffic: true
|
||
|
}
|
||
|
);
|
||
|
settings[1].virtualNetworkPeerings.push(
|
||
|
{
|
||
|
name: 'peering-name1',
|
||
|
remoteVirtualNetwork: {
|
||
|
name: 'my-other-virtual-network1'
|
||
|
},
|
||
|
allowForwardedTraffic: true,
|
||
|
allowGatewayTransit: true
|
||
|
}
|
||
|
);
|
||
|
defaults[0].virtualNetworkPeerings.push(
|
||
|
{
|
||
|
name: 'default-peering-name1',
|
||
|
remoteVirtualNetwork: {
|
||
|
name: 'default-virtual-network1'
|
||
|
},
|
||
|
allowForwardedTraffic: false
|
||
|
}
|
||
|
);
|
||
|
defaults[1].virtualNetworkPeerings.push(
|
||
|
{
|
||
|
name: 'default-peering-name1',
|
||
|
remoteVirtualNetwork: {
|
||
|
name: 'default-virtual-network1'
|
||
|
},
|
||
|
allowForwardedTraffic: false,
|
||
|
allowGatewayTransit: false
|
||
|
}
|
||
|
);
|
||
|
let merged = merge({
|
||
|
settings,
|
||
|
buildingBlockSettings,
|
||
|
defaultSettings: defaults });
|
||
|
|
||
|
expect(merged[0].subnets.length).toEqual(0);
|
||
|
expect(merged[0].virtualNetworkPeerings.length).toEqual(2);
|
||
|
expect(merged[0].virtualNetworkPeerings[0].name).toEqual('peering-name');
|
||
|
expect(merged[0].virtualNetworkPeerings[0].remoteVirtualNetwork.name).toEqual('my-other-virtual-network');
|
||
|
expect(merged[0].virtualNetworkPeerings[0].allowForwardedTraffic).toEqual(false);
|
||
|
expect(merged[0].virtualNetworkPeerings[0].allowGatewayTransit).toEqual(false);
|
||
|
expect(merged[0].virtualNetworkPeerings[0].useRemoteGateways).toEqual(true);
|
||
|
expect(merged[0].virtualNetworkPeerings[1].name).toEqual('peering-name1');
|
||
|
expect(merged[0].virtualNetworkPeerings[1].remoteVirtualNetwork.name).toEqual('my-other-virtual-network1');
|
||
|
expect(merged[0].virtualNetworkPeerings[1].allowForwardedTraffic).toEqual(true);
|
||
|
expect(merged[0].virtualNetworkPeerings[1].allowGatewayTransit).toEqual(true);
|
||
|
expect(merged[0].virtualNetworkPeerings[1].useRemoteGateways).toEqual(false);
|
||
|
expect(merged[1].subnets.length).toEqual(1);
|
||
|
expect(merged[1].virtualNetworkPeerings.length).toEqual(2);
|
||
|
expect(merged[1].virtualNetworkPeerings[0].name).toEqual('peering-name');
|
||
|
expect(merged[1].virtualNetworkPeerings[0].remoteVirtualNetwork.name).toEqual('my-other-virtual-network');
|
||
|
expect(merged[1].virtualNetworkPeerings[0].allowForwardedTraffic).toEqual(false);
|
||
|
expect(merged[1].virtualNetworkPeerings[0].allowGatewayTransit).toEqual(false);
|
||
|
expect(merged[1].virtualNetworkPeerings[0].useRemoteGateways).toEqual(true);
|
||
|
expect(merged[1].virtualNetworkPeerings[1].name).toEqual('peering-name1');
|
||
|
expect(merged[1].virtualNetworkPeerings[1].remoteVirtualNetwork.name).toEqual('my-other-virtual-network1');
|
||
|
expect(merged[1].virtualNetworkPeerings[1].allowForwardedTraffic).toEqual(true);
|
||
|
expect(merged[1].virtualNetworkPeerings[1].allowGatewayTransit).toEqual(true);
|
||
|
expect(merged[1].virtualNetworkPeerings[1].useRemoteGateways).toEqual(false);
|
||
|
});
|
||
|
|
||
|
it('if user-defaults object arrays contain elements, but userparams comes empty, all object array properties will come empty', () => {
|
||
|
let merged = merge({
|
||
|
settings: [{}],
|
||
|
buildingBlockSettings: buildingBlockSettings,
|
||
|
defaultSettings: defaults
|
||
|
});
|
||
|
|
||
|
expect(merged[0].name).toEqual('default-virtual-network');
|
||
|
expect(merged[0].addressPrefixes.length).toEqual(1);
|
||
|
expect(merged[0].subnets.length).toEqual(0);
|
||
|
expect(merged[0].dnsServers).toEqual(defaultsVirtualNetwork[0].dnsServers);
|
||
|
expect(merged[0].tags).toEqual({});
|
||
|
expect(merged[0].virtualNetworkPeerings.length).toEqual(0);
|
||
|
});
|
||
|
|
||
|
it('setupResources with user-defaults', () => {
|
||
|
let merged = merge({
|
||
|
settings: settings,
|
||
|
buildingBlockSettings: buildingBlockSettings,
|
||
|
defaultSettings: defaults
|
||
|
});
|
||
|
|
||
|
expect(merged[0].subscriptionId).toEqual(buildingBlockSettings.subscriptionId);
|
||
|
expect(merged[0].resourceGroupName).toEqual(buildingBlockSettings.resourceGroupName);
|
||
|
expect(merged[0].location).toEqual(buildingBlockSettings.location);
|
||
|
|
||
|
expect(merged[0].virtualNetworkPeerings[0].remoteVirtualNetwork.subscriptionId).toEqual(buildingBlockSettings.subscriptionId);
|
||
|
expect(merged[0].virtualNetworkPeerings[0].remoteVirtualNetwork.resourceGroupName).toEqual(buildingBlockSettings.resourceGroupName);
|
||
|
expect(merged[0].virtualNetworkPeerings[0].remoteVirtualNetwork.location).toEqual(buildingBlockSettings.location);
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
if (global.testConfiguration.runTransform) {
|
||
|
describe('process', () => {
|
||
|
let virtualNetworkSettingsWithPeering = [
|
||
|
{
|
||
|
name: 'my-virtual-network',
|
||
|
addressPrefixes: [
|
||
|
'10.0.0.0/16'
|
||
|
],
|
||
|
subnets: [
|
||
|
{
|
||
|
name: 'web',
|
||
|
addressPrefix: '10.0.1.0/24'
|
||
|
},
|
||
|
{
|
||
|
name: 'biz',
|
||
|
addressPrefix: '10.0.2.0/24'
|
||
|
}
|
||
|
],
|
||
|
dnsServers: [],
|
||
|
virtualNetworkPeerings: [
|
||
|
{
|
||
|
remoteVirtualNetwork: {
|
||
|
name: 'my-other-virtual-network'
|
||
|
},
|
||
|
allowGatewayTransit: true,
|
||
|
useRemoteGateways: false
|
||
|
},
|
||
|
{
|
||
|
name: 'provided-peering-name',
|
||
|
remoteVirtualNetwork: {
|
||
|
name: 'my-third-virtual-network',
|
||
|
resourceGroupName: 'different-resource-group'
|
||
|
},
|
||
|
allowForwardedTraffic: false,
|
||
|
allowGatewayTransit: false,
|
||
|
useRemoteGateways: true
|
||
|
}
|
||
|
],
|
||
|
tags: {
|
||
|
tag1: 'value1',
|
||
|
tag2: 'value2',
|
||
|
tag3: 'value3'
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
name: 'my-other-virtual-network',
|
||
|
addressPrefixes: [
|
||
|
'10.1.0.0/16'
|
||
|
],
|
||
|
subnets: [
|
||
|
{
|
||
|
name: 'web',
|
||
|
addressPrefix: '10.1.1.0/24'
|
||
|
},
|
||
|
{
|
||
|
name: 'biz',
|
||
|
addressPrefix: '10.1.2.0/24'
|
||
|
}
|
||
|
],
|
||
|
dnsServers: [],
|
||
|
virtualNetworkPeerings: [
|
||
|
{
|
||
|
name: 'another-provided-peering-name',
|
||
|
remoteVirtualNetwork: {
|
||
|
name: 'my-third-virtual-network',
|
||
|
resourceGroupName: 'different-resource-group'
|
||
|
},
|
||
|
allowForwardedTraffic: false,
|
||
|
allowGatewayTransit: false,
|
||
|
useRemoteGateways: true
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
name: 'my-third-virtual-network',
|
||
|
addressPrefixes: [
|
||
|
'10.2.0.0/16'
|
||
|
],
|
||
|
subnets: [
|
||
|
{
|
||
|
name: 'web',
|
||
|
addressPrefix: '10.2.1.0/24'
|
||
|
},
|
||
|
{
|
||
|
name: 'biz',
|
||
|
addressPrefix: '10.2.2.0/24'
|
||
|
}
|
||
|
],
|
||
|
dnsServers: [],
|
||
|
virtualNetworkPeerings: []
|
||
|
}
|
||
|
];
|
||
|
|
||
|
let buildingBlockSettings = {
|
||
|
subscriptionId: '00000000-0000-1000-8000-000000000000',
|
||
|
resourceGroupName: 'test-rg',
|
||
|
location: 'westus'
|
||
|
};
|
||
|
|
||
|
let settings;
|
||
|
beforeEach(() => {
|
||
|
settings = _.cloneDeep(virtualNetworkSettingsWithPeering);
|
||
|
});
|
||
|
|
||
|
it('single virtual network with no peers', () => {
|
||
|
settings = settings[0];
|
||
|
delete settings.virtualNetworkPeerings;
|
||
|
let result = virtualNetworkSettings.process({
|
||
|
settings: settings,
|
||
|
buildingBlockSettings: buildingBlockSettings
|
||
|
});
|
||
|
|
||
|
expect(result.resourceGroups.length).toEqual(1);
|
||
|
expect(result.parameters.virtualNetworks.length).toBe(1);
|
||
|
});
|
||
|
|
||
|
it('single virtual network with defaults', () => {
|
||
|
settings = settings[0];
|
||
|
delete settings.subnets[0].name;
|
||
|
delete settings.virtualNetworkPeerings[0].allowForwardedTraffic;
|
||
|
delete settings.virtualNetworkPeerings[0].allowGatewayTransit;
|
||
|
delete settings.virtualNetworkPeerings[0].useRemoteGateways;
|
||
|
let defaults = [{
|
||
|
subnets: [
|
||
|
{
|
||
|
name: 'default'
|
||
|
}
|
||
|
],
|
||
|
virtualNetworkPeerings: [
|
||
|
{
|
||
|
allowForwardedTraffic: true,
|
||
|
allowGatewayTransit: true,
|
||
|
useRemoteGateways: true
|
||
|
}
|
||
|
]
|
||
|
}];
|
||
|
|
||
|
let result = virtualNetworkSettings.process({
|
||
|
settings: [settings],
|
||
|
buildingBlockSettings: buildingBlockSettings,
|
||
|
defaultSettings: defaults
|
||
|
});
|
||
|
|
||
|
expect(result.resourceGroups.length).toEqual(1);
|
||
|
expect(result.parameters.virtualNetworks.length).toBe(1);
|
||
|
expect(result.parameters.virtualNetworks[0].properties.subnets[0].name).toEqual('default');
|
||
|
expect(result.parameters.virtualNetworkPeerings[0].properties.allowForwardedTraffic).toEqual(true);
|
||
|
expect(result.parameters.virtualNetworkPeerings[0].properties.allowGatewayTransit).toEqual(true);
|
||
|
expect(result.parameters.virtualNetworkPeerings[0].properties.useRemoteGateways).toEqual(true);
|
||
|
});
|
||
|
|
||
|
it('single virtual network with peers', () => {
|
||
|
settings = settings[0];
|
||
|
|
||
|
let result = virtualNetworkSettings.process({
|
||
|
settings: settings,
|
||
|
buildingBlockSettings: buildingBlockSettings
|
||
|
});
|
||
|
|
||
|
expect(result.parameters.virtualNetworks.length).toBe(1);
|
||
|
expect(result.parameters.virtualNetworkPeerings.length).toBe(2);
|
||
|
expect(Object.keys(result.parameters.virtualNetworks[0].tags).length).toEqual(3);
|
||
|
expect(result.parameters.virtualNetworks[0].tags.tag1).toEqual('value1');
|
||
|
expect(result.parameters.virtualNetworks[0].tags.tag2).toEqual('value2');
|
||
|
expect(result.parameters.virtualNetworks[0].tags.tag3).toEqual('value3');
|
||
|
});
|
||
|
|
||
|
it('multiple virtual network with peers', () => {
|
||
|
let result = virtualNetworkSettings.process({
|
||
|
settings: settings,
|
||
|
buildingBlockSettings: buildingBlockSettings
|
||
|
});
|
||
|
|
||
|
expect(result.parameters.virtualNetworks.length).toBe(3);
|
||
|
expect(result.parameters.virtualNetworkPeerings.length).toBe(3);
|
||
|
expect(Object.keys(result.parameters.virtualNetworks[0].tags).length).toEqual(3);
|
||
|
expect(result.parameters.virtualNetworks[0].tags.tag1).toEqual('value1');
|
||
|
expect(result.parameters.virtualNetworks[0].tags.tag2).toEqual('value2');
|
||
|
expect(result.parameters.virtualNetworks[0].tags.tag3).toEqual('value3');
|
||
|
});
|
||
|
|
||
|
it('test settings validation errors', () => {
|
||
|
delete settings[0].name;
|
||
|
expect(() => {
|
||
|
virtualNetworkSettings.process({
|
||
|
settings: settings,
|
||
|
buildingBlockSettings: buildingBlockSettings
|
||
|
});
|
||
|
}).toThrow();
|
||
|
});
|
||
|
|
||
|
it('test building blocks validation errors', () => {
|
||
|
let bbSettings = _.cloneDeep(buildingBlockSettings);
|
||
|
delete bbSettings.subscriptionId;
|
||
|
expect(() => {
|
||
|
virtualNetworkSettings.process({
|
||
|
settings: settings,
|
||
|
buildingBlockSettings: bbSettings
|
||
|
});
|
||
|
}).toThrow();
|
||
|
});
|
||
|
|
||
|
it('virtual network location and peering cannot be different', () => {
|
||
|
settings[0].location = 'westus';
|
||
|
settings[0].virtualNetworkPeerings[0].remoteVirtualNetwork.location = 'centralus';
|
||
|
|
||
|
expect(() => {
|
||
|
virtualNetworkSettings.process({
|
||
|
settings: settings,
|
||
|
buildingBlockSettings: buildingBlockSettings
|
||
|
});
|
||
|
}).toThrow();
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
});
|