test/unit/rpm_test.rb in rupert-0.0.1 vs test/unit/rpm_test.rb in rupert-0.0.2
- old
+ new
@@ -1,19 +1,47 @@
require 'test_helper'
describe Rupert::RPM do
- let(:signature) { mock }
- let(:rpm) { Rupert::RPM.new(nil, signature, signed_content) }
- let(:signed_content) { ascii("\x01\x02\x03\x04") }
+ let(:signature) { mock }
+ let(:header) { mock }
+ let(:rpm) { Rupert::RPM.new(nil, signature, signed_content, header) }
+ let(:corrupted_rpm) { Rupert::RPM.new(nil, signature, corrupted_content, header) }
+ let(:signed_content) { ascii("\x01\x02\x03\x04") }
+ let(:corrupted_content) { ascii("\xf4\x04\x57\x1e") }
- it "exposes the MD5 digest held by the signature" do
- signature.expects(:md5).once.returns("abc")
+ it "exposes MD5 checksum in base64 encoding" do
+ random_md5 = random_ascii(128)
+ signature.stubs(:md5).returns(random_md5)
- rpm.md5
+ rpm.md5.must_equal base64(random_md5)
end
- it "asks the signature to verify content integrity" do
- signature.expects(:verify_checksum).once.with(signed_content)
+ it "correctly verifies integrity of pristine and corrupted packages" do
+ signature.stubs(:md5).returns(md5(signed_content))
- rpm.intact?
+ assert rpm.intact?,
+ "expected RPM to be intact, but it wasn't"
+
+ refute corrupted_rpm.intact?,
+ "expected RPM not to be intact, but it was"
+ end
+
+ it "exposes RPM name stored in the header" do
+ header.stubs(:name).returns("package-name")
+
+ rpm.name.must_equal("package-name")
+ end
+
+ it "exposes RPM uncompressed size stored in the header" do
+ header.stubs(:uncompressed_size).returns(1234)
+
+ rpm.uncompressed_size.must_equal 1234
+ end
+
+ it "exposes RPM basenames stored in the header" do
+ header.stubs(:basenames).returns(["file1", "file1", "file2"])
+ header.stubs(:dirnames).returns(["/dir1", "/dir2"])
+ header.stubs(:dirindexes).returns([0, 1, 0])
+
+ rpm.filenames.must_equal [ "/dir1/file1", "/dir2/file1", "/dir1/file2" ]
end
end