feat: add canvas marketplace distribution and sharing (#3603)

This commit is contained in:
Carlos Florêncio
2026-09-14 09:31:20 +01:00
committed by GitHub
parent 5c6434d7d8
commit ba960f9732
121 changed files with 10732 additions and 121 deletions
@@ -419,6 +419,48 @@ func TestCanvasCreationAuthorityRollsBackOnActivationFailure(t *testing.T) {
}
}
func TestInstallCanvasPackageCommitsReceiptWithCanvasLifecycle(t *testing.T) {
service, instanceStore, _ := newCanvasService(t)
ctx := context.Background()
result, err := service.InstallCanvasPackage(ctx, InstallCanvasPackageRequest{
WorkspaceID: "workspace-install",
Title: "Installed board",
Package: testCanvasPackage("atomic-install", nil),
Artifact: webapp.Artifact{Digest: "atomic-install", RelativePath: "releases/atomic-install", Bytes: 1},
SourceActorKind: "canvas-install:upload",
SourceUserID: "user-1",
Approved: true,
Receipt: InstallReceipt{
PreparationID: "preparation-atomic",
UserID: "user-1",
PackageID: "canvas-board",
Version: "atomic-install",
Digest: "atomic-install",
OriginKind: "upload",
},
})
if err != nil {
t.Fatalf("InstallCanvasPackage() error = %v", err)
}
if result == nil || result.Canvas == nil || result.Receipt.CanvasID != result.Canvas.ID {
t.Fatalf("install result = %+v", result)
}
receipt, err := service.repo.GetInstallReceipt(ctx, "preparation-atomic", "user-1")
if err != nil {
t.Fatalf("GetInstallReceipt() error = %v", err)
}
if receipt.CanvasID != result.Canvas.ID || receipt.WorkspaceID != "workspace-install" {
t.Fatalf("receipt = %+v", receipt)
}
releases, err := instanceStore.ListReleases(ctx, result.Canvas.PluginInstanceID)
if err != nil {
t.Fatalf("ListReleases() error = %v", err)
}
if len(releases) != 1 || releases[0].PackageDigest != "atomic-install" {
t.Fatalf("releases = %+v", releases)
}
}
func TestFirstTaskReleaseCanBeReviewedAndApproved(t *testing.T) {
service, instanceStore, _ := newCanvasService(t)
canvas := createCanvas(t, service, CreateCanvasRequest{