vagrant/test/unit/plugins/provisioners/docker/config_test.rb

149 lines
3.5 KiB
Ruby

require File.expand_path("../../../../base", __FILE__)
require Vagrant.source_root.join("plugins/provisioners/docker/config")
describe VagrantPlugins::DockerProvisioner::Config do
subject { described_class.new }
describe "#build_image" do
it "stores them" do
subject.build_image("foo")
subject.build_image("bar", foo: :bar)
subject.finalize!
expect(subject.build_images.length).to eql(2)
expect(subject.build_images[0]).to eql(["foo", {}])
expect(subject.build_images[1]).to eql(["bar", { foo: :bar }])
end
end
describe "#images" do
it "stores them in a set" do
subject.images = ["1", "1", "2"]
subject.finalize!
expect(subject.images.to_a.sort).to eql(["1", "2"])
end
it "overrides previously set images" do
subject.images = ["3"]
subject.images = ["1", "1", "2"]
subject.finalize!
expect(subject.images.to_a.sort).to eql(["1", "2"])
end
end
describe "#merge" do
it "has all images to pull" do
subject.pull_images("1")
other = described_class.new
other.pull_images("2", "3")
result = subject.merge(other)
expect(result.images.to_a.sort).to eq(
["1", "2", "3"])
end
it "has all the containers to run" do
subject.run("foo", image: "bar", daemonize: false)
subject.run("bar")
other = described_class.new
other.run("foo", image: "foo")
result = subject.merge(other)
result.finalize!
cs = result.containers
expect(cs.length).to eq(2)
expect(cs["foo"]).to eq({
auto_assign_name: true,
image: "foo",
daemonize: false,
})
expect(cs["bar"]).to eq({
auto_assign_name: true,
image: "bar",
daemonize: true,
})
end
it "has all the containers to build" do
subject.build_image("foo")
other = described_class.new
other.build_image("bar")
result = subject.merge(other)
result.finalize!
images = result.build_images
expect(images.length).to eq(2)
expect(images[0]).to eq(["foo", {}])
expect(images[1]).to eq(["bar", {}])
end
end
describe "#pull_images" do
it "adds images to the list of images to build" do
subject.pull_images("1")
subject.pull_images("2", "3")
subject.finalize!
expect(subject.images.to_a.sort).to eql(["1", "2", "3"])
end
end
describe "#run" do
it "runs the given image" do
subject.run("foo")
subject.finalize!
expect(subject.containers).to eql({
"foo" => {
auto_assign_name: true,
daemonize: true,
image: "foo",
}
})
end
it "can not auto assign name" do
subject.run("foo", auto_assign_name: false)
subject.finalize!
expect(subject.containers).to eql({
"foo" => {
auto_assign_name: false,
daemonize: true,
image: "foo",
}
})
end
it "can not daemonize" do
subject.run("foo", daemonize: false)
subject.finalize!
expect(subject.containers).to eql({
"foo" => {
auto_assign_name: true,
daemonize: false,
image: "foo",
}
})
end
end
describe "#version" do
it "defaults to latest" do
subject.finalize!
expect(subject.version).to eql(:latest)
end
it "converts to a symbol" do
subject.version = "v27"
subject.finalize!
expect(subject.version).to eql(:v27)
end
end
end