Update tests for checksum and filechecksum
This commit is contained in:
parent
cc23905142
commit
0bce1e6307
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue