59 lines
1.8 KiB
Ruby

# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: BUSL-1.1
require File.expand_path("../../../../base", __FILE__)
require Vagrant.source_root.join("plugins/provisioners/container/client")
describe VagrantPlugins::ContainerProvisioner::Client do
let(:machine) { double("machine", communicate: communicator, ui: ui) }
let(:ui) { Vagrant::UI::Silent.new }
let(:communicator) { double("communicator") }
let(:container_command) { "CONTAINER_COMMAND" }
subject { described_class.new(machine, container_command) }
describe "#container_name" do
it "converts a container name to a run appropriate form" do
config = { :name => "test/test:1.1.1", :original_name => "test/test:1.1.1" }
expect(subject.container_name(config)).to eq("test-test-1.1.1")
end
end
describe "#build_images" do
before { allow(communicator).to receive(:sudo) }
it "should use sudo to run command" do
expect(communicator).to receive(:sudo).with(/#{Regexp.escape(container_command)}/)
subject.build_images([["path", {}]])
end
it "should output information to use" do
expect(ui).to receive(:info).and_call_original
subject.build_images([["path", {}]])
end
it "should handle communicator output" do
expect(communicator).to receive(:sudo).with(/#{Regexp.escape(container_command)}/).
and_yield(:stdout, "some output")
subject.build_images([["path", {}]])
end
end
describe "#pull_images" do
before do
allow(communicator).to receive(:sudo)
end
it "should use sudo to run command" do
expect(communicator).to receive(:sudo).with(/#{Regexp.escape(container_command)}/)
subject.pull_images(:image)
end
it "should output information to use" do
expect(ui).to receive(:info).and_call_original
subject.pull_images(:image)
end
end
end