first commit
This commit is contained in:
59
internal/nostr/profile_test.go
Normal file
59
internal/nostr/profile_test.go
Normal file
@@ -0,0 +1,59 @@
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user