diff options
Diffstat (limited to 'Library/Homebrew/test/cask/verify')
| -rw-r--r-- | Library/Homebrew/test/cask/verify/checksum_spec.rb | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/Library/Homebrew/test/cask/verify/checksum_spec.rb b/Library/Homebrew/test/cask/verify/checksum_spec.rb new file mode 100644 index 000000000..d803c566d --- /dev/null +++ b/Library/Homebrew/test/cask/verify/checksum_spec.rb @@ -0,0 +1,91 @@ +describe Hbc::Verify::Checksum do + let(:cask) { double("cask") } + let(:downloaded_path) { double("downloaded_path") } + let(:verification) { described_class.new(cask, downloaded_path) } + + before do + allow(cask).to receive(:sha256).and_return(sha256) + end + + around do |example| + shutup { example.run } + end + + describe ".me?" do + subject { described_class.me?(cask) } + + context "sha256 is :no_check" do + let(:sha256) { :no_check } + + it { is_expected.to be false } + end + + context "sha256 is nil" do + let(:sha256) { nil } + + it { is_expected.to be true } + end + + context "sha256 is empty" do + let(:sha256) { "" } + + it { is_expected.to be true } + end + + context "sha256 is a valid shasum" do + let(:sha256) { "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" } + + it { is_expected.to be true } + end + end + + describe "#verify" do + subject { verification.verify } + + let(:computed) { "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" } + + before do + allow(verification).to receive(:computed).and_return(computed) + end + + context "sha256 matches computed" do + let(:sha256) { computed } + + it "does not raise an error" do + expect { subject }.not_to raise_error + end + end + + context "sha256 is :no_check" do + let(:sha256) { :no_check } + + it "does not raise an error" do + expect { subject }.not_to raise_error + end + end + + context "sha256 does not match computed" do + let(:sha256) { "d3adb33fd3adb33fd3adb33fd3adb33fd3adb33fd3adb33fd3adb33fd3adb33f" } + + it "raises an error" do + expect { subject }.to raise_error(Hbc::CaskSha256MismatchError) + end + end + + context "sha256 is nil" do + let(:sha256) { nil } + + it "raises an error" do + expect { subject }.to raise_error(Hbc::CaskSha256MissingError) + end + end + + context "sha256 is empty" do + let(:sha256) { "" } + + it "raises an error" do + expect { subject }.to raise_error(Hbc::CaskSha256MissingError) + end + end + end +end |
