Files
2026-06-11 08:21:17 +08:00

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)
}