You've already forked agentic-coding-workflow
完善 MCP 工具
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
package mcp
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestCreateProject(t *testing.T) {
|
||||
deps := testDeps()
|
||||
|
||||
result, err := callTool(ctxWithAuth(Scope{}), deps, "create_project", map[string]any{
|
||||
"slug": "new-proj", "name": "New Project", "visibility": "internal",
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.False(t, result.IsError)
|
||||
|
||||
var out projectCreateOut
|
||||
unmarshalStructured(t, result, &out)
|
||||
assert.True(t, out.OK)
|
||||
assert.Equal(t, "new-proj", out.Project.Slug)
|
||||
assert.Equal(t, "internal", out.Project.Visibility)
|
||||
}
|
||||
|
||||
func TestCreateProject_DeniedForProjectScopedToken(t *testing.T) {
|
||||
deps := testDeps()
|
||||
|
||||
// token 限定到具体 project 列表 → 不允许创建新项目
|
||||
result, err := callTool(ctxWithAuth(Scope{ProjectIDs: []uuid.UUID{testPID}}), deps,
|
||||
"create_project", map[string]any{"slug": "x", "name": "X"})
|
||||
require.NoError(t, err)
|
||||
assert.True(t, result.IsError)
|
||||
}
|
||||
|
||||
func TestUpdateProject(t *testing.T) {
|
||||
deps := testDeps()
|
||||
|
||||
result, err := callTool(ctxWithAuth(Scope{}), deps, "update_project", map[string]any{
|
||||
"project_slug": "test-project", "name": "Renamed", "description": "new desc",
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.False(t, result.IsError)
|
||||
|
||||
var out projectCreateOut
|
||||
unmarshalStructured(t, result, &out)
|
||||
assert.Equal(t, "Renamed", out.Project.Name)
|
||||
assert.Equal(t, "new desc", out.Project.Description)
|
||||
}
|
||||
|
||||
func TestArchiveUnarchiveProject(t *testing.T) {
|
||||
deps := testDeps()
|
||||
|
||||
result, err := callTool(ctxWithAuth(Scope{}), deps, "archive_project", map[string]any{
|
||||
"project_slug": "test-project",
|
||||
})
|
||||
require.NoError(t, err)
|
||||
var out okOut
|
||||
unmarshalStructured(t, result, &out)
|
||||
assert.True(t, out.OK)
|
||||
|
||||
result, err = callTool(ctxWithAuth(Scope{}), deps, "unarchive_project", map[string]any{
|
||||
"project_slug": "test-project",
|
||||
})
|
||||
require.NoError(t, err)
|
||||
unmarshalStructured(t, result, &out)
|
||||
assert.True(t, out.OK)
|
||||
}
|
||||
Reference in New Issue
Block a user