vaguerent/test/unit/plugins/kernel_v2/config/cloud_init_test.rb

116 lines
2.5 KiB
Ruby

# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: BUSL-1.1
require File.expand_path("../../../../base", __FILE__)
require Vagrant.source_root.join("plugins/kernel_v2/config/cloud_init")
describe VagrantPlugins::Kernel_V2::VagrantConfigCloudInit do
include_context "unit"
subject { described_class.new(:user_data) }
let(:provider) { double("provider") }
let(:machine) { double("machine", name: "rspec", provider: provider,
env: Vagrant::Environment.new) }
def assert_invalid
errors = subject.validate(machine)
if errors.empty?
raise "No errors: #{errors.inspect}"
end
end
def assert_valid
errors = subject.validate(machine)
if !errors.empty?
raise "Errors: #{errors.inspect}"
end
end
before do
env = double("env")
subject.content_type = "text/cloud-config"
subject.inline = <<-CONFIG
package_update: true
CONFIG
end
describe "#validate" do
context "with defaults" do
it "is a valid config" do
subject.finalize!
assert_valid
end
it "sets a content_type" do
subject.finalize!
expect(subject.content_type).to eq("text/cloud-config")
end
context "with no type set" do
let(:type_subject) { described_class.new }
before do
type_subject.content_type = "text/cloud-config"
type_subject.inline = <<-CONFIG
package_update: true
CONFIG
end
it "defaults to a type" do
type_subject.finalize!
expect(type_subject.type).to eq(:user_data)
end
end
end
context "with an invalid option set" do
before do
subject.content_type = "text/not-real-option"
end
it "is an invalid config" do
subject.finalize!
assert_invalid
end
end
context "with both path and inline set" do
before do
subject.path = "path/to/option"
subject.inline = "package_update: true"
end
it "is an invalid config" do
subject.finalize!
assert_invalid
end
end
context "with inline set as an invalid type" do
before do
subject.path = :i_am_a_symbol
end
it "is an invalid config" do
subject.finalize!
assert_invalid
end
end
context "with path set as an invalid type" do
before do
subject.inline = :i_am_a_symbol
end
it "is an invalid config" do
subject.finalize!
assert_invalid
end
end
end
end