@@ -29,12 +29,36 @@ func TestEnclaveGitHubMCPAgentPolicy(t *testing.T) {
2929
3030func TestEnclaveGitHubMCPGatewayConfiguration (t * testing.T ) {
3131 data := enclaveGitHubIssuesWorkflowData ()
32+ data .Tools ["github" ] = map [string ]any {}
33+ data .SafeOutputs = & SafeOutputsConfig {AddComments : & AddCommentsConfig {}}
3234 config := buildMCPGatewayConfig (data )
3335
3436 assert .Empty (t , config .AgentID )
3537 assert .Equal (t , []string {"${MCP_GATEWAY_AGENT_ID}" , "${AWF_ENCLAVE_GITHUB_MCP_AGENT_ID}" }, config .AgentIDs )
36- assert .Equal (t , []string {enclaveMCPServerName }, config .AgentPolicies ["${MCP_GATEWAY_AGENT_ID}" ].Servers )
38+ assert .Equal (t , []string {enclaveMCPServerName , "github" , constants . SafeOutputsMCPServerID . String () }, config .AgentPolicies ["${MCP_GATEWAY_AGENT_ID}" ].Servers )
3739 assert .Equal (t , []string {"github" }, config .AgentPolicies ["${AWF_ENCLAVE_GITHUB_MCP_AGENT_ID}" ].Servers )
40+
41+ generatedServers := make (map [string ]struct {})
42+ for _ , server := range collectMCPServersForManifest (data ) {
43+ generatedServers [server .Name ] = struct {}{}
44+ }
45+ for agentID , policy := range config .AgentPolicies {
46+ for _ , server := range policy .Servers {
47+ assert .Contains (t , generatedServers , server , "policy for %s references an unknown MCP server" , agentID )
48+ }
49+ }
50+ }
51+
52+ func TestToolsWithEnclaveGitHubIssuesUnionsTypedToolsets (t * testing.T ) {
53+ data := enclaveGitHubIssuesWorkflowData ()
54+ tools := map [string ]any {
55+ "github" : map [string ]any {"toolsets" : []string {"context" }},
56+ }
57+
58+ updated := toolsWithEnclaveGitHubIssues (tools , data )
59+
60+ assert .Equal (t , []string {"context" , "issues" }, updated ["github" ].(map [string ]any )["toolsets" ])
61+ assert .Equal (t , []string {"context" }, tools ["github" ].(map [string ]any )["toolsets" ], "original tools must remain unchanged" )
3862}
3963
4064func TestCompileEnclaveGitHubSharedGateway (t * testing.T ) {
@@ -45,6 +69,11 @@ on: workflow_dispatch
4569strict: false
4670network: defaults
4771engine: copilot
72+ tools:
73+ github:
74+ toolsets: [context]
75+ safe-outputs:
76+ add-comment:
4877sandbox:
4978 agent:
5079 id: awf
@@ -72,9 +101,17 @@ Read the assigned repository's issues through the enclave.
72101
73102 assert .Equal (t , 1 , strings .Count (lock , "--name awmg-mcpg" ))
74103 assert .Contains (t , lock , `"agentIds": ["${MCP_GATEWAY_AGENT_ID}","${AWF_ENCLAVE_GITHUB_MCP_AGENT_ID}"]` )
104+ assert .Contains (t , lock , `"safeoutputs": {` )
105+ assert .Contains (t , lock , `"awf-enclave": {` )
106+ assert .NotContains (t , lock , `"required": false` )
107+ assert .Contains (t , lock , `"GITHUB_TOOLSETS": "context,issues"` )
108+ assert .Contains (t , lock , `"${MCP_GATEWAY_AGENT_ID}":{"servers":["awf-enclave","github","safeoutputs"],"tools":{"github":["get_me"]}}` )
109+ assert .NotContains (t , lock , `"servers":["awf-enclave","github","safe-outputs"]` )
75110 assert .Contains (t , lock , `"agentPolicies": {"${AWF_ENCLAVE_GITHUB_MCP_AGENT_ID}":{"servers":["github"],"tools":{"github":["list_issues","issue_read"]},"allow-only":{"min-integrity":"approved","repos":["octo-org/private-service"]}}` )
76111 assert .Contains (t , lock , `AWF_ENCLAVE_GITHUB_MCP_AGENT_ID=$(openssl rand -base64 45 | tr -d '/+=')` )
77112 assert .Contains (t , lock , `printf '%s=%s\n' AWF_ENCLAVE_GITHUB_MCP_AGENT_ID "$AWF_ENCLAVE_GITHUB_MCP_AGENT_ID"` )
113+ assert .Contains (t , lock , `MCP_GATEWAY_API_KEY: ${{ steps.start-mcp-gateway.outputs.gateway-api-key }}` )
114+ assert .Contains (t , lock , `--exclude-env MCP_GATEWAY_API_KEY` )
78115 assert .Contains (t , lock , "--exclude-env AWF_ENCLAVE_GITHUB_MCP_AGENT_ID" )
79116 assert .NotContains (t , lock , "Enclave GitHub Proxy" )
80117 assert .NotContains (t , lock , "start_enclave_github_proxy" )
0 commit comments