metasploitable3/chef/cookbooks/docker/spec/docker_test/network_spec.rb

175 lines
5.0 KiB
Ruby

require 'spec_helper'
describe 'docker_test::network' do
cached(:chef_run) { ChefSpec::SoloRunner.new(platform: 'ubuntu', version: '16.04').converge(described_recipe) }
context 'creates a network with unicode name' do
it 'creates docker_network_seseme_straße' do
expect(chef_run).to create_docker_network('seseme_straße')
end
end
context 'creates a network with defaults' do
it 'creates docker_network_a' do
expect(chef_run).to create_docker_network('network_a')
end
it 'creates echo-base-network_a' do
expect(chef_run).to run_docker_container('echo-base-network_a')
end
it 'creates echo-station-network_a' do
expect(chef_run).to run_docker_container('echo-station-network_a')
end
end
context 'when testing network deletion' do
it 'creates network_b with the CLI' do
expect(chef_run).to run_execute('create network_b').with(
command: 'docker network create network_b'
)
end
it 'creates /marker_delete_network_b' do
expect(chef_run).to create_file('/marker_delete_network_b')
end
it 'deletes docker_network[network_b]' do
expect(chef_run).to delete_docker_network('network_b')
end
end
context 'creates a network with subnet and gateway' do
it 'creates docker_network_c' do
expect(chef_run).to create_docker_network('network_c').with(
subnet: '192.168.88.0/24',
gateway: '192.168.88.1'
)
end
it 'creates echo-base-network_c' do
expect(chef_run).to run_docker_container('echo-base-network_c')
end
it 'creates echo-station-network_c' do
expect(chef_run).to run_docker_container('echo-station-network_c')
end
end
context 'creates a network with aux_address' do
it 'creates docker_network_d' do
expect(chef_run).to create_docker_network('network_d').with(
subnet: '192.168.89.0/24',
gateway: '192.168.89.1',
aux_address: ['a=192.168.89.2', 'b=192.168.89.3']
)
end
it 'creates echo-base-network_d' do
expect(chef_run).to run_docker_container('echo-base-network_d')
end
it 'creates echo-station-network_d' do
expect(chef_run).to run_docker_container('echo-station-network_d')
end
end
context 'creates a network with overlay driver' do
it 'creates network_e' do
expect(chef_run).to create_docker_network('network_e').with(
driver: 'overlay'
)
end
end
context 'creates a network with an ip-range' do
it 'creates docker_network_f' do
expect(chef_run).to create_docker_network('network_f').with(
driver: 'bridge',
subnet: '172.28.0.0/16',
gateway: '172.28.5.254',
ip_range: '172.28.5.0/24'
)
end
it 'creates echo-base-network_f' do
expect(chef_run).to run_docker_container('echo-base-network_f')
end
it 'creates echo-station-network_f' do
expect(chef_run).to run_docker_container('echo-station-network_f')
end
end
context 'create an overlay network with multiple subnets' do
it 'creates docker_network_g' do
expect(chef_run).to create_docker_network('network_g').with(
driver: 'overlay',
subnet: ['192.168.0.0/16', '192.170.0.0/16'],
gateway: ['192.168.0.100', '192.170.0.100'],
ip_range: '192.168.1.0/24',
aux_address: ['a=192.168.1.5', 'b=192.168.1.6', 'a=192.170.1.5', 'b=192.170.1.6']
)
end
it 'creates echo-base-network_g' do
expect(chef_run).to run_docker_container('echo-base-network_g')
end
it 'creates echo-station-network_g' do
expect(chef_run).to run_docker_container('echo-station-network_g')
end
end
context 'connect and disconnect a container' do
it 'creates docker_network_h1' do
expect(chef_run).to create_docker_network('network_h1')
end
it 'creates docker_network_h2' do
expect(chef_run).to create_docker_network('network_h2')
end
it 'creates container1-network_h' do
expect(chef_run).to run_docker_container('container1-network_h')
end
it 'creates /marker/network_h' do
expect(chef_run).to create_file('/marker_network_h')
end
it 'connects container1-network_h with network_h2' do
expect(chef_run).to connect_docker_network('network_h2 connector').with(
container: 'container1-network_h'
)
end
it 'disconnects container1-network_h from network_h1' do
expect(chef_run).to disconnect_docker_network('network_h1 disconnector').with(
container: 'container1-network_h'
)
end
end
context 'ipv6 network' do
it 'creates docker_network_ipv6' do
expect(chef_run).to create_docker_network('network_ipv6').with(
enable_ipv6: true,
subnet: 'fd00:dead:beef::/48'
)
end
it 'creates docker_network_ipv4' do
expect(chef_run).to create_docker_network('network_ipv4')
end
end
context 'internal network' do
it 'creates docker_network_internal' do
expect(chef_run).to create_docker_network('network_internal').with(
internal: true
)
end
end
end