@@ -150,6 +150,93 @@ content = "Content with {{required_arg}}"
150150 })
151151}
152152
153+ func (s * McpPromptsSuite ) TestClusterHealthCheckPrompt () {
154+ // No need to load config - cluster-health-check is a built-in prompt
155+ s .InitMcpClient ()
156+
157+ s .Run ("cluster-health-check prompt is listed" , func () {
158+ prompts , err := s .ListPrompts (s .T ().Context (), mcp.ListPromptsRequest {})
159+ s .Require ().NoError (err , "ListPrompts should succeed" )
160+ s .Require ().NotNil (prompts )
161+
162+ var healthCheckPrompt * mcp.Prompt
163+ for _ , prompt := range prompts .Prompts {
164+ if prompt .Name == "cluster-health-check" {
165+ healthCheckPrompt = & prompt
166+ break
167+ }
168+ }
169+
170+ s .Require ().NotNil (healthCheckPrompt , "cluster-health-check prompt should be found" )
171+ s .Equal ("cluster-health-check" , healthCheckPrompt .Name )
172+ s .Contains (healthCheckPrompt .Description , "comprehensive health assessment" )
173+ s .Require ().Len (healthCheckPrompt .Arguments , 3 , "should have 3 arguments" )
174+
175+ // Verify arguments
176+ s .Equal ("namespace" , healthCheckPrompt .Arguments [0 ].Name )
177+ s .Equal ("verbose" , healthCheckPrompt .Arguments [1 ].Name )
178+ s .Equal ("check_events" , healthCheckPrompt .Arguments [2 ].Name )
179+ })
180+
181+ s .Run ("invoke cluster-health-check with no arguments" , func () {
182+ result , err := s .GetPrompt (s .T ().Context (), mcp.GetPromptRequest {
183+ Params : mcp.GetPromptParams {
184+ Name : "cluster-health-check" ,
185+ Arguments : map [string ]string {},
186+ },
187+ })
188+
189+ s .NoError (err , "GetPrompt should succeed" )
190+ s .Require ().NotNil (result )
191+ s .Contains (result .Description , "successfully" )
192+ s .Require ().Len (result .Messages , 2 , "should have 2 messages (user + assistant)" )
193+
194+ // Verify message roles
195+ s .Equal ("user" , string (result .Messages [0 ].Role ))
196+ s .Equal ("assistant" , string (result .Messages [1 ].Role ))
197+
198+ // Verify user message contains diagnostic data
199+ userContent , ok := result .Messages [0 ].Content .(mcp.TextContent )
200+ s .Require ().True (ok , "expected TextContent" )
201+ s .Contains (userContent .Text , "Cluster Health Check Diagnostic Data" )
202+ s .Contains (userContent .Text , "## Your Task" )
203+ s .Contains (userContent .Text , "## 1. Nodes" )
204+ })
205+
206+ s .Run ("invoke cluster-health-check with namespace argument" , func () {
207+ result , err := s .GetPrompt (s .T ().Context (), mcp.GetPromptRequest {
208+ Params : mcp.GetPromptParams {
209+ Name : "cluster-health-check" ,
210+ Arguments : map [string ]string {
211+ "namespace" : "default" ,
212+ },
213+ },
214+ })
215+
216+ s .NoError (err , "GetPrompt should succeed with namespace argument" )
217+ s .Require ().NotNil (result )
218+
219+ // Verify message contains namespace scope
220+ userContent , ok := result .Messages [0 ].Content .(mcp.TextContent )
221+ s .Require ().True (ok , "expected TextContent" )
222+ s .Contains (userContent .Text , "Namespace `default`" )
223+ })
224+
225+ s .Run ("invoke cluster-health-check with verbose flag" , func () {
226+ result , err := s .GetPrompt (s .T ().Context (), mcp.GetPromptRequest {
227+ Params : mcp.GetPromptParams {
228+ Name : "cluster-health-check" ,
229+ Arguments : map [string ]string {
230+ "verbose" : "true" ,
231+ },
232+ },
233+ })
234+
235+ s .NoError (err , "GetPrompt should succeed with verbose flag" )
236+ s .Require ().NotNil (result )
237+ })
238+ }
239+
153240func TestMcpPromptsSuite (t * testing.T ) {
154241 suite .Run (t , new (McpPromptsSuite ))
155242}
0 commit comments