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") } }