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.
47 lines
1.4 KiB
Ruby
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
|