vagrant-lxc-ng/spec/vagrant_up_spec.rb
2013-02-25 02:04:31 -03:00

149 lines
3.9 KiB
Ruby

require 'spec_helper'
describe 'vagrant up' do
context 'given the machine has not been created yet' do
let(:output) { @output }
let(:containers) { @containers }
let(:users) { File.read '/var/lib/lxc/vagrant-container/rootfs/etc/passwd' }
let(:sudoers) { `sudo cat /var/lib/lxc/vagrant-container/rootfs/etc/sudoers` }
let(:rinetd_conf) { File.read('/etc/rinetd.conf') }
before :all do
destroy_container!
configure_box_with :ip => '10.0.3.121'
@output = provider_up
@containers = `sudo lxc-ls`.split
end
it 'outputs some debugging info' do
output.should =~ /INFO lxc: Creating container.../
output.should =~ /INFO lxc: Container started/
end
it 'creates an lxc container' do
containers.should include 'vagrant-container'
end
it 'sets up the vagrant user with passwordless sudo' do
users.should =~ /vagrant/
sudoers.should =~ /Defaults\s+exempt_group=admin/
sudoers.should =~ /%admin ALL=NOPASSWD:ALL/
end
it 'automagically shares the root folder' do
output.should =~ /Sharing \/vagrant\/tmp as \/vagrant/
end
it 'automagically redirects 2222 port to 22 on guest machine'
end
context 'given the machine was created and is down' do
let(:output) { @output }
let(:info) { @info }
before :all do
destroy_container!
provider_up
`sudo lxc-stop -n vagrant-container`
@output = provider_up
@info = `sudo lxc-info -n vagrant-container`
end
it 'outputs some debugging info' do
output.should =~ /INFO lxc: Container already created, moving on/
output.should =~ /INFO lxc: Container started/
end
it 'starts the container' do
info.should =~ /RUNNING/
end
end
context 'given the machine is up already' do
let(:output) { @output }
let(:containers) { @containers }
before :all do
destroy_container!
provider_up
@output = provider_up
end
it 'outputs some debugging info' do
output.should =~ /INFO lxc: Container already created, moving on/
output.should =~ /INFO lxc: Container already started/
end
end
context 'given an ip was specified' do
let(:ip) { '10.0.3.100' }
let(:output) { @output }
before :all do
destroy_container!
configure_box_with :ip => ip
@output = provider_up
end
it 'sets up container ip' do
`ping -c1 #{ip} > /dev/null && echo -n 'yes'`.should == 'yes'
end
end
context 'given a port was configured to be forwarded' do
let(:ip) { '10.0.3.101' }
let(:output) { @output }
let(:rinetd_conf) { File.read('/etc/rinetd.conf') }
before :all do
destroy_container!
configure_box_with :forwards => [[3333, 33]], :ip => ip
@output = provider_up
end
after :all do
restore_rinetd_conf!
end
it 'ouputs some debugging info' do
output.should =~ /Forwarding ports\.\.\./
output.should =~ /33 => 3333/
output.should =~ /Restarting rinetd/
end
it 'sets configs for rinetd' do
rinetd_conf.should =~ /0\.0\.0\.0\s+3333\s+#{Regexp.escape ip}\s+33/
end
end
context 'given a folder was configured to be shared' do
let(:ip) { '10.0.3.100' }
let(:output) { @output }
before :all do
destroy_container!
configure_box_with({
:ip => ip,
:shared_folders => [
{'source' => '/vagrant', 'destination' => '/tmp/vagrant-all'}
]
})
@output = provider_up
`rm -f /vagrant/tmp/file-from-spec`
end
after :all do
`rm -f /vagrant/tmp/file-from-spec`
end
it 'ouputs some debugging info' do
output.should =~ /Sharing \/vagrant as \/tmp\/vagrant\-all/
end
it 'mounts the folder on the right path' do
`echo 'IT WORKS' > /vagrant/tmp/file-from-spec`
provider_ssh('c' => 'cat /tmp/vagrant-all/tmp/file-from-spec').should include 'IT WORKS'
end
end
end