7167: Update tests and comments to new error vars.
authorTom Clegg <tom@curoverse.com>
Fri, 9 Oct 2015 18:20:15 +0000 (14:20 -0400)
committerTom Clegg <tom@curoverse.com>
Fri, 9 Oct 2015 18:33:16 +0000 (14:33 -0400)
sdk/go/keepclient/perms.go
sdk/go/keepclient/perms_test.go
services/keepstore/keepstore_test.go

index 7dc06e20afa62be1e3d009e706753f2c4c1576cd..a73db76bbbebc8a1c9bedae5df19c54faa4bdb9f 100644 (file)
@@ -16,10 +16,15 @@ import (
 )
 
 var (
-       ErrSignatureExpired   = errors.New("Signature expired")
-       ErrSignatureInvalid   = errors.New("Invalid signature")
-       ErrSignatureMalformed = errors.New("Malformed signature")
-       ErrSignatureMissing   = errors.New("Missing signature")
+       // ErrSignatureExpired - a signature was rejected because the
+       // expiry time has passed.
+       ErrSignatureExpired = errors.New("Signature expired")
+       // ErrSignatureInvalid - a signature was rejected because it
+       // was badly formatted or did not match the given secret key.
+       ErrSignatureInvalid = errors.New("Invalid signature")
+       // ErrSignatureMissing - the given locator does not have a
+       // signature hint.
+       ErrSignatureMissing = errors.New("Missing signature")
 )
 
 // makePermSignature generates a SHA-1 HMAC digest for the given blob,
@@ -57,9 +62,11 @@ var signedLocatorRe = regexp.MustCompile(`^([[:xdigit:]]{32}).*\+A([[:xdigit:]]{
 
 // VerifySignature returns nil if the signature on the signedLocator
 // can be verified using the given apiToken. Otherwise it returns
-// either ExpiredError (if the timestamp has expired, which is
-// something the client could have figured out independently) or
-// PermissionError.
+// ErrSignatureExpired (if the signature's expiry time has passed,
+// which is something the client could have figured out
+// independently), ErrSignatureMissing (if there is no signature hint
+// at all), or ErrSignatureInvalid (if the signature is present but
+// badly formatted or incorrect).
 //
 // This function is intended to be used by system components and admin
 // utilities: userland programs do not know the permissionSecret.
@@ -72,7 +79,7 @@ func VerifySignature(signedLocator, apiToken string, permissionSecret []byte) er
        sigHex := matches[2]
        expHex := matches[3]
        if expTime, err := parseHexTimestamp(expHex); err != nil {
-               return ErrSignatureMalformed
+               return ErrSignatureInvalid
        } else if expTime.Before(time.Now()) {
                return ErrSignatureExpired
        }
index 61d10c17e5a67e11695a85c23aa6418a4f212e5e..138079528747962ba87defe5975768283dc4084c 100644 (file)
@@ -65,26 +65,26 @@ func TestVerifySignatureWrongSize(t *testing.T) {
 
 func TestVerifySignatureBadSig(t *testing.T) {
        badLocator := knownLocator + "+Aaaaaaaaaaaaaaaa@" + knownTimestamp
-       if VerifySignature(badLocator, knownToken, []byte(knownKey)) != PermissionError {
+       if VerifySignature(badLocator, knownToken, []byte(knownKey)) != ErrSignatureMissing {
                t.Fail()
        }
 }
 
 func TestVerifySignatureBadTimestamp(t *testing.T) {
        badLocator := knownLocator + "+A" + knownSignature + "@OOOOOOOl"
-       if VerifySignature(badLocator, knownToken, []byte(knownKey)) != PermissionError {
+       if VerifySignature(badLocator, knownToken, []byte(knownKey)) != ErrSignatureMissing {
                t.Fail()
        }
 }
 
 func TestVerifySignatureBadSecret(t *testing.T) {
-       if VerifySignature(knownSignedLocator, knownToken, []byte("00000000000000000000")) != PermissionError {
+       if VerifySignature(knownSignedLocator, knownToken, []byte("00000000000000000000")) != ErrSignatureInvalid {
                t.Fail()
        }
 }
 
 func TestVerifySignatureBadToken(t *testing.T) {
-       if VerifySignature(knownSignedLocator, "00000000", []byte(knownKey)) != PermissionError {
+       if VerifySignature(knownSignedLocator, "00000000", []byte(knownKey)) != ErrSignatureInvalid {
                t.Fail()
        }
 }
@@ -92,7 +92,7 @@ func TestVerifySignatureBadToken(t *testing.T) {
 func TestVerifySignatureExpired(t *testing.T) {
        yesterday := time.Now().AddDate(0, 0, -1)
        expiredLocator := SignLocator(knownHash, knownToken, yesterday, []byte(knownKey))
-       if VerifySignature(expiredLocator, knownToken, []byte(knownKey)) != ExpiredError {
+       if VerifySignature(expiredLocator, knownToken, []byte(knownKey)) != ErrSignatureExpired {
                t.Fail()
        }
 }
index 9b132927c6a773a1d396e53da813e306698b5242..8a004b73d44913b562574170b21b19dc780b8ff2 100644 (file)
@@ -185,7 +185,7 @@ func TestPutBlockMD5Fail(t *testing.T) {
        // Check that PutBlock returns the expected error when the hash does
        // not match the block.
        if _, err := PutBlock(BadBlock, TestHash); err != RequestHashError {
-               t.Error("Expected RequestHashError, got %v", err)
+               t.Errorf("Expected RequestHashError, got %v", err)
        }
 
        // Confirm that GetBlock fails to return anything.