@@ -2,13 +2,17 @@ package cache_proxy_test
22
33import (
44 "context"
5+ "fmt"
6+ "runtime"
57 "strings"
68 "sync"
79 "testing"
810
911 "github.com/buildbuddy-io/buildbuddy/enterprise/server/test/integration/remote_execution/rbetest"
1012 "github.com/buildbuddy-io/buildbuddy/server/testutil/testkeys"
13+ "github.com/buildbuddy-io/buildbuddy/server/util/authutil"
1114 "github.com/buildbuddy-io/buildbuddy/server/util/claims"
15+ "github.com/buildbuddy-io/buildbuddy/server/util/grpc_client"
1216 "github.com/buildbuddy-io/buildbuddy/server/util/grpc_server"
1317 "github.com/buildbuddy-io/buildbuddy/server/util/testing/flags"
1418 "github.com/golang-jwt/jwt/v4"
@@ -40,13 +44,14 @@ func TestES256Auth(t *testing.T) {
4044 keyPair := testkeys .GenerateES256KeyPair (t )
4145 flags .Set (t , "auth.jwt_es256_private_key" , keyPair .PrivateKeyPEM )
4246 flags .Set (t , "auth.remote.use_es256_jwts" , true )
47+ flags .Set (t , "auth.reparse_jwts" , false )
4348 require .NoError (t , claims .Init ())
4449
4550 var mu sync.Mutex
4651 var capturedJWT string
4752 jwtInterceptor := func (ctx context.Context , req any , info * grpc.UnaryServerInfo , handler grpc.UnaryHandler ) (any , error ) {
4853 if md , ok := metadata .FromIncomingContext (ctx ); ok {
49- if vals := md .Get ("x-buildbuddy-jwt" ); len (vals ) > 0 {
54+ if vals := md .Get (authutil . ContextTokenStringKey ); len (vals ) > 0 {
5055 mu .Lock ()
5156 capturedJWT = vals [len (vals )- 1 ]
5257 mu .Unlock ()
@@ -69,7 +74,7 @@ func TestES256Auth(t *testing.T) {
6974 },
7075 }
7176
72- ctx := metadata .AppendToOutgoingContext (t .Context (), "x-buildbuddy-api-key" , rbe .APIKey1 )
77+ ctx := metadata .AppendToOutgoingContext (t .Context (), authutil . APIKeyHeader , rbe .APIKey1 )
7378 resp , err := cas .FindMissingBlobs (ctx , & req )
7479 require .NoError (t , err )
7580 require .Equal (t , 1 , len (resp .MissingBlobDigests ))
@@ -84,6 +89,42 @@ func TestES256Auth(t *testing.T) {
8489 require .Equal (t , "ES256" , token .Method .Alg ())
8590}
8691
92+ func TestES256Auth_RemoteExecution (t * testing.T ) {
93+ // TODO(http://go/b/4539): enable this test
94+ t .Skip ()
95+
96+ keyPair := testkeys .GenerateES256KeyPair (t )
97+ flags .Set (t , "auth.jwt_es256_private_key" , keyPair .PrivateKeyPEM )
98+ flags .Set (t , "auth.remote.use_es256_jwts" , true )
99+ flags .Set (t , "auth.reparse_jwts" , false )
100+ require .NoError (t , claims .Init ())
101+
102+ rbe := rbetest .NewRBETestEnv (t )
103+ rbe .AddBuildBuddyServer ()
104+ proxy := rbe .AddCacheProxy ()
105+ conn , err := grpc_client .DialSimple (
106+ fmt .Sprintf ("grpc://localhost:%d" , proxy .Port ))
107+ require .NoError (t , err )
108+ rbe .AddExecutorWithOptions (t , & rbetest.ExecutorOptions {
109+ Name : "executor" ,
110+ CacheConn : conn ,
111+ })
112+
113+ cmd := rbe .Execute (& repb.Command {
114+ Arguments : []string {"sh" , "-c" , "echo hello" },
115+ Platform : & repb.Platform {
116+ Properties : []* repb.Platform_Property {
117+ {Name : "container-image" , Value : "none" },
118+ {Name : "OSFamily" , Value : runtime .GOOS },
119+ {Name : "Arch" , Value : runtime .GOARCH },
120+ },
121+ },
122+ }, & rbetest.ExecuteOpts {APIKey : rbe .APIKey1 })
123+ res := cmd .Wait ()
124+ require .Equal (t , 0 , res .ExitCode )
125+ require .Equal (t , "hello\n " , res .Stdout )
126+ }
127+
87128func TestFindMissing_Encryption (t * testing.T ) {
88129 rbe := rbetest .NewRBETestEnv (t )
89130 rbe .AddBuildBuddyServer ()
@@ -97,7 +138,7 @@ func TestFindMissing_Encryption(t *testing.T) {
97138 },
98139 }
99140
100- ctx := metadata .AppendToOutgoingContext (t .Context (), "x-buildbuddy-api-key" , rbe .APIKey1 )
141+ ctx := metadata .AppendToOutgoingContext (t .Context (), authutil . APIKeyHeader , rbe .APIKey1 )
101142 resp , err := cas .FindMissingBlobs (ctx , & req )
102143 require .NoError (t , err )
103144 require .Equal (t , 1 , len (resp .MissingBlobDigests ))
0 commit comments