Sha256: b3816e9e2895e308ff4110c1bd68e50b4d7a6dd8ba72861e0bc7430ffeca2ab1

Contents?: true

Size: 1.67 KB

Versions: 2

Compression:

Stored size: 1.67 KB

Contents

require 'spec_helper'

describe Vagrant::Boxen::Provisioner do
	let(:uuid)                  { 'box-uuid' }
	let(:config)                { described_class::Config.new }
	let(:puppet_manifests_path) { "/tmp/vagrant-boxen-#{uuid}" }
	let(:puppet_module_path)    { File.join(File.expand_path('../../../', __FILE__), 'puppet/modules') }

	before do
		@app, @env = action_env(vagrant_env.vms.values.first.env)
		@env['vm'].stub(:uuid => uuid)
	end

	subject { described_class.new(@env, config) }

	describe 'inner puppet provisioner configuration' do
		# REFACTOR: This is way too much coupling
		let(:puppet_config) { subject.instance_variable_get(:@puppet_provisioner).config }

		it 'sets module path to vendored puppet modules' do
			puppet_config.module_path.should == puppet_module_path
		end

		it 'sets the manifest path to the tmp folder' do
			puppet_config.manifests_path.should == puppet_manifests_path
		end
	end

	describe 'provisioner flow' do
		let(:puppet) { fire_double('Vagrant::Provisioners::Puppet', :prepare => true, :provision! => true) }
		subject { described_class.new(@env, config, puppet) }

		context 'preparation' do
			before { subject.prepare }

			it 'generates box manifest on tmp folder based on enabled modules' do
				File.read("#{puppet_manifests_path}/site.pp").should_not =~ /memcached/
				config.memcached!
				subject.prepare
				File.read("#{puppet_manifests_path}/site.pp").should =~ /memcached/
			end

			it 'delegates to puppet provisioner' do
				puppet.should have_received(:prepare)
			end
		end

		context 'provisioning' do
			before { subject.provision! }

			it 'delegates to puppet provisioner' do
				puppet.should have_received(:provision!)
			end
		end
	end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
vagrant-boxen-0.0.2 spec/unit/provisioner_spec.rb
vagrant-boxen-0.0.1 spec/unit/provisioner_spec.rb