From fd8c1562bf8c524f0551ba45b2c7434b80b7f274 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Fri, 21 Aug 2020 14:28:24 +0200 Subject: [PATCH] TestParseDigest: add tests for some potential corner-cases Also uses sub-tests, so that all test-cases are ran, even if one fails. Signed-off-by: Sebastiaan van Stijn --- digest_test.go | 67 +++++++++++++++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 25 deletions(-) diff --git a/digest_test.go b/digest_test.go index d098385..38c8673 100644 --- a/digest_test.go +++ b/digest_test.go @@ -36,11 +36,26 @@ func TestParseDigest(t *testing.T) { algorithm: "sha384", encoded: "d3fc7881460b7e22e3d172954463dddd7866d17597e7248453c48b3e9d26d9596bf9c4a9cf8072c9d5bad76e19af801d", }, + { + // empty + input: "", + err: ErrDigestInvalidFormat, + }, + { + // whitespace only + input: " ", + err: ErrDigestInvalidFormat, + }, { // empty hex input: "sha256:", err: ErrDigestInvalidFormat, }, + { + // hex with correct length, but whitespace only + input: "sha256: ", + err: ErrDigestInvalidFormat, + }, { // empty hex input: ":", @@ -99,37 +114,39 @@ func TestParseDigest(t *testing.T) { err: ErrDigestInvalidFormat, }, } { - digest, err := Parse(testcase.input) - if err != testcase.err { - t.Fatalf("error differed from expected while parsing %q: %v != %v", testcase.input, err, testcase.err) - } + t.Run(testcase.input, func(t *testing.T) { + digest, err := Parse(testcase.input) + if err != testcase.err { + t.Fatalf("error differed from expected while parsing %q: %v != %v", testcase.input, err, testcase.err) + } - if testcase.err != nil { - continue - } + if testcase.err != nil { + return + } - if digest.Algorithm() != testcase.algorithm { - t.Fatalf("incorrect algorithm for parsed digest: %q != %q", digest.Algorithm(), testcase.algorithm) - } + if digest.Algorithm() != testcase.algorithm { + t.Fatalf("incorrect algorithm for parsed digest: %q != %q", digest.Algorithm(), testcase.algorithm) + } - if digest.Encoded() != testcase.encoded { - t.Fatalf("incorrect hex for parsed digest: %q != %q", digest.Encoded(), testcase.encoded) - } + if digest.Encoded() != testcase.encoded { + t.Fatalf("incorrect hex for parsed digest: %q != %q", digest.Encoded(), testcase.encoded) + } - // Parse string return value and check equality - newParsed, err := Parse(digest.String()) + // Parse string return value and check equality + newParsed, err := Parse(digest.String()) - if err != nil { - t.Fatalf("unexpected error parsing input %q: %v", testcase.input, err) - } + if err != nil { + t.Fatalf("unexpected error parsing input %q: %v", testcase.input, err) + } - if newParsed != digest { - t.Fatalf("expected equal: %q != %q", newParsed, digest) - } + if newParsed != digest { + t.Fatalf("expected equal: %q != %q", newParsed, digest) + } - newFromHex := NewDigestFromEncoded(newParsed.Algorithm(), newParsed.Encoded()) - if newFromHex != digest { - t.Fatalf("%v != %v", newFromHex, digest) - } + newFromHex := NewDigestFromEncoded(newParsed.Algorithm(), newParsed.Encoded()) + if newFromHex != digest { + t.Fatalf("%v != %v", newFromHex, digest) + } + }) } }