vagrant-lxc-ng/spec/unit/action/handle_box_metadata_spec.rb
Fabio Rehm 759b1c5f80 Extract rootfs tar contents into a tmp folder to avoid headaches and
check if a lxc-template file was included on .box
2013-03-08 00:55:58 -03:00

44 lines
1.5 KiB
Ruby

require 'unit_helper'
require 'vagrant-lxc/action/base_action'
require 'vagrant-lxc/action/handle_box_metadata'
describe Vagrant::LXC::Action::HandleBoxMetadata do
let(:metadata) { {'template-opts' => {'--foo' => 'bar'}} }
let(:box) { mock(:box, name: 'box-name', metadata: metadata, directory: box_directory) }
let(:box_directory) { Pathname.new('/path/to/box') }
let(:machine) { mock(:machine, box: box) }
let(:app) { mock(:app, call: true) }
let(:env) { {machine: machine} }
let(:tmpdir) { '/tmp/rootfs/dir' }
subject { described_class.new(app, env) }
before do
Dir.stub(mktmpdir: tmpdir)
File.stub(exists?: true)
subject.stub(:system)
subject.call(env)
end
it 'creates a tmp directory to store rootfs-cache-path' do
metadata['rootfs-cache-path'].should == tmpdir
end
it 'prepends vagrant and box name to template-name' do
metadata['template-name'].should == "vagrant-#{box.name}"
end
it 'copies box template file to the right folder' do
src = box_directory.join('lxc-template').to_s
dest = "/usr/share/lxc/templates/lxc-#{metadata['template-name']}"
subject.should have_received(:system).
with("sudo su root -c \"cp #{src} #{dest}\"")
end
it 'extracts rootfs into a tmp folder' do
subject.should have_received(:system).
with(%Q[sudo su root -c "cd #{box_directory} && tar xfz rootfs.tar.gz -C #{tmpdir}"])
end
end