mirror of
https://github.com/larksuite/cli.git
synced 2026-08-03 08:32:46 +08:00
40 lines
1.4 KiB
Go
40 lines
1.4 KiB
Go
// Copyright (c) 2026 Lark Technologies Pte. Ltd.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package plugin_e2e
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/tidwall/gjson"
|
|
)
|
|
|
|
// TestDiagnostics asserts the VERIFIED stdout shapes of the two policy/plugin
|
|
// diagnostic commands on a fork carrying the readonly Restrict rule:
|
|
// - `config policy show`: source_name == the plugin name that installed the
|
|
// active rule.
|
|
// - `config plugins show`: {"plugins":[{"name","version","capabilities",...,
|
|
// "hooks":{...}}],"total":N} with the readonly plugin present.
|
|
func TestDiagnostics(t *testing.T) {
|
|
bin := buildFork(t, "readonly", readonlyPlugin)
|
|
|
|
pol := run(t, bin, "config", "policy", "show")
|
|
if pol.exit != 0 || !gjson.Valid(pol.stdout) {
|
|
t.Fatalf("policy show exit=%d stdout=%s stderr=%s", pol.exit, pol.stdout, pol.stderr)
|
|
}
|
|
if src := gjson.Get(pol.stdout, "source_name").String(); src != "readonly" {
|
|
t.Errorf("policy source_name=%q want readonly (stdout=%s)", src, pol.stdout)
|
|
}
|
|
|
|
plug := run(t, bin, "config", "plugins", "show")
|
|
if plug.exit != 0 || !gjson.Valid(plug.stdout) {
|
|
t.Fatalf("plugins show exit=%d stdout=%s", plug.exit, plug.stdout)
|
|
}
|
|
if total := gjson.Get(plug.stdout, "total").Int(); total < 1 {
|
|
t.Errorf("plugins total=%d want >=1 (stdout=%s)", total, plug.stdout)
|
|
}
|
|
if name := gjson.Get(plug.stdout, "plugins.0.name").String(); name != "readonly" {
|
|
t.Errorf("plugins.0.name=%q want readonly", name)
|
|
}
|
|
}
|