vaguerent/test/unit/vagrant/util/file_checksum_test.rb
Brian Cain 44c6f655be
Fixes #11179: Ensure Vagrant::Errors are loaded in file_checksum util
Prior to this commit, the file_checksum class used the `Vagrant::Errors`
class as if it were apart of the Vagrant module. However, since the
file_checksum class is an interface and not part of the Vagrant module,
it doesn't have access to that Error class like other Vagrant modules.
This commit fixes that by ensuring the `"vagrant/errors"` class is
loaded, and that the proper namespace is used.
2019-11-07 09:22:17 -08:00

47 lines
1.4 KiB
Ruby

require File.expand_path("../../../base", __FILE__)
require 'digest/md5'
require 'digest/sha1'
require 'vagrant/util/file_checksum'
describe FileChecksum do
include_context "unit"
let(:environment) { isolated_environment }
it "should return a valid checksum for a file" do
file = environment.workdir.join("file")
file.open("w+") { |f| f.write("HELLO!") }
# Check multiple digests
instance = described_class.new(file, Digest::MD5)
expect(instance.checksum).to eq("9ac96c64417b5976a58839eceaa77956")
instance = described_class.new(file, Digest::SHA1)
expect(instance.checksum).to eq("264b207c7913e461c43d0f63d2512f4017af4755")
end
it "should support initialize with class or string" do
file = environment.workdir.join("file")
file.open("w+") { |f| f.write("HELLO!") }
%w(md5 sha1 sha256 sha384 sha512).each do |type|
klass = Digest.const_get(type.upcase)
t_i = described_class.new(file, type)
k_i = described_class.new(file, klass)
expect(t_i.checksum).to eq(k_i.checksum)
end
end
context "with an invalid digest" do
let(:fake_digest) { :fake_digest }
it "should raise an exception if the box has an invalid checksum type" do
file = environment.workdir.join("file")
file.open("w+") { |f| f.write("HELLO!") }
expect{ described_class.new(file, fake_digest) }.to raise_error(Vagrant::Errors::BoxChecksumInvalidType)
end
end
end