vagrant/test/unit/plugins/pushes/ftp/adapter_test.rb

112 lines
2.3 KiB
Ruby

require_relative "../../../base"
require "fake_ftp"
require Vagrant.source_root.join("plugins/pushes/ftp/adapter")
describe VagrantPlugins::FTPPush::Adapter do
include_context "unit"
subject do
described_class.new("127.0.0.1:2345", "sethvargo", "bacon",
foo: "bar",
)
end
describe "#initialize" do
it "sets the instance variables" do
expect(subject.host).to eq("127.0.0.1")
expect(subject.port).to eq(2345)
expect(subject.username).to eq("sethvargo")
expect(subject.password).to eq("bacon")
expect(subject.options).to eq(foo: "bar")
expect(subject.server).to be(nil)
end
end
describe "#parse_host" do
it "has a default value" do
allow(subject).to receive(:default_port)
.and_return(5555)
result = subject.parse_host("127.0.0.1")
expect(result[0]).to eq("127.0.0.1")
expect(result[1]).to eq(5555)
end
end
end
describe VagrantPlugins::FTPPush::FTPAdapter do
include_context "unit"
before(:all) do
@server = FakeFtp::Server.new(21212, 21213)
@server.start
end
after(:all) { @server.stop }
let(:server) { @server }
before { server.reset }
subject do
described_class.new("127.0.0.1:#{server.port}", "sethvargo", "bacon")
end
describe "#default_port" do
it "is 21" do
expect(subject.default_port).to eq(21)
end
end
describe "#upload" do
before do
@dir = Dir.mktmpdir
FileUtils.touch("#{@dir}/file")
end
after do
FileUtils.rm_rf(@dir)
end
it "uploads the file" do
subject.connect do |ftp|
ftp.upload("#{@dir}/file", "/file")
end
expect(server.files).to include("file")
end
it "uploads in passive mode" do
subject.options[:passive] = true
subject.connect do |ftp|
ftp.upload("#{@dir}/file", "/file")
end
expect(server.file("file")).to be_passive
end
end
end
describe VagrantPlugins::FTPPush::SFTPAdapter do
include_context "unit"
subject do
described_class.new("127.0.0.1:2345", "sethvargo", "bacon",
foo: "bar",
)
end
describe "#default_port" do
it "is 22" do
expect(subject.default_port).to eq(22)
end
end
describe "#upload" do
it "uploads the file" do
pending "a way to mock an SFTP server"
end
end
end