18896: Test token UUID logging.
[arvados.git] / lib / controller / auth_test.go
index a188c30828205c47fe86f4d78d52340d19629f47..5d477a7664b7266ec28e7696bd604171b6f7c70c 100644 (file)
@@ -8,6 +8,7 @@ import (
        "context"
        "encoding/json"
        "fmt"
+       "net"
        "net/http"
        "net/http/httptest"
        "os"
@@ -62,10 +63,9 @@ func (s *AuthSuite) SetUpTest(c *check.C) {
        s.fakeProvider.ValidClientSecret = "test#client/secret"
 
        cluster := &arvados.Cluster{
-               ClusterID:        "zhome",
-               PostgreSQL:       integrationTestCluster().PostgreSQL,
-               ForceLegacyAPI14: forceLegacyAPI14,
-               SystemRootToken:  arvadostest.SystemRootToken,
+               ClusterID:       "zhome",
+               PostgreSQL:      integrationTestCluster().PostgreSQL,
+               SystemRootToken: arvadostest.SystemRootToken,
        }
        cluster.TLS.Insecure = true
        cluster.API.MaxItemsPerResponse = 1000
@@ -95,12 +95,15 @@ func (s *AuthSuite) SetUpTest(c *check.C) {
        cluster.Login.OpenIDConnect.ClientSecret = s.fakeProvider.ValidClientSecret
        cluster.Login.OpenIDConnect.EmailClaim = "email"
        cluster.Login.OpenIDConnect.EmailVerifiedClaim = "email_verified"
+       cluster.Login.OpenIDConnect.AcceptAccessToken = true
+       cluster.Login.OpenIDConnect.AcceptAccessTokenScope = ""
 
-       s.testHandler = &Handler{Cluster: cluster}
+       s.testHandler = &Handler{Cluster: cluster, BackgroundContext: ctxlog.Context(context.Background(), s.log)}
        s.testServer = newServerFromIntegrationTestEnv(c)
-       s.testServer.Server.Handler = httpserver.HandlerWithContext(
-               ctxlog.Context(context.Background(), s.log),
-               httpserver.AddRequestIDs(httpserver.LogRequests(s.testHandler)))
+       s.testServer.Server.BaseContext = func(net.Listener) context.Context {
+               return ctxlog.Context(context.Background(), s.log)
+       }
+       s.testServer.Server.Handler = httpserver.AddRequestIDs(httpserver.LogRequests(s.testHandler))
        c.Assert(s.testServer.Start(), check.IsNil)
 }
 
@@ -115,4 +118,12 @@ func (s *AuthSuite) TestLocalOIDCAccessToken(c *check.C) {
        c.Check(json.NewDecoder(resp.Body).Decode(&u), check.IsNil)
        c.Check(u.UUID, check.Equals, arvadostest.ActiveUserUUID)
        c.Check(u.OwnerUUID, check.Equals, "zzzzz-tpzed-000000000000000")
+
+       // Request again to exercise cache.
+       req = httptest.NewRequest("GET", "/arvados/v1/users/current", nil)
+       req.Header.Set("Authorization", "Bearer "+s.fakeProvider.ValidAccessToken())
+       rr = httptest.NewRecorder()
+       s.testServer.Server.Handler.ServeHTTP(rr, req)
+       resp = rr.Result()
+       c.Check(resp.StatusCode, check.Equals, http.StatusOK)
 }