Add test for invalid box file
Filled in pending test. It creates a valid tar file, over-writes the checksum field in the tar's header and then checks that the BoxUnpackageFailure exception is thrown.
This commit is contained in:
parent
6965525b35
commit
8a8b771e0a
|
@ -1,6 +1,8 @@
|
||||||
require File.expand_path("../../base", __FILE__)
|
require File.expand_path("../../base", __FILE__)
|
||||||
|
|
||||||
require "pathname"
|
require "pathname"
|
||||||
|
require 'tempfile'
|
||||||
|
require 'archive/tar/minitar'
|
||||||
|
|
||||||
describe Vagrant::BoxCollection do
|
describe Vagrant::BoxCollection do
|
||||||
include_context "unit"
|
include_context "unit"
|
||||||
|
@ -105,7 +107,24 @@ describe Vagrant::BoxCollection do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should raise an exception if you add an invalid box file" do
|
it "should raise an exception if you add an invalid box file" do
|
||||||
pending "I don't know how to generate an invalid tar."
|
# Tar Header information
|
||||||
|
CHECKSUM_OFFSET = 148
|
||||||
|
CHECKSUM_LENGTH = 8
|
||||||
|
|
||||||
|
Tempfile.new(['vagrant_testing', '.tar']) do |f|
|
||||||
|
# Create a temp tar file
|
||||||
|
Archive::Tar::Minitar.pack('test', f)
|
||||||
|
|
||||||
|
# Minitar closes the Tempfile so reopen it
|
||||||
|
f = File.open(f.path, "wb")
|
||||||
|
# Corrupt the tar by writing over the checksum field
|
||||||
|
f.seek(CHECKSUM_OFFSET)
|
||||||
|
f.write("\0"*CHECKSUM_LENGTH)
|
||||||
|
f.close
|
||||||
|
|
||||||
|
expect { instance.add(path, "foo", :virtualbox) }.
|
||||||
|
to raise_error(Vagrant::Errors::BoxUnpackageFailure)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue