@@ -2,6 +2,7 @@ package main
22
33import (
44 "context"
5+ "net/http"
56 "testing"
67
78 "github.com/modelcontextprotocol/go-sdk/mcp"
@@ -111,3 +112,79 @@ func TestEchoResponseCreation(t *testing.T) {
111112 response := EchoResponse {Output : "test123" }
112113 assert .Equal (t , "test123" , response .Output )
113114}
115+
116+ func TestCheckAuth_HeaderAuth (t * testing.T ) {
117+ // Save original values
118+ origHeader := authHeader
119+ origValue := authValue
120+ defer func () {
121+ authHeader = origHeader
122+ authValue = origValue
123+ }()
124+
125+ // Set auth config
126+ authHeader = "X-Auth-Token"
127+ authValue = "secret123"
128+
129+ // Create request with correct header
130+ req , err := http .NewRequest (http .MethodGet , "/test" , nil )
131+ assert .NoError (t , err )
132+ req .Header .Set ("X-Auth-Token" , "secret123" )
133+
134+ // Should pass authentication
135+ err = checkAuth (req )
136+ assert .NoError (t , err )
137+ }
138+
139+ func TestCheckAuth_HeaderAuth_Fail (t * testing.T ) {
140+ // Save original values
141+ origHeader := authHeader
142+ origValue := authValue
143+ defer func () {
144+ authHeader = origHeader
145+ authValue = origValue
146+ }()
147+
148+ // Set auth config
149+ authHeader = "X-Auth-Token"
150+ authValue = "secret123"
151+
152+ // Test with wrong header value
153+ req , err := http .NewRequest (http .MethodGet , "/test" , nil )
154+ assert .NoError (t , err )
155+ req .Header .Set ("X-Auth-Token" , "wrongvalue" )
156+
157+ err = checkAuth (req )
158+ assert .Error (t , err )
159+ assert .Equal (t , "unauthorized" , err .Error ())
160+
161+ // Test with missing header
162+ req2 , err := http .NewRequest (http .MethodGet , "/test" , nil )
163+ assert .NoError (t , err )
164+
165+ err = checkAuth (req2 )
166+ assert .Error (t , err )
167+ assert .Equal (t , "unauthorized" , err .Error ())
168+ }
169+
170+ func TestCheckAuth_Disabled (t * testing.T ) {
171+ // Save original values
172+ origHeader := authHeader
173+ origValue := authValue
174+ defer func () {
175+ authHeader = origHeader
176+ authValue = origValue
177+ }()
178+
179+ // Auth disabled when authHeader is empty
180+ authHeader = ""
181+ authValue = ""
182+
183+ // Create request without any auth header
184+ req , err := http .NewRequest (http .MethodGet , "/test" , nil )
185+ assert .NoError (t , err )
186+
187+ // Should pass since auth is disabled
188+ err = checkAuth (req )
189+ assert .NoError (t , err )
190+ }
0 commit comments