diff options
author | Julien Boeuf <jboeuf@google.com> | 2015-12-10 15:06:45 -0800 |
---|---|---|
committer | Julien Boeuf <jboeuf@google.com> | 2015-12-10 15:06:45 -0800 |
commit | 97e5147bd1ab47adb659fdb5306091a9342c7d9f (patch) | |
tree | afa10ab787dec7bd453017fede93d6d7d4115c17 /test | |
parent | 331e3782af23388a87d34c818ae205d15dacba1f (diff) |
One more test for default google creds.
Diffstat (limited to 'test')
-rw-r--r-- | test/core/security/credentials_test.c | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/test/core/security/credentials_test.c b/test/core/security/credentials_test.c index 40a2332a11..d3cdb07958 100644 --- a/test/core/security/credentials_test.c +++ b/test/core/security/credentials_test.c @@ -944,7 +944,10 @@ static void test_google_default_creds_gce(void) { grpc_exec_ctx_finish(&exec_ctx); /* Check that we get a cached creds if we call - grpc_google_default_credentials_create again. */ + grpc_google_default_credentials_create again. + GCE detection should not occur anymore either. */ + grpc_httpcli_set_override(httpcli_get_should_not_be_called, + httpcli_post_should_not_be_called); cached_creds = grpc_google_default_credentials_create(); GPR_ASSERT(cached_creds == &creds->base); @@ -955,6 +958,40 @@ static void test_google_default_creds_gce(void) { grpc_override_well_known_credentials_path_getter(NULL); } +static int default_creds_gce_detection_httpcli_get_failure_override( + grpc_exec_ctx *exec_ctx, const grpc_httpcli_request *request, + gpr_timespec deadline, grpc_httpcli_response_cb on_response, + void *user_data) { + /* No magic header. */ + grpc_httpcli_response response = http_response(200, ""); + GPR_ASSERT(strcmp(request->path, "/") == 0); + GPR_ASSERT(strcmp(request->host, "metadata.google.internal") == 0); + on_response(exec_ctx, user_data, &response); + return 1; +} + +static void test_no_google_default_creds(void) { + grpc_flush_cached_google_default_credentials(); + gpr_setenv(GRPC_GOOGLE_CREDENTIALS_ENV_VAR, ""); /* Reset. */ + grpc_override_well_known_credentials_path_getter( + null_well_known_creds_path_getter); + + /* Simulate a successful detection of GCE. */ + grpc_httpcli_set_override( + default_creds_gce_detection_httpcli_get_failure_override, + httpcli_post_should_not_be_called); + GPR_ASSERT(grpc_google_default_credentials_create() == NULL); + + /* Try a cached one. GCE detection should not occur anymore. */ + grpc_httpcli_set_override(httpcli_get_should_not_be_called, + httpcli_post_should_not_be_called); + GPR_ASSERT(grpc_google_default_credentials_create() == NULL); + + /* Cleanup. */ + grpc_httpcli_set_override(NULL, NULL); + grpc_override_well_known_credentials_path_getter(NULL); +} + typedef enum { PLUGIN_INITIAL_STATE, PLUGIN_GET_METADATA_CALLED_STATE, @@ -1131,6 +1168,7 @@ int main(int argc, char **argv) { test_google_default_creds_auth_key(); test_google_default_creds_refresh_token(); test_google_default_creds_gce(); + test_no_google_default_creds(); test_metadata_plugin_success(); test_metadata_plugin_failure(); test_get_well_known_google_credentials_file_path(); |