diff --git a/interop/client/client.go b/interop/client/client.go index 1fa92f9a..e6f991fb 100644 --- a/interop/client/client.go +++ b/interop/client/client.go @@ -67,6 +67,7 @@ var ( jwt_token_creds: large_unary with jwt token auth; per_rpc_creds: large_unary with per rpc token; oauth2_auth_token: large_unary with oauth2 token auth; + google_default_credentials: large_unary with google default credentials cancel_after_begin: cancellation after metadata has been sent but before payloads are sent; cancel_after_first_response: cancellation after receiving 1st message from the server; status_code_and_message: status code propagated back to client; @@ -140,10 +141,12 @@ func main() { opts = append(opts, grpc.WithTransportCredentials(altsTC)) case credsGoogleDefaultCreds: opts = append(opts, grpc.WithCredentialsBundle(google.NewDefaultCredentials())) - default: + case credsNone: opts = append(opts, grpc.WithInsecure()) + default: + grpclog.Fatal("Invalid creds") } - if credsChosen == credsTLS || credsChosen == credsALTS { + if credsChosen == credsTLS { if *testCase == "compute_engine_creds" { opts = append(opts, grpc.WithPerRPCCredentials(oauth.NewComputeEngine())) } else if *testCase == "service_account_creds" { @@ -192,35 +195,41 @@ func main() { interop.DoTimeoutOnSleepingServer(tc) grpclog.Infoln("TimeoutOnSleepingServer done") case "compute_engine_creds": - if credsChosen == credsNone { - grpclog.Fatalf("Credentials (TLS, ALTS or google default creds) need to be set for compute_engine_creds test case.") + if credsChosen != credsTLS { + grpclog.Fatalf("TLS credentials need to be set for compute_engine_creds test case.") } interop.DoComputeEngineCreds(tc, *defaultServiceAccount, *oauthScope) grpclog.Infoln("ComputeEngineCreds done") case "service_account_creds": - if credsChosen == credsNone { - grpclog.Fatalf("Credentials (TLS, ALTS or google default creds) need to be set for service_account_creds test case.") + if credsChosen != credsTLS { + grpclog.Fatalf("TLS credentials need to be set for service_account_creds test case.") } interop.DoServiceAccountCreds(tc, *serviceAccountKeyFile, *oauthScope) grpclog.Infoln("ServiceAccountCreds done") case "jwt_token_creds": - if credsChosen == credsNone { - grpclog.Fatalf("Credentials (TLS, ALTS or google default creds) need to be set for jwt_token_creds test case.") + if credsChosen != credsTLS { + grpclog.Fatalf("TLS credentials need to be set for jwt_token_creds test case.") } interop.DoJWTTokenCreds(tc, *serviceAccountKeyFile) grpclog.Infoln("JWTtokenCreds done") case "per_rpc_creds": - if credsChosen == credsNone { - grpclog.Fatalf("Credentials (TLS, ALTS or google default creds) need to be set for per_rpc_creds test case.") + if credsChosen != credsTLS { + grpclog.Fatalf("TLS credentials need to be set for per_rpc_creds test case.") } interop.DoPerRPCCreds(tc, *serviceAccountKeyFile, *oauthScope) grpclog.Infoln("PerRPCCreds done") case "oauth2_auth_token": - if credsChosen == credsNone { - grpclog.Fatalf("Credentials (TLS, ALTS or google default creds) need to be set for oauth2_auth_token test case.") + if credsChosen != credsTLS { + grpclog.Fatalf("TLS credentials need to be set for oauth2_auth_token test case.") } interop.DoOauth2TokenCreds(tc, *serviceAccountKeyFile, *oauthScope) grpclog.Infoln("Oauth2TokenCreds done") + case "google_default_credentials": + if credsChosen != credsGoogleDefaultCreds { + grpclog.Fatalf("GoogleDefaultCredentials need to be set for google_default_credentials test case.") + } + interop.DoGoogleDefaultCredentials(tc, *defaultServiceAccount) + grpclog.Infoln("GoogleDefaultCredentials done") case "cancel_after_begin": interop.DoCancelAfterBegin(tc) grpclog.Infoln("CancelAfterBegin done") diff --git a/interop/test_utils.go b/interop/test_utils.go index 7ce970cc..150ffb7b 100644 --- a/interop/test_utils.go +++ b/interop/test_utils.go @@ -393,6 +393,25 @@ func DoPerRPCCreds(tc testpb.TestServiceClient, serviceAccountKeyFile, oauthScop } } +// DoGoogleDefaultCredentials performs a unary RPC with google default credentials +func DoGoogleDefaultCredentials(tc testpb.TestServiceClient, defaultServiceAccount string) { + pl := ClientNewPayload(testpb.PayloadType_COMPRESSABLE, largeReqSize) + req := &testpb.SimpleRequest{ + ResponseType: testpb.PayloadType_COMPRESSABLE, + ResponseSize: int32(largeRespSize), + Payload: pl, + FillUsername: true, + FillOauthScope: true, + } + reply, err := tc.UnaryCall(context.Background(), req) + if err != nil { + grpclog.Fatal("/TestService/UnaryCall RPC failed: ", err) + } + if reply.GetUsername() != defaultServiceAccount { + grpclog.Fatalf("Got user name %q; wanted %q. ", reply.GetUsername(), defaultServiceAccount) + } +} + var testMetadata = metadata.MD{ "key1": []string{"value1"}, "key2": []string{"value2"},