97 lines
2.7 KiB
Go
97 lines
2.7 KiB
Go
// Copyright 2026 Alibaba Group
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
package app
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/DingTalk-Real-AI/dingtalk-workspace-cli/internal/cli"
|
|
)
|
|
|
|
func TestRuntimeSchemaCompletenessCoversPublicCommandTree(t *testing.T) {
|
|
exclusions, err := cli.ReviewedRuntimeSchemaExclusions()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
root := NewSchemaSourceRootCommand()
|
|
if err := cli.ValidateRuntimeSchemaCompleteness(root); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
report := cli.RuntimeSchemaCompleteness(root, exclusions)
|
|
if len(report.Missing) > 0 || len(report.InvalidExclusions) > 0 || len(report.StaleExclusions) > 0 {
|
|
t.Fatalf("runtime schema completeness: missing=%v invalid=%v stale=%v", report.Missing, report.InvalidExclusions, report.StaleExclusions)
|
|
}
|
|
if !containsSchemaPath(report.Covered, "chat category create-smart") {
|
|
t.Fatal("chat category create-smart is not covered by runtime Schema")
|
|
}
|
|
for _, path := range missingChatCatalogCoveragePaths() {
|
|
if !containsSchemaPath(report.Covered, path) {
|
|
t.Fatalf("%s is not covered by runtime Schema", path)
|
|
}
|
|
}
|
|
if !containsSchemaPath(report.Excluded, "agoal strategy list") {
|
|
t.Fatal("agoal strategy list is not recorded as a reviewed exclusion")
|
|
}
|
|
}
|
|
|
|
func TestRuntimeSchemaCompletenessDoesNotExcludeMissingChatCatalogPaths(t *testing.T) {
|
|
exclusions, err := cli.ReviewedRuntimeSchemaExclusions()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
excluded := map[string]bool{}
|
|
for _, exclusion := range exclusions {
|
|
excluded[exclusion.CLIPath] = true
|
|
}
|
|
for _, path := range missingChatCatalogCoveragePaths() {
|
|
if excluded[path] {
|
|
t.Fatalf("%s must not remain in runtime Schema exclusions", path)
|
|
}
|
|
}
|
|
}
|
|
|
|
func containsSchemaPath(paths []string, want string) bool {
|
|
for _, path := range paths {
|
|
if path == want {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func missingChatCatalogCoveragePaths() []string {
|
|
return []string{
|
|
"chat category add-conv",
|
|
"chat category create",
|
|
"chat category delete",
|
|
"chat category remove-conv",
|
|
"chat category rename",
|
|
"chat chmod",
|
|
"chat clear-all-red-point",
|
|
"chat clear-messages",
|
|
"chat clear-red-point",
|
|
"chat data-auth cross-org",
|
|
"chat group audit-join-validation",
|
|
"chat group list-all",
|
|
"chat group list-join-validations",
|
|
"chat group members list-by-ids",
|
|
"chat group notice create",
|
|
"chat group notice edit",
|
|
"chat group notice get",
|
|
"chat group notice list",
|
|
"chat group share-invite",
|
|
"chat group update-alias",
|
|
"chat hide",
|
|
"chat list-all-conversations",
|
|
"chat mark-read",
|
|
"chat mark-unread",
|
|
"chat message list-emotion-replies",
|
|
"chat message set-top-msg",
|
|
"chat message unset-top-msg",
|
|
"chat mute-at-all",
|
|
"chat mute-red-envelope",
|
|
"chat text translate",
|
|
}
|
|
}
|