You've already forked agentic-coding-workflow
70 lines
1.9 KiB
Go
70 lines
1.9 KiB
Go
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)
|
|
}
|