Files
mesh-sdk/go/delivery/fingerprint2_test.go
T

35 lines
1.4 KiB
Go

package delivery
import (
"strings"
"testing"
)
// 1356/AC6: the key part holds only bus key characters and parsing gives the fingerprint back; a src1 or malformed
// value is refused, naming it.
func TestFingerprintKeyPart(t *testing.T) {
fp := SourcePrefix2 + strings.Repeat("ab", 32)
part, err := FingerprintKeyPart(fp)
if err != nil {
t.Fatal(err)
}
if len(part) != 64 || strings.Trim(part, "0123456789abcdef") != "" || !nameOK.MatchString(part) {
t.Errorf("key part %q is not 64 lowercase hex characters a key allows", part)
}
back, err := ParseFingerprintKeyPart(part)
if err != nil || back != fp {
t.Errorf("parse(%q) = %q, %v; want %q", part, back, err, fp)
}
src1 := SourcePrefix + strings.Repeat("c", 64)
for _, bad := range []string{src1, "src2:", "src2:xyz", "", "src2:" + strings.Repeat("A", 64), "src2:" + strings.Repeat("a", 63)} {
if _, err := FingerprintKeyPart(bad); err == nil || !strings.Contains(err.Error(), "\""+bad+"\"") {
t.Errorf("FingerprintKeyPart(%q) = %v, want a refusal naming it", bad, err)
}
}
for _, bad := range []string{src1, "src2:" + strings.Repeat("a", 64), strings.Repeat("a", 63), strings.Repeat("A", 64), "", "zz"} {
if _, err := ParseFingerprintKeyPart(bad); err == nil || !strings.Contains(err.Error(), "\""+bad+"\"") {
t.Errorf("ParseFingerprintKeyPart(%q) = %v, want a refusal naming it", bad, err)
}
}
}