11package auth_test
22
33import (
4+ "bytes"
45 "crypto/rand"
56 "crypto/rsa"
67 "crypto/x509"
8+ "encoding/json"
79 "encoding/pem"
810 "fmt"
911 "net/http"
@@ -60,7 +62,7 @@ var _ = Describe("agent authentication", Ordered, func() {
6062
6163 token := generateAgentToken ("kid" , "my_source" , "GothamCity" , privateKey )
6264
63- agentAuthenticator := auth .NewAgentAuthenticator (s )
65+ agentAuthenticator := auth .NewAgentAuthenticator (true , s ).( * auth. AgentAuthenticator )
6466
6567 agentJwt , err := agentAuthenticator .Authenticate (token )
6668 Expect (err ).To (BeNil ())
@@ -87,7 +89,7 @@ var _ = Describe("agent authentication", Ordered, func() {
8789
8890 token := generateAgentToken ("missing-key-kid" , "my_source" , "GothamCity" , privateKey )
8991
90- agentAuthenticator := auth .NewAgentAuthenticator (s )
92+ agentAuthenticator := auth .NewAgentAuthenticator (true , s ).( * auth. AgentAuthenticator )
9193
9294 _ , err = agentAuthenticator .Authenticate (token )
9395 Expect (err ).ToNot (BeNil ())
@@ -112,7 +114,7 @@ var _ = Describe("agent authentication", Ordered, func() {
112114
113115 token := generateAgentToken ("kid" , "my_source" , "GothamCity" , signingKey )
114116
115- agentAuthenticator := auth .NewAgentAuthenticator (s )
117+ agentAuthenticator := auth .NewAgentAuthenticator (true , s ).( * auth. AgentAuthenticator )
116118
117119 _ , err = agentAuthenticator .Authenticate (token )
118120 Expect (err ).ToNot (BeNil ())
@@ -140,7 +142,7 @@ var _ = Describe("agent authentication", Ordered, func() {
140142
141143 token := generateAgentToken ("1234_kid" , "my_source" , "org_id" , privateKey )
142144
143- agentAuthenticator := auth .NewAgentAuthenticator (s )
145+ agentAuthenticator := auth .NewAgentAuthenticator (true , s )
144146 h := & handler {}
145147 ts := httptest .NewServer (agentAuthenticator .Authenticator (h ))
146148 defer ts .Close ()
@@ -159,6 +161,36 @@ var _ = Describe("agent authentication", Ordered, func() {
159161 })
160162 })
161163
164+ Context ("none authenticator middleware" , func () {
165+ It ("successfully extracts sourceId from request body" , func () {
166+ innerHandler := http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
167+ // Verify AgentJWT is in context
168+ agentJWT := auth .MustHaveAgent (r .Context ())
169+ Expect (agentJWT .SourceID ).To (Equal ("test-source-123" ))
170+
171+ // Verify body is still readable for downstream
172+ var body map [string ]interface {}
173+ err := json .NewDecoder (r .Body ).Decode (& body )
174+ Expect (err ).To (BeNil (), "Body should be readable by downstream handler" )
175+ Expect (body ["sourceId" ]).To (Equal ("test-source-123" ))
176+
177+ w .WriteHeader (200 )
178+ })
179+
180+ noneAuthenticator := auth .NewNoneAgentAuthenticator ()
181+ ts := httptest .NewServer (noneAuthenticator .Authenticator (innerHandler ))
182+ defer ts .Close ()
183+
184+ body := `{"sourceId":"test-source-123"}`
185+ req , err := http .NewRequest (http .MethodPost , ts .URL , bytes .NewBufferString (body ))
186+ Expect (err ).To (BeNil ())
187+
188+ resp , rerr := http .DefaultClient .Do (req )
189+ Expect (rerr ).To (BeNil ())
190+ Expect (resp .StatusCode ).To (Equal (200 ))
191+ })
192+ })
193+
162194})
163195
164196func generateAgentToken (kid , sourceID , orgID string , signingKey * rsa.PrivateKey ) string {
0 commit comments