Update tests for checksum and filechecksum

This commit is contained in:
Chris Roberts 2019-10-04 17:26:06 -07:00
parent cc23905142
commit 0bce1e6307
4 changed files with 38 additions and 78 deletions

View File

@ -48,7 +48,7 @@ describe VagrantPlugins::CloudCommand::ProviderCommand::Command::Create do
it "creates a provider" do it "creates a provider" do
allow(VagrantCloud::Provider).to receive(:new). allow(VagrantCloud::Provider).to receive(:new).
with(version, "virtualbox", nil, nil, "vagrant", "box-name", client.token). with(version, "virtualbox", nil, nil, "vagrant", "box-name", client.token, nil, nil, nil).
and_return(provider) and_return(provider)
expect(VagrantPlugins::CloudCommand::Util).to receive(:format_box_results) expect(VagrantPlugins::CloudCommand::Util).to receive(:format_box_results)
@ -59,7 +59,7 @@ describe VagrantPlugins::CloudCommand::ProviderCommand::Command::Create do
it "displays an error if encoutering a problem with the request" do it "displays an error if encoutering a problem with the request" do
allow(VagrantCloud::Provider).to receive(:new). allow(VagrantCloud::Provider).to receive(:new).
with(version, "virtualbox", nil, nil, "vagrant", "box-name", client.token). with(version, "virtualbox", nil, nil, "vagrant", "box-name", client.token, nil, nil, nil).
and_return(provider) and_return(provider)
allow(provider).to receive(:create_provider). allow(provider).to receive(:create_provider).
@ -73,7 +73,7 @@ describe VagrantPlugins::CloudCommand::ProviderCommand::Command::Create do
it "creates a provider" do it "creates a provider" do
allow(VagrantCloud::Provider).to receive(:new). allow(VagrantCloud::Provider).to receive(:new).
with(version, "virtualbox", nil, "https://box.com/box", "vagrant", "box-name", client.token). with(version, "virtualbox", nil, "https://box.com/box", "vagrant", "box-name", client.token, nil, nil, nil).
and_return(provider) and_return(provider)
expect(VagrantPlugins::CloudCommand::Util).to receive(:format_box_results) expect(VagrantPlugins::CloudCommand::Util).to receive(:format_box_results)

View File

@ -48,7 +48,7 @@ describe VagrantPlugins::CloudCommand::ProviderCommand::Command::Update do
it "updates a provider" do it "updates a provider" do
allow(VagrantCloud::Provider).to receive(:new). allow(VagrantCloud::Provider).to receive(:new).
with(version, "virtualbox", nil, nil, "vagrant", "box-name", client.token). with(version, "virtualbox", nil, nil, "vagrant", "box-name", client.token, nil, nil, nil).
and_return(provider) and_return(provider)
expect(VagrantPlugins::CloudCommand::Util).to receive(:format_box_results) expect(VagrantPlugins::CloudCommand::Util).to receive(:format_box_results)
@ -59,7 +59,7 @@ describe VagrantPlugins::CloudCommand::ProviderCommand::Command::Update do
it "displays an error if encoutering a problem with the request" do it "displays an error if encoutering a problem with the request" do
allow(VagrantCloud::Provider).to receive(:new). allow(VagrantCloud::Provider).to receive(:new).
with(version, "virtualbox", nil, nil, "vagrant", "box-name", client.token). with(version, "virtualbox", nil, nil, "vagrant", "box-name", client.token, nil, nil, nil).
and_return(provider) and_return(provider)
allow(provider).to receive(:update). allow(provider).to receive(:update).
@ -73,7 +73,7 @@ describe VagrantPlugins::CloudCommand::ProviderCommand::Command::Update do
it "creates a provider" do it "creates a provider" do
allow(VagrantCloud::Provider).to receive(:new). allow(VagrantCloud::Provider).to receive(:new).
with(version, "virtualbox", nil, "https://box.com/box", "vagrant", "box-name", client.token). with(version, "virtualbox", nil, "https://box.com/box", "vagrant", "box-name", client.token, nil, nil, nil).
and_return(provider) and_return(provider)
expect(VagrantPlugins::CloudCommand::Util).to receive(:format_box_results) expect(VagrantPlugins::CloudCommand::Util).to receive(:format_box_results)

