Offer only-office's document server with its JWT as the shared credential (issue 1830)

This commit is contained in:
jochen
2026-10-22 11:20:08 +02:00
parent 5a6d082e8c
commit 183b9680c1
2 changed files with 81 additions and 1 deletions
+63
View File
@@ -0,0 +1,63 @@
package office
import (
"os"
"testing"
"git.novox.be/novox/mesh-sdk/go/catalogue"
)
// 1830/AC1 (unit: manifest check)
// Given the catalogue, when only-office's manifest is parsed, then it offers document-server with
// credential own jwt, jwt says taken at-start, and serves document-server on port 9070 with a
// public-root.
func TestManifestOffersDocumentServer(t *testing.T) {
raw, err := os.ReadFile("module.json")
if err != nil {
t.Fatalf("reading module.json: %v", err)
}
m, err := catalogue.ParseManifest(raw)
if err != nil {
t.Fatalf("parsing module.json: %v", err)
}
var offer *catalogue.Offer
for i := range m.Provides {
if m.Provides[i].Name == "document-server" {
offer = &m.Provides[i]
break
}
}
if offer == nil {
t.Fatal("manifest does not provide document-server")
}
if offer.Scope != catalogue.ScopeMesh {
t.Errorf("document-server scope = %q, want %q", offer.Scope, catalogue.ScopeMesh)
}
if offer.Credential == nil || offer.Credential.Own != "jwt" {
t.Errorf("document-server credential = %+v, want own jwt", offer.Credential)
}
own, ok := m.OwnSecrets["jwt"]
if !ok {
t.Fatal("manifest declares no own-secret jwt")
}
if own.Taken != catalogue.TakenAtStart {
t.Errorf("own-secrets.jwt.taken = %q, want %q", own.Taken, catalogue.TakenAtStart)
}
serve, ok := m.Serves["document-server"]
if !ok {
t.Fatal("manifest serves no document-server")
}
if scheme, _ := serve["scheme"].(string); scheme != "http" {
t.Errorf("serves.document-server.scheme = %q, want http", scheme)
}
if port, _ := serve["port"].(float64); port != 9070 {
t.Errorf("serves.document-server.port = %v, want 9070", serve["port"])
}
if root, _ := serve["public-root"].(string); root != "https://${bound:route:name}/" {
t.Errorf("serves.document-server.public-root = %q, want https://${bound:route:name}/", root)
}
}
+18 -1
View File
@@ -2,6 +2,22 @@
"module": "only-office",
"version": "1",
"slug": "office",
"provides": [
{
"name": "document-server",
"scope": "mesh",
"credential": {
"own": "jwt"
}
}
],
"serves": {
"document-server": {
"scheme": "http",
"port": 9070,
"public-root": "https://${bound:route:name}/"
}
},
"capabilities": [
"container-runtime"
],
@@ -57,7 +73,8 @@
"own-secrets": {
"jwt": {
"path": "${dir:state}/jwt.secret",
"owner": "only-office-converter"
"owner": "only-office-converter",
"taken": "at-start"
},
"broker-converter": {
"path": "${dir:state}/broker-converter.secret",