github.com/smugmug/godynamo@v0.0.0-20151122084750-7913028f6623/auth_v4/tasks/tasks_test.go (about)

     1  package tasks
     2  
     3  import (
     4  	"crypto/sha256"
     5  	"encoding/hex"
     6  	"hash"
     7  	"testing"
     8  	"time"
     9  )
    10  
    11  func TestCanonicalRequest(t *testing.T) {
    12  
    13  	body := []byte(`{"Test":"Stuff"}`)
    14  	var h256 hash.Hash = sha256.New()
    15  	h256.Write(body)
    16  	hexPayload := string(hex.EncodeToString([]byte(h256.Sum(nil))))
    17  
    18  	r := CanonicalRequest("dynamodb.us-east-1.amazonaws.com", "80", "x-amz-date: 20110909T233600Z", "", hexPayload)
    19  	h256.Write([]byte(r))
    20  	hashedCanonicalRequest := string(hex.EncodeToString([]byte(h256.Sum(nil))))
    21  	const expected = "0d336e0c2a7878efc381e1fba2606c885afa6c5ad26480d39b56c1c2503271ba"
    22  	if expected != hashedCanonicalRequest {
    23  		t.Errorf("canonical request unexpected")
    24  	}
    25  }
    26  
    27  func TestStringToSign(t *testing.T) {
    28  	body := []byte(`{"Test":"Stuff"}`)
    29  	var h256 hash.Hash = sha256.New()
    30  	h256.Write(body)
    31  	hexPayload := string(hex.EncodeToString([]byte(h256.Sum(nil))))
    32  
    33  	r := CanonicalRequest("dynamodb.us-east-1.amazonaws.com", "80", "x-amz-date: 20110909T233600Z", "", hexPayload)
    34  	const longForm = "Jan 2, 2006 at 3:04pm (MST)"
    35  	test_time, t_err := time.Parse(longForm, "Feb 3, 2013 at 7:54pm (PST)")
    36  	if t_err != nil {
    37  		t.Errorf(t_err.Error())
    38  	}
    39  	str2sign := String2Sign(test_time, r, "us-east-1", "dynamodb")
    40  	h256.Write([]byte(str2sign))
    41  	hashedString2Sign := string(hex.EncodeToString([]byte(h256.Sum(nil))))
    42  
    43  	const expected = "3a958ac6ec0702c4d9b05f2b360762893bdb47440f133ffcdfde1d263555479e"
    44  	if expected != hashedString2Sign {
    45  		t.Errorf("string 2 sign unexpected")
    46  	}
    47  }