(t *testing.T)
| 69 | } |
| 70 | |
| 71 | func TestSessionPrompterCapabilities(t *testing.T) { |
| 72 | t.Parallel() |
| 73 | |
| 74 | tests := []struct { |
| 75 | name string |
| 76 | caps *mcp.ClientCapabilities |
| 77 | wantURL bool |
| 78 | wantForm bool |
| 79 | }{ |
| 80 | { |
| 81 | name: "no elicitation advertised", |
| 82 | caps: &mcp.ClientCapabilities{}, |
| 83 | wantURL: false, |
| 84 | wantForm: false, |
| 85 | }, |
| 86 | { |
| 87 | name: "url only", |
| 88 | caps: &mcp.ClientCapabilities{Elicitation: &mcp.ElicitationCapabilities{URL: &mcp.URLElicitationCapabilities{}}}, |
| 89 | wantURL: true, |
| 90 | wantForm: false, |
| 91 | }, |
| 92 | { |
| 93 | name: "form only", |
| 94 | caps: &mcp.ClientCapabilities{Elicitation: &mcp.ElicitationCapabilities{Form: &mcp.FormElicitationCapabilities{}}}, |
| 95 | wantURL: false, |
| 96 | wantForm: true, |
| 97 | }, |
| 98 | { |
| 99 | name: "url and form", |
| 100 | caps: &mcp.ClientCapabilities{Elicitation: &mcp.ElicitationCapabilities{URL: &mcp.URLElicitationCapabilities{}, Form: &mcp.FormElicitationCapabilities{}}}, |
| 101 | wantURL: true, |
| 102 | wantForm: true, |
| 103 | }, |
| 104 | { |
| 105 | name: "empty elicitation capability implies form for backward compatibility", |
| 106 | caps: &mcp.ClientCapabilities{Elicitation: &mcp.ElicitationCapabilities{}}, |
| 107 | wantURL: false, |
| 108 | wantForm: true, |
| 109 | }, |
| 110 | } |
| 111 | |
| 112 | for _, tc := range tests { |
| 113 | t.Run(tc.name, func(t *testing.T) { |
| 114 | t.Parallel() |
| 115 | |
| 116 | got := runProbe(t, tc.caps, nil, func(_ context.Context, p *sessionPrompter) string { |
| 117 | if p.CanPromptURL() { |
| 118 | if p.CanPromptForm() { |
| 119 | return "url+form" |
| 120 | } |
| 121 | return "url" |
| 122 | } |
| 123 | if p.CanPromptForm() { |
| 124 | return "form" |
| 125 | } |
| 126 | return "none" |
| 127 | }) |
| 128 |
nothing calls this directly
no test coverage detected