60 lines
1.6 KiB
Go
60 lines
1.6 KiB
Go
package nostr
|
|
|
|
import "testing"
|
|
|
|
func TestParseMetadata(t *testing.T) {
|
|
cases := []struct {
|
|
desc, in string
|
|
name, dn, dnAlt string
|
|
username, nip05 string
|
|
}{
|
|
{
|
|
desc: "snake_case display_name",
|
|
in: `{"name":"alice","display_name":"Alice","nip05":"alice@azzamo.net"}`,
|
|
name: "alice", dn: "Alice", nip05: "alice@azzamo.net",
|
|
},
|
|
{
|
|
desc: "camelCase displayName preserved separately",
|
|
in: `{"displayName":"Alice"}`,
|
|
dnAlt: "Alice",
|
|
},
|
|
{
|
|
desc: "deprecated username field exposed",
|
|
in: `{"username":"legacy"}`,
|
|
username: "legacy",
|
|
},
|
|
{
|
|
desc: "all fields together",
|
|
in: `{"name":"a","display_name":"A","displayName":"AA","username":"u","nip05":"a@x"}`,
|
|
name: "a", dn: "A", dnAlt: "AA", username: "u", nip05: "a@x",
|
|
},
|
|
}
|
|
for _, tc := range cases {
|
|
md, err := ParseMetadata(tc.in)
|
|
if err != nil {
|
|
t.Fatalf("%s: parse error: %v", tc.desc, err)
|
|
}
|
|
if md.Name != tc.name {
|
|
t.Errorf("%s: Name=%q want %q", tc.desc, md.Name, tc.name)
|
|
}
|
|
if md.DisplayName != tc.dn {
|
|
t.Errorf("%s: DisplayName=%q want %q", tc.desc, md.DisplayName, tc.dn)
|
|
}
|
|
if md.DisplayNameAlt != tc.dnAlt {
|
|
t.Errorf("%s: DisplayNameAlt=%q want %q", tc.desc, md.DisplayNameAlt, tc.dnAlt)
|
|
}
|
|
if md.Username != tc.username {
|
|
t.Errorf("%s: Username=%q want %q", tc.desc, md.Username, tc.username)
|
|
}
|
|
if md.NIP05 != tc.nip05 {
|
|
t.Errorf("%s: NIP05=%q want %q", tc.desc, md.NIP05, tc.nip05)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestParseMetadataInvalidJSON(t *testing.T) {
|
|
if _, err := ParseMetadata("not json"); err == nil {
|
|
t.Fatal("expected error for invalid JSON")
|
|
}
|
|
}
|