package repoident
import (
"encoding/json"
"testing"
)
func TestNewRepoDid_RejectsInvalid(t *testing.T) {
if _, err := NewRepoDid(""); err == nil {
t.Error("NewRepoDid(\"\") err = nil, want error")
}
}
func TestNewRepoDid_AcceptsValid(t *testing.T) {
raw := "did:plc:boltless"
got, err := NewRepoDid(raw)
if err != nil {
t.Fatalf("NewRepoDid(%q): %v", raw, err)
}
if got.String() != raw {
t.Errorf("got %q, want %q", got, raw)
}
}
func TestNewOwnerDid_RejectsInvalid(t *testing.T) {
if _, err := NewOwnerDid("not-a-did"); err == nil {
t.Error("NewOwnerDid(\"not-a-did\") err = nil, want error")
}
}
func TestNewOwnerDid_AcceptsValid(t *testing.T) {
raw := "did:plc:akshay"
got, err := NewOwnerDid(raw)
if err != nil {
t.Fatalf("NewOwnerDid(%q): %v", raw, err)
}
if got.String() != raw {
t.Errorf("got %q, want %q", got, raw)
}
}
func TestDidJSONRoundTripsAndValidates(t *testing.T) {
var pair struct {
Repo RepoDid `json:"repo"`
Owner OwnerDid `json:"owner"`
}
const raw = `{"repo":"did:plc:boltless","owner":"did:plc:akshay"}`
if err := json.Unmarshal([]byte(raw), &pair); err != nil {
t.Fatalf("Unmarshal: %v", err)
}
out, err := json.Marshal(pair)
if err != nil {
t.Fatalf("Marshal: %v", err)
}
if string(out) != raw {
t.Errorf("re-encoded %s, want %s", out, raw)
}
if err := json.Unmarshal([]byte(`{"repo":"not-a-did","owner":"did:plc:akshay"}`), &pair); err == nil {
t.Error("Unmarshal accepted a malformed repoDid")
}
}