invokes: a manifest word that becomes exactly the publish grant a person's account gets (ADR 0152), derived by the same composition; refused at parse when it names no tool. module check <file|dir>... runs what registration runs with no store, for a manifest in any repository (hq issue 148).
32 lines
1.1 KiB
Go
32 lines
1.1 KiB
Go
package catalogue
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// A manifest may say which tools its module calls (novox/hq ADR 0152), and the parser accepts the
|
|
// two shapes the grant has: a named tool, and every tool.
|
|
func TestAManifestMaySayWhatItInvokes(t *testing.T) {
|
|
m, err := ParseManifest([]byte(`{"module":"mesh-console","version":"1",` +
|
|
`"invokes":["mesh-catalog.catalog_modules","*"]}`))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(m.Invokes) != 2 || m.Invokes[1] != "*" {
|
|
t.Fatalf("invokes not read: %v", m.Invokes)
|
|
}
|
|
}
|
|
|
|
// An entry that names a module and no tool is refused at parse, in the manifest's words, rather than
|
|
// at the composition of the bus's user list where it would stop the file for everybody.
|
|
func TestAnInvokeThatNamesNoToolIsRefusedAtParse(t *testing.T) {
|
|
_, err := ParseManifest([]byte(`{"module":"mesh-console","version":"1","invokes":["shop"]}`))
|
|
if err == nil {
|
|
t.Fatal("an invoke naming no tool was accepted")
|
|
}
|
|
if !strings.Contains(err.Error(), `invokes "shop", which does not name a tool`) {
|
|
t.Fatalf("refused for the wrong reason: %v", err)
|
|
}
|
|
}
|