package spindle
import (
"testing"
"tangled.org/core/api/org_tangled"
"tangled.org/core/spindle/config"
"tangled.org/core/tapc"
)
func TestManifestFromAnUnadmittedOwnerCostsNoReads(t *testing.T) {
declared := &org_tangled.RepoManifest_Declaration{Owner: testOwner.String(), Name: "repo"}
for name, manifest := range map[string]org_tangled.RepoManifest{
"naming an unadmitted owner": {Declaration: declared},
"without a declaration": {},
} {
t.Run(name, func(t *testing.T) {
env := newEnsureEnv(t)
env.s.cfg.Server.Admission = config.AdmissionClosed
env.serve("repo")
manifest.Spindle = ptr(env.spindleDid())
evt := recordEvent(testRepoDid, org_tangled.RepoManifestNSID, "self", tapc.RecordCreateAction, manifest)
processOK(t, env, evt)
if got := env.knot.count(); got != 0 {
t.Fatalf("a manifest %s cost %d knot and pds requests", name, got)
}
if rows := env.rows(t); len(rows) != 0 {
t.Fatalf("rows = %+v", rows)
}
if attempts, err := env.s.db.RepoRetryAttempts(testRepoDid); err != nil || attempts != 0 {
t.Fatalf("retry attempts = %d, %v", attempts, err)
}
})
}
}
func TestManifestFromAnAdmittedOwnerIsServed(t *testing.T) {
env := newEnsureEnv(t)
env.s.cfg.Server.Admission = config.AdmissionClosed
env.s.cfg.Server.Admins = []string{testOwner.String()}
env.serve("repo")
processOK(t, env, markEvent(testRepoDid, env.spindleDid(), testOwner))
if rows := env.rows(t); len(rows) != 1 {
t.Fatalf("an admin's manifest wasn't served, rows = %+v", rows)
}
}