View File

@ -175,8 +175,16 @@ describe "Vagrant::Shell::Provisioner" do
end end
context "with remote script" do context "with remote script" do
let(:filechecksum) { double("filechecksum", checksum: checksum_value) }
let(:checksum_value) { double("checksum_value") }
before do
allow(FileChecksum).to receive(:new).and_return(filechecksum)
allow_any_instance_of(Vagrant::Util::Downloader).to receive(:execute_curl).and_return(true)
end
context "that does not have matching sha1 checksum" do context "that does not have matching sha1 checksum" do
let(:checksum_value) { "INVALID_VALUE" }
let(:config) { let(:config) {
double( double(
:config, :config,
@ -196,14 +204,6 @@ describe "Vagrant::Shell::Provisioner" do
) )
} }
let(:digest){ double("digest") }
before do
allow_any_instance_of(Vagrant::Util::Downloader).to receive(:execute_curl).and_return(true)
allow(digest).to receive(:file).and_return(digest)
expect(Digest::SHA1).to receive(:new).and_return(digest)
expect(digest).to receive(:hexdigest).and_return('INVALID_VALUE')
end
it "should raise an exception" do it "should raise an exception" do
vsp = VagrantPlugins::Shell::Provisioner.new(machine, config) vsp = VagrantPlugins::Shell::Provisioner.new(machine, config)
@ -212,6 +212,7 @@ describe "Vagrant::Shell::Provisioner" do
end end
context "that does not have matching sha256 checksum" do context "that does not have matching sha256 checksum" do
let(:checksum_value) { "INVALID_VALUE" }
let(:config) { let(:config) {
double( double(
:config, :config,
@ -231,14 +232,6 @@ describe "Vagrant::Shell::Provisioner" do
) )
} }
let(:digest){ double("digest") }
before do
allow_any_instance_of(Vagrant::Util::Downloader).to receive(:execute_curl).and_return(true)
allow(digest).to receive(:file).and_return(digest)
expect(Digest::SHA256).to receive(:new).and_return(digest)
expect(digest).to receive(:hexdigest).and_return('INVALID_VALUE')
end
it "should raise an exception" do it "should raise an exception" do
vsp = VagrantPlugins::Shell::Provisioner.new(machine, config) vsp = VagrantPlugins::Shell::Provisioner.new(machine, config)
@ -247,6 +240,7 @@ describe "Vagrant::Shell::Provisioner" do
end end
context "that does not have matching sha384 checksum" do context "that does not have matching sha384 checksum" do
let(:checksum_value) { "INVALID_VALUE" }
let(:config) { let(:config) {
double( double(
:config, :config,
@ -266,14 +260,6 @@ describe "Vagrant::Shell::Provisioner" do
) )
} }
let(:digest){ double("digest") }
before do
allow_any_instance_of(Vagrant::Util::Downloader).to receive(:execute_curl).and_return(true)
allow(digest).to receive(:file).and_return(digest)
expect(Digest::SHA384).to receive(:new).and_return(digest)
expect(digest).to receive(:hexdigest).and_return('INVALID_VALUE')
end
it "should raise an exception" do it "should raise an exception" do
vsp = VagrantPlugins::Shell::Provisioner.new(machine, config) vsp = VagrantPlugins::Shell::Provisioner.new(machine, config)
@ -282,6 +268,7 @@ describe "Vagrant::Shell::Provisioner" do
end end
context "that does not have matching sha512 checksum" do context "that does not have matching sha512 checksum" do
let(:checksum_value) { "INVALID_VALUE" }
let(:config) { let(:config) {
double( double(
:config, :config,
@ -301,14 +288,6 @@ describe "Vagrant::Shell::Provisioner" do
) )
} }
let(:digest){ double("digest") }
before do
allow_any_instance_of(Vagrant::Util::Downloader).to receive(:execute_curl).and_return(true)
allow(digest).to receive(:file).and_return(digest)
expect(Digest::SHA512).to receive(:new).and_return(digest)
expect(digest).to receive(:hexdigest).and_return('INVALID_VALUE')
end
it "should raise an exception" do it "should raise an exception" do
vsp = VagrantPlugins::Shell::Provisioner.new(machine, config) vsp = VagrantPlugins::Shell::Provisioner.new(machine, config)
@ -317,6 +296,7 @@ describe "Vagrant::Shell::Provisioner" do
end end
context "that does not have matching md5 checksum" do context "that does not have matching md5 checksum" do
let(:checksum_value) { "INVALID_VALUE" }
let(:config) { let(:config) {
double( double(
:config, :config,
@ -336,14 +316,6 @@ describe "Vagrant::Shell::Provisioner" do
) )
} }
let(:digest){ double("digest") }
before do
allow_any_instance_of(Vagrant::Util::Downloader).to receive(:execute_curl).and_return(true)
allow(digest).to receive(:file).and_return(digest)
expect(Digest::MD5).to receive(:new).and_return(digest)
expect(digest).to receive(:hexdigest).and_return('INVALID_VALUE')
end
it "should raise an exception" do it "should raise an exception" do
vsp = VagrantPlugins::Shell::Provisioner.new(machine, config) vsp = VagrantPlugins::Shell::Provisioner.new(machine, config)

