package builder import ( "strings" "testing" "github.com/novox/mesh-controller/internal/catalogue" ) // A context on a seat is cloned from the base the mesh sent, joined to the repository's path; a // context by URL is itself; a seat the mesh sent no base for is refused by name (novox/hq ADR 0155). func TestAContextOnASeatIsClonedFromTheBaseTheMeshSent(t *testing.T) { seats := map[string]string{"git": "http://forge.example.tld:3000"} got, err := contextURL(catalogue.ArtifactContext{Seat: "git", Repository: "org/controller"}, seats) if err != nil || got != "http://forge.example.tld:3000/org/controller.git" { t.Fatalf("got %q, %v", got, err) } got, err = contextURL(catalogue.ArtifactContext{Repository: "https://elsewhere.example/x.git"}, seats) if err != nil || got != "https://elsewhere.example/x.git" { t.Fatalf("a URL context was changed: %q, %v", got, err) } _, err = contextURL(catalogue.ArtifactContext{Seat: "git", Repository: "org/controller"}, nil) if err == nil || !strings.Contains(err.Error(), "git seat") { t.Fatalf("a seat with no base was not refused by name: %v", err) } }