Files

46 lines
1.9 KiB
Go

package nodeengineclient
import (
"strings"
"testing"
)
func TestTheHaveAndComposedKeysKeepTheirForms(t *testing.T) {
fp := strings.Repeat("ab", 32)
for module, want := range map[string]string{"gitea": "n1.gitea", "novox.be": "n1.novox=2ebe", "a/b": "n1.a/b"} {
key, err := HaveKey("n1", module)
if err != nil || key != want {
t.Errorf("HaveKey(%q) = %q, %v", module, key, err)
}
if node, back, isNode, err := ParseHaveKey(key); err != nil || node != "n1" || back != module || isNode {
t.Errorf("ParseHaveKey(%q) = %q %q %v %v", key, node, back, isNode, err)
}
ck, err := ComposedKey("n1", module, fp)
if err != nil || ck != want+"."+fp {
t.Errorf("ComposedKey(%q) = %q, %v", module, ck, err)
}
if node, back, part, isNode, err := ParseComposedKey(ck); err != nil || node != "n1" || back != module || part != fp || isNode {
t.Errorf("ParseComposedKey(%q) = %q %q %q %v %v", ck, node, back, part, isNode, err)
}
}
if node, module, isNode, err := ParseHaveKey("n1.node"); err != nil || node != "n1" || module != "" || !isNode {
t.Errorf("the node's own have key: %q %q %v %v", node, module, isNode, err)
}
if node, _, _, isNode, err := ParseComposedKey("n1.node"); err != nil || node != "n1" || !isNode {
t.Errorf("the node's own composition key: %q %v %v", node, isNode, err)
}
for _, bad := range [][2]string{{"", "m"}, {"n.1", "m"}, {"n1", ""}, {"n1", "node"}, {"n1", "a b"}, {"n1", "a=b"}, {"n1", "a..b"}} {
if _, err := HaveKey(bad[0], bad[1]); err == nil {
t.Errorf("HaveKey(%q, %q) keys", bad[0], bad[1])
}
}
if _, err := ComposedKey("n1", "m", "src2:"+fp); err == nil {
t.Error("a fingerprint with its prefix is a key part")
}
for _, bad := range []string{"n1", "n1.m", "n1.m." + fp[:10], "n1.node." + fp, "n1.m." + fp + ".x"} {
if _, _, _, _, err := ParseComposedKey(bad); err == nil {
t.Errorf("ParseComposedKey(%q) reads a wrong key", bad)
}
}
}