View File

@ -175,11 +175,10 @@ describe Vagrant::Util::Downloader do
context "with checksum" do context "with checksum" do
let(:checksum_expected_value){ 'MD5_CHECKSUM_VALUE' } let(:checksum_expected_value){ 'MD5_CHECKSUM_VALUE' }
let(:checksum_invalid_value){ 'INVALID_VALUE' } let(:checksum_invalid_value){ 'INVALID_VALUE' }
let(:digest){ double("digest") } let(:filechecksum) { double("filechecksum", checksum: checksum_value) }
let(:checksum_value) { double("checksum_value") }
before do before { allow(FileChecksum).to receive(:new).with(any_args).and_return(filechecksum) }
allow(digest).to receive(:file).and_return(digest)
end
[Digest::MD5, Digest::SHA1, Digest::SHA256, Digest::SHA384, Digest::SHA512].each do |klass| [Digest::MD5, Digest::SHA1, Digest::SHA256, Digest::SHA384, Digest::SHA512].each do |klass|
short_name = klass.to_s.split("::").last.downcase short_name = klass.to_s.split("::").last.downcase
@ -188,10 +187,7 @@ describe Vagrant::Util::Downloader do
subject { described_class.new(source, destination, short_name.to_sym => checksum_expected_value) } subject { described_class.new(source, destination, short_name.to_sym => checksum_expected_value) }
context "that matches expected value" do context "that matches expected value" do
before do let(:checksum_value) { checksum_expected_value }
expect(klass).to receive(:new).and_return(digest)
expect(digest).to receive(:hexdigest).and_return(checksum_expected_value)
end
it "should not raise an exception" do it "should not raise an exception" do
expect(subject.download!).to be(true) expect(subject.download!).to be(true)
@ -199,10 +195,7 @@ describe Vagrant::Util::Downloader do
end end
context "that does not match expected value" do context "that does not match expected value" do
before do let(:checksum_value) { checksum_invalid_value }
expect(klass).to receive(:new).and_return(digest)
expect(digest).to receive(:hexdigest).and_return(checksum_invalid_value)
end
it "should raise an exception" do it "should raise an exception" do
expect{ subject.download! }.to raise_error(Vagrant::Errors::DownloaderChecksumError) expect{ subject.download! }.to raise_error(Vagrant::Errors::DownloaderChecksumError)
@ -213,13 +206,9 @@ describe Vagrant::Util::Downloader do
context "using both md5 and sha1 digests" do context "using both md5 and sha1 digests" do
context "that both match expected values" do context "that both match expected values" do
subject { described_class.new(source, destination, md5: checksum_expected_value, sha1: checksum_expected_value) } let(:checksum_value) { checksum_expected_value }
before do subject { described_class.new(source, destination, md5: checksum_expected_value, sha1: checksum_expected_value) }
expect(Digest::MD5).to receive(:new).and_return(digest)
expect(Digest::SHA1).to receive(:new).and_return(digest)
expect(digest).to receive(:hexdigest).and_return(checksum_expected_value).exactly(2).times
end
it "should not raise an exception" do it "should not raise an exception" do
expect(subject.download!).to be(true) expect(subject.download!).to be(true)
@ -227,12 +216,14 @@ describe Vagrant::Util::Downloader do
end end
context "that only sha1 matches expected value" do context "that only sha1 matches expected value" do
subject { described_class.new(source, destination, md5: checksum_invalid_value, sha1: checksum_expected_value) } subject { described_class.new(source, destination, md5: checksum_expected_value, sha1: checksum_expected_value) }
let(:valid_checksum) { double("valid_checksum", checksum: checksum_expected_value) }
let(:invalid_checksum) { double("invalid_checksum", checksum: checksum_invalid_value) }
before do before do
allow(Digest::MD5).to receive(:new).and_return(digest) allow(FileChecksum).to receive(:new).with(anything, :sha1).and_return(valid_checksum)
allow(Digest::SHA1).to receive(:new).and_return(digest) allow(FileChecksum).to receive(:new).with(anything, :md5).and_return(invalid_checksum)
expect(digest).to receive(:hexdigest).and_return(checksum_expected_value).at_least(:once)
end end
it "should raise an exception" do it "should raise an exception" do
@ -241,12 +232,14 @@ describe Vagrant::Util::Downloader do
end end
context "that only md5 matches expected value" do context "that only md5 matches expected value" do
subject { described_class.new(source, destination, md5: checksum_expected_value, sha1: checksum_invalid_value) } subject { described_class.new(source, destination, md5: checksum_expected_value, sha1: checksum_expected_value) }
let(:valid_checksum) { double("valid_checksum", checksum: checksum_expected_value) }
let(:invalid_checksum) { double("invalid_checksum", checksum: checksum_invalid_value) }
before do before do
allow(Digest::MD5).to receive(:new).and_return(digest) allow(FileChecksum).to receive(:new).with(anything, :md5).and_return(valid_checksum)
allow(Digest::SHA1).to receive(:new).and_return(digest) allow(FileChecksum).to receive(:new).with(anything, :sha1).and_return(invalid_checksum)
expect(digest).to receive(:hexdigest).and_return(checksum_expected_value).at_least(:once)
end end
it "should raise an exception" do it "should raise an exception" do
@ -255,14 +248,9 @@ describe Vagrant::Util::Downloader do
end end
context "that none match expected value" do context "that none match expected value" do
let(:checksum_value) { checksum_expected_value }
subject { described_class.new(source, destination, md5: checksum_invalid_value, sha1: checksum_invalid_value) } subject { described_class.new(source, destination, md5: checksum_invalid_value, sha1: checksum_invalid_value) }
before do
allow(Digest::MD5).to receive(:new).and_return(digest)
allow(Digest::SHA1).to receive(:new).and_return(digest)
expect(digest).to receive(:hexdigest).and_return(checksum_expected_value).at_least(:once)
end
it "should raise an exception" do it "should raise an exception" do
expect{ subject.download! }.to raise_error(Vagrant::Errors::DownloaderChecksumError) expect{ subject.download! }.to raise_error(Vagrant::Errors::DownloaderChecksumError)
end end