-
-
Notifications
You must be signed in to change notification settings - Fork 390
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1054 from herwinw/openssl_digest
Add more specs for OpenSSL::Digest
- Loading branch information
Showing
10 changed files
with
426 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
require_relative '../../../spec_helper' | ||
require_relative 'shared/update' | ||
|
||
describe "OpenSSL::Digest#<<" do | ||
it_behaves_like :openssl_digest_update, :<< | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
require_relative '../../../spec_helper' | ||
require_relative '../../../library/digest/sha1/shared/constants' | ||
require_relative '../../../library/digest/sha256/shared/constants' | ||
require_relative '../../../library/digest/sha384/shared/constants' | ||
require_relative '../../../library/digest/sha512/shared/constants' | ||
require 'openssl' | ||
|
||
describe "OpenSSL::Digest#block_length" do | ||
context "when the digest object is created via a name argument" do | ||
it "returns a SHA1 block length" do | ||
OpenSSL::Digest.new('sha1').block_length.should == SHA1Constants::BlockLength | ||
end | ||
|
||
it "returns a SHA256 block length" do | ||
OpenSSL::Digest.new('sha256').block_length.should == SHA256Constants::BlockLength | ||
end | ||
|
||
it "returns a SHA384 block length" do | ||
OpenSSL::Digest.new('sha384').block_length.should == SHA384Constants::BlockLength | ||
end | ||
|
||
it "returns a SHA512 block length" do | ||
OpenSSL::Digest.new('sha512').block_length.should == SHA512Constants::BlockLength | ||
end | ||
end | ||
|
||
context "when the digest object is created via a subclass" do | ||
it "returns a SHA1 block length" do | ||
OpenSSL::Digest::SHA1.new.block_length.should == SHA1Constants::BlockLength | ||
end | ||
|
||
it "returns a SHA256 block length" do | ||
OpenSSL::Digest::SHA256.new.block_length.should == SHA256Constants::BlockLength | ||
end | ||
|
||
it "returns a SHA384 block length" do | ||
OpenSSL::Digest::SHA384.new.block_length.should == SHA384Constants::BlockLength | ||
end | ||
|
||
it "returns a SHA512 block length" do | ||
OpenSSL::Digest::SHA512.new.block_length.should == SHA512Constants::BlockLength | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
require_relative '../../../spec_helper' | ||
require_relative '../../../library/digest/sha1/shared/constants' | ||
require_relative '../../../library/digest/sha256/shared/constants' | ||
require_relative '../../../library/digest/sha384/shared/constants' | ||
require_relative '../../../library/digest/sha512/shared/constants' | ||
require 'openssl' | ||
|
||
describe "OpenSSL::Digest#digest_length" do | ||
context "when the digest object is created via a name argument" do | ||
it "returns a SHA1 digest length" do | ||
OpenSSL::Digest.new('sha1').digest_length.should == SHA1Constants::DigestLength | ||
end | ||
|
||
it "returns a SHA256 digest length" do | ||
OpenSSL::Digest.new('sha256').digest_length.should == SHA256Constants::DigestLength | ||
end | ||
|
||
it "returns a SHA384 digest length" do | ||
OpenSSL::Digest.new('sha384').digest_length.should == SHA384Constants::DigestLength | ||
end | ||
|
||
it "returns a SHA512 digest length" do | ||
OpenSSL::Digest.new('sha512').digest_length.should == SHA512Constants::DigestLength | ||
end | ||
end | ||
|
||
context "when the digest object is created via a subclass" do | ||
it "returns a SHA1 digest length" do | ||
OpenSSL::Digest::SHA1.new.digest_length.should == SHA1Constants::DigestLength | ||
end | ||
|
||
it "returns a SHA256 digest length" do | ||
OpenSSL::Digest::SHA256.new.digest_length.should == SHA256Constants::DigestLength | ||
end | ||
|
||
it "returns a SHA384 digest length" do | ||
OpenSSL::Digest::SHA384.new.digest_length.should == SHA384Constants::DigestLength | ||
end | ||
|
||
it "returns a SHA512 digest length" do | ||
OpenSSL::Digest::SHA512.new.digest_length.should == SHA512Constants::DigestLength | ||
end | ||
end | ||
end |
13 changes: 6 additions & 7 deletions
13
library/openssl/digest_spec.rb → library/openssl/digest/digest_spec.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
require_relative '../../../spec_helper' | ||
require_relative '../../../library/digest/sha1/shared/constants' | ||
require_relative '../../../library/digest/sha256/shared/constants' | ||
require_relative '../../../library/digest/sha384/shared/constants' | ||
require_relative '../../../library/digest/sha512/shared/constants' | ||
require 'openssl' | ||
|
||
describe "OpenSSL::Digest#initialize" do | ||
describe "can be called with a digest name" do | ||
it "returns a SHA1 object" do | ||
OpenSSL::Digest.new("sha1").name.should == "SHA1" | ||
end | ||
|
||
it "returns a SHA256 object" do | ||
OpenSSL::Digest.new("sha256").name.should == "SHA256" | ||
end | ||
|
||
it "returns a SHA384 object" do | ||
OpenSSL::Digest.new("sha384").name.should == "SHA384" | ||
end | ||
|
||
it "returns a SHA512 object" do | ||
OpenSSL::Digest.new("sha512").name.should == "SHA512" | ||
end | ||
|
||
it "throws an error when called with an unknown digest" do | ||
-> { OpenSSL::Digest.new("wd40") }.should raise_error(RuntimeError, /Unsupported digest algorithm \(wd40\)/) | ||
end | ||
|
||
it "cannot be called with a symbol" do | ||
-> { OpenSSL::Digest.new(:SHA1) }.should raise_error(TypeError, /wrong argument type Symbol/) | ||
end | ||
|
||
it "does not call #to_str on the argument" do | ||
name = mock("digest name") | ||
name.should_not_receive(:to_str) | ||
-> { OpenSSL::Digest.new(name) }.should raise_error(TypeError, /wrong argument type/) | ||
end | ||
end | ||
|
||
describe "can be called with a digest object" do | ||
it "returns a SHA1 object" do | ||
OpenSSL::Digest.new(OpenSSL::Digest::SHA1.new).name.should == "SHA1" | ||
end | ||
|
||
it "returns a SHA256 object" do | ||
OpenSSL::Digest.new(OpenSSL::Digest::SHA256.new).name.should == "SHA256" | ||
end | ||
|
||
it "returns a SHA384 object" do | ||
OpenSSL::Digest.new(OpenSSL::Digest::SHA384.new).name.should == "SHA384" | ||
end | ||
|
||
it "returns a SHA512 object" do | ||
OpenSSL::Digest.new(OpenSSL::Digest::SHA512.new).name.should == "SHA512" | ||
end | ||
|
||
it "ignores the state of the digest object" do | ||
sha1 = OpenSSL::Digest.new('sha1', SHA1Constants::Contents) | ||
OpenSSL::Digest.new(sha1).digest.should == SHA1Constants::BlankDigest | ||
end | ||
end | ||
|
||
it "cannot be called with a digest class" do | ||
-> { OpenSSL::Digest.new(OpenSSL::Digest::SHA1) }.should raise_error(TypeError, /wrong argument type Class/) | ||
end | ||
|
||
context "when called without an initial String argument" do | ||
it "returns a SHA1 digest" do | ||
OpenSSL::Digest.new("sha1").digest.should == SHA1Constants::BlankDigest | ||
end | ||
|
||
it "returns a SHA256 digest" do | ||
OpenSSL::Digest.new("sha256").digest.should == SHA256Constants::BlankDigest | ||
end | ||
|
||
it "returns a SHA384 digest" do | ||
OpenSSL::Digest.new("sha384").digest.should == SHA384Constants::BlankDigest | ||
end | ||
|
||
it "returns a SHA512 digest" do | ||
OpenSSL::Digest.new("sha512").digest.should == SHA512Constants::BlankDigest | ||
end | ||
end | ||
|
||
context "when called with an initial String argument" do | ||
it "returns a SHA1 digest of that argument" do | ||
OpenSSL::Digest.new("sha1", SHA1Constants::Contents).digest.should == SHA1Constants::Digest | ||
end | ||
|
||
it "returns a SHA256 digest of that argument" do | ||
OpenSSL::Digest.new("sha256", SHA256Constants::Contents).digest.should == SHA256Constants::Digest | ||
end | ||
|
||
it "returns a SHA384 digest of that argument" do | ||
OpenSSL::Digest.new("sha384", SHA384Constants::Contents).digest.should == SHA384Constants::Digest | ||
end | ||
|
||
it "returns a SHA512 digest of that argument" do | ||
OpenSSL::Digest.new("sha512", SHA512Constants::Contents).digest.should == SHA512Constants::Digest | ||
end | ||
end | ||
|
||
context "can be called on subclasses" do | ||
describe "can be called without an initial String argument on subclasses" do | ||
it "returns a SHA1 digest" do | ||
OpenSSL::Digest::SHA1.new.digest.should == SHA1Constants::BlankDigest | ||
end | ||
|
||
it "returns a SHA256 digest" do | ||
OpenSSL::Digest::SHA256.new.digest.should == SHA256Constants::BlankDigest | ||
end | ||
|
||
it "returns a SHA384 digest" do | ||
OpenSSL::Digest::SHA384.new.digest.should == SHA384Constants::BlankDigest | ||
end | ||
|
||
it "returns a SHA512 digest" do | ||
OpenSSL::Digest::SHA512.new.digest.should == SHA512Constants::BlankDigest | ||
end | ||
end | ||
|
||
describe "can be called with an initial String argument on subclasses" do | ||
it "returns a SHA1 digest" do | ||
OpenSSL::Digest::SHA1.new(SHA1Constants::Contents).digest.should == SHA1Constants::Digest | ||
end | ||
|
||
it "returns a SHA256 digest" do | ||
OpenSSL::Digest::SHA256.new(SHA256Constants::Contents).digest.should == SHA256Constants::Digest | ||
end | ||
|
||
it "returns a SHA384 digest" do | ||
OpenSSL::Digest::SHA384.new(SHA384Constants::Contents).digest.should == SHA384Constants::Digest | ||
end | ||
|
||
it "returns a SHA512 digest" do | ||
OpenSSL::Digest::SHA512.new(SHA512Constants::Contents).digest.should == SHA512Constants::Digest | ||
end | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
require_relative '../../../spec_helper' | ||
require 'openssl' | ||
|
||
describe "OpenSSL::Digest#name" do | ||
it "returns the name of digest" do | ||
OpenSSL::Digest.new('SHA1').name.should == 'SHA1' | ||
end | ||
|
||
it "converts the name to the internal representation of OpenSSL" do | ||
OpenSSL::Digest.new('sha1').name.should == 'SHA1' | ||
end | ||
|
||
it "works on subclasses too" do | ||
OpenSSL::Digest::SHA1.new.name.should == 'SHA1' | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
require_relative '../../../spec_helper' | ||
require_relative '../../../library/digest/sha1/shared/constants' | ||
require_relative '../../../library/digest/sha256/shared/constants' | ||
require_relative '../../../library/digest/sha384/shared/constants' | ||
require_relative '../../../library/digest/sha512/shared/constants' | ||
require 'openssl' | ||
|
||
describe "OpenSSL::Digest#reset" do | ||
it "works for a SHA1 digest" do | ||
digest = OpenSSL::Digest.new('sha1', SHA1Constants::Contents) | ||
digest.reset | ||
digest.update(SHA1Constants::Contents) | ||
digest.digest.should == SHA1Constants::Digest | ||
end | ||
|
||
it "works for a SHA256 digest" do | ||
digest = OpenSSL::Digest.new('sha256', SHA256Constants::Contents) | ||
digest.reset | ||
digest.update(SHA256Constants::Contents) | ||
digest.digest.should == SHA256Constants::Digest | ||
end | ||
|
||
it "works for a SHA384 digest" do | ||
digest = OpenSSL::Digest.new('sha384', SHA384Constants::Contents) | ||
digest.reset | ||
digest.update(SHA384Constants::Contents) | ||
digest.digest.should == SHA384Constants::Digest | ||
end | ||
|
||
it "works for a SHA512 digest" do | ||
digest = OpenSSL::Digest.new('sha512', SHA512Constants::Contents) | ||
digest.reset | ||
digest.update(SHA512Constants::Contents) | ||
digest.digest.should == SHA512Constants::Digest | ||
end | ||
end |
Oops, something went wrong.