aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Julien Boeuf <jboeuf@google.com>2015-12-10 15:06:45 -0800
committerGravatar Julien Boeuf <jboeuf@google.com>2015-12-10 15:06:45 -0800
commit97e5147bd1ab47adb659fdb5306091a9342c7d9f (patch)
treeafa10ab787dec7bd453017fede93d6d7d4115c17 /test
parent331e3782af23388a87d34c818ae205d15dacba1f (diff)
One more test for default google creds.
Diffstat (limited to 'test')
-rw-r--r--test/core/security/credentials_test.c40
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();