Something went wrong. Try again.
Monorepo for Tangled tangled.org
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687package mill
import ( "io" "log/slog" "testing"
"github.com/bluesky-social/indigo/atproto/syntax"
millproto "tangled.org/core/spindle/mill/proto" millv1 "tangled.org/core/spindle/mill/proto/gen")
type fakeGitSigner struct{ repos []syntax.DID }
func (f *fakeGitSigner) GitToken(repo syntax.DID) (string, error) { f.repos = append(f.repos, repo) return "token-for-" + repo.String(), nil}
type gitTokenEnv struct { m *Mill sess *millSession signer *fakeGitSigner replies []*millv1.GitTokenResponse}
func newGitTokenEnv(t *testing.T, clonesOwnRepo bool) *gitTokenEnv { t.Helper() e := &gitTokenEnv{signer: &fakeGitSigner{}} e.m = New(slog.New(slog.NewTextHandler(io.Discard, nil)), Config{}) e.m.SetGitTokenSigner(e.signer) e.sess = newSession("node-a", "epoch-a", nil, scriptedEncoder(func(msg *millproto.Message) error { e.replies = append(e.replies, msg.GetGitTokenResp()) return nil }), slog.New(slog.NewTextHandler(io.Discard, nil))) lease := newLease("lease-1", "node-a", "epoch-a", "microvm") lease.repoDID = "did:plc:leaserepo" lease.clonesOwnRepo = clonesOwnRepo e.m.leases["lease-1"] = lease return e}
func (e *gitTokenEnv) ask(t *testing.T, leaseID string) *millv1.GitTokenResponse { t.Helper() e.replies = nil e.m.handleGitTokenRequest(e.sess, &millv1.GitTokenRequest{RequestId: "r1", LeaseId: leaseID}) if len(e.replies) != 1 || e.replies[0].GetRequestId() != "r1" { t.Fatalf("replies = %v, want exactly one for r1", e.replies) } return e.replies[0]}
func TestMillSignsACloneTokenForTheLeasesRepo(t *testing.T) { e := newGitTokenEnv(t, true) resp := e.ask(t, "lease-1") if resp.GetToken() != "token-for-did:plc:leaserepo" || resp.GetError() != "" { t.Fatalf("mill answered %+v, want a token for the lease's repo", resp) }}
func TestMillWontSignForAForkRun(t *testing.T) { e := newGitTokenEnv(t, false) if resp := e.ask(t, "lease-1"); resp.GetToken() != "" || resp.GetError() == "" { t.Fatalf("a run cloning a fork got %+v, want a refusal", resp) } if len(e.signer.repos) != 0 { t.Fatalf("signed for %v", e.signer.repos) }}
func TestMillWontSignForAnotherNodesLease(t *testing.T) { e := newGitTokenEnv(t, true) other := newLease("lease-2", "node-b", "epoch-b", "microvm") other.repoDID = "did:plc:otherrepo" other.clonesOwnRepo = true e.m.leases["lease-2"] = other for _, lease := range []string{"lease-2", "no-such-lease"} { if resp := e.ask(t, lease); resp.GetToken() != "" || resp.GetError() == "" { t.Errorf("%s answered %+v, want a refusal", lease, resp) } } if len(e.signer.repos) != 0 { t.Fatalf("signed for %v", e.signer.repos) }}