mirror of
https://github.com/versia-pub/versia-go.git
synced 2025-12-06 06:28:18 +01:00
42 lines
1.3 KiB
Go
42 lines
1.3 KiB
Go
package lysand
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"github.com/stretchr/testify/assert"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestParseSignatureHeader(t *testing.T) {
|
|
data := `keyId="https://example.com/users/bob",algorithm="ed25519",headers="(request-target) host date digest",signature="PbVicu1spnATYUznWn6N5ebNUC+w94U9k6y4dncLsr6hNfUD8CLInbUSkgR3AZrCWEZ+Md2+Lch70ofiSqXgAQ=="`
|
|
expectedSignature := must(base64.StdEncoding.DecodeString, "PbVicu1spnATYUznWn6N5ebNUC+w94U9k6y4dncLsr6hNfUD8CLInbUSkgR3AZrCWEZ+Md2+Lch70ofiSqXgAQ==")
|
|
|
|
sig, err := ParseSignatureHeader(data)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
assert.Equal(t, "https://example.com/users/bob", sig.KeyID.String())
|
|
assert.Equal(t, "ed25519", sig.Algorithm)
|
|
assert.Equal(t, "(request-target) host date digest", sig.Headers)
|
|
assert.Equal(t, expectedSignature, sig.Signature)
|
|
}
|
|
|
|
func TestSignatureHeader_String(t *testing.T) {
|
|
one := SignatureData{
|
|
RequestMethod: "POST",
|
|
Date: time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC),
|
|
Host: "example2.com",
|
|
Path: "/users/bob",
|
|
Digest: hashSHA256([]byte("hello")),
|
|
}
|
|
|
|
expected := `(request-target): post /users/bob
|
|
host: example2.com
|
|
date: 1970-01-01T00:00:00.000Z
|
|
digest: SHA-256=LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=
|
|
`
|
|
|
|
assert.Equal(t, expected, one.String())
|
|
}
|