aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/core
diff options
context:
space:
mode:
authorGravatar Craig Tiller <craig.tiller@gmail.com>2015-05-30 11:08:34 -0700
committerGravatar Craig Tiller <craig.tiller@gmail.com>2015-05-30 11:08:34 -0700
commita2779c122ec3b2c3b6a475afa2ed18145d1f1b61 (patch)
tree4bb994c4e08e1c1ab30ad1841decbbf863e05548 /test/core
parent8f17c6c0283aeb78b615580529e98f1a28bf3c77 (diff)
parentd7029e1ee3232fea606ab79b684e24294b7f8836 (diff)
Merge github.com:grpc/grpc into but-maybe-i-want-to-poll
Conflicts: Makefile
Diffstat (limited to 'test/core')
-rw-r--r--test/core/bad_client/bad_client.c3
-rw-r--r--test/core/end2end/fixtures/chttp2_socket_pair.c3
-rw-r--r--test/core/end2end/fixtures/chttp2_socket_pair_one_byte_at_a_time.c3
-rw-r--r--test/core/end2end/fixtures/chttp2_socket_pair_with_grpc_trace.c3
-rw-r--r--test/core/end2end/tests/request_response_with_payload_and_call_creds.c23
-rw-r--r--test/core/security/auth_context_test.c143
-rw-r--r--test/core/security/credentials_test.c163
7 files changed, 284 insertions, 57 deletions
diff --git a/test/core/bad_client/bad_client.c b/test/core/bad_client/bad_client.c
index c3725b5909..9d1c4ce2d7 100644
--- a/test/core/bad_client/bad_client.c
+++ b/test/core/bad_client/bad_client.c
@@ -68,7 +68,8 @@ static grpc_transport_setup_result server_setup_transport(
static grpc_channel_filter const *extra_filters[] = {
&grpc_http_server_filter};
return grpc_server_setup_transport(a->server, transport, extra_filters,
- GPR_ARRAY_SIZE(extra_filters), mdctx);
+ GPR_ARRAY_SIZE(extra_filters), mdctx,
+ grpc_server_get_channel_args(a->server));
}
void grpc_run_bad_client_test(const char *name, const char *client_payload,
diff --git a/test/core/end2end/fixtures/chttp2_socket_pair.c b/test/core/end2end/fixtures/chttp2_socket_pair.c
index 43ebf7eed5..e0221d0452 100644
--- a/test/core/end2end/fixtures/chttp2_socket_pair.c
+++ b/test/core/end2end/fixtures/chttp2_socket_pair.c
@@ -62,7 +62,8 @@ static grpc_transport_setup_result server_setup_transport(
static grpc_channel_filter const *extra_filters[] = {
&grpc_http_server_filter};
return grpc_server_setup_transport(f->server, transport, extra_filters,
- GPR_ARRAY_SIZE(extra_filters), mdctx);
+ GPR_ARRAY_SIZE(extra_filters), mdctx,
+ grpc_server_get_channel_args(f->server));
}
typedef struct {
diff --git a/test/core/end2end/fixtures/chttp2_socket_pair_one_byte_at_a_time.c b/test/core/end2end/fixtures/chttp2_socket_pair_one_byte_at_a_time.c
index 385d5a4e81..37b5529d7f 100644
--- a/test/core/end2end/fixtures/chttp2_socket_pair_one_byte_at_a_time.c
+++ b/test/core/end2end/fixtures/chttp2_socket_pair_one_byte_at_a_time.c
@@ -62,7 +62,8 @@ static grpc_transport_setup_result server_setup_transport(
static grpc_channel_filter const *extra_filters[] = {
&grpc_http_server_filter};
return grpc_server_setup_transport(f->server, transport, extra_filters,
- GPR_ARRAY_SIZE(extra_filters), mdctx);
+ GPR_ARRAY_SIZE(extra_filters), mdctx,
+ grpc_server_get_channel_args(f->server));
}
typedef struct {
diff --git a/test/core/end2end/fixtures/chttp2_socket_pair_with_grpc_trace.c b/test/core/end2end/fixtures/chttp2_socket_pair_with_grpc_trace.c
index 1f53e581ab..b15a18f1a7 100644
--- a/test/core/end2end/fixtures/chttp2_socket_pair_with_grpc_trace.c
+++ b/test/core/end2end/fixtures/chttp2_socket_pair_with_grpc_trace.c
@@ -63,7 +63,8 @@ static grpc_transport_setup_result server_setup_transport(
static grpc_channel_filter const *extra_filters[] = {
&grpc_http_server_filter};
return grpc_server_setup_transport(f->server, transport, extra_filters,
- GPR_ARRAY_SIZE(extra_filters), mdctx);
+ GPR_ARRAY_SIZE(extra_filters), mdctx,
+ grpc_server_get_channel_args(f->server));
}
typedef struct {
diff --git a/test/core/end2end/tests/request_response_with_payload_and_call_creds.c b/test/core/end2end/tests/request_response_with_payload_and_call_creds.c
index df1e9d7671..08443f19a5 100644
--- a/test/core/end2end/tests/request_response_with_payload_and_call_creds.c
+++ b/test/core/end2end/tests/request_response_with_payload_and_call_creds.c
@@ -111,6 +111,23 @@ static void end_test(grpc_end2end_test_fixture *f) {
grpc_completion_queue_destroy(f->client_cq);
}
+static void print_auth_context(int is_client, const grpc_auth_context *ctx) {
+ const grpc_auth_property *p;
+ grpc_auth_property_iterator it;
+ gpr_log(GPR_INFO, "%s peer:", is_client ? "client" : "server");
+ gpr_log(GPR_INFO, "\tauthenticated: %s",
+ grpc_auth_context_peer_is_authenticated(ctx) ? "YES" : "NO");
+ it = grpc_auth_context_peer_identity(ctx);
+ while ((p = grpc_auth_property_iterator_next(&it)) != NULL) {
+ gpr_log(GPR_INFO, "\t\t%s: %s", p->name, p->value);
+ }
+ gpr_log(GPR_INFO, "\tall properties:");
+ it = grpc_auth_context_property_iterator(ctx);
+ while ((p = grpc_auth_property_iterator_next(&it)) != NULL) {
+ gpr_log(GPR_INFO, "\t\t%s: %s", p->name, p->value);
+ }
+}
+
static void test_call_creds_failure(grpc_end2end_test_config config) {
grpc_call *c;
grpc_credentials *creds = NULL;
@@ -160,6 +177,7 @@ static void request_response_with_payload_and_call_creds(
size_t details_capacity = 0;
int was_cancelled = 2;
grpc_credentials *creds = NULL;
+ const grpc_auth_context *s_auth_context = NULL;
c = grpc_channel_create_call(f.client, f.client_cq, "/foo",
"foo.test.google.fr", deadline);
@@ -214,10 +232,13 @@ static void request_response_with_payload_and_call_creds(
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(f.server, &s,
&call_details,
&request_metadata_recv,
- f.server_cq, f.server_cq,
+ f.server_cq, f.server_cq,
tag(101)));
cq_expect_completion(v_server, tag(101), 1);
cq_verify(v_server);
+ s_auth_context = grpc_call_auth_context(s);
+ GPR_ASSERT(s_auth_context != NULL);
+ print_auth_context(0, s_auth_context);
/* Cannot set creds on the server call object. */
GPR_ASSERT(grpc_call_set_credentials(s, NULL) != GRPC_CALL_OK);
diff --git a/test/core/security/auth_context_test.c b/test/core/security/auth_context_test.c
new file mode 100644
index 0000000000..54548bf1fc
--- /dev/null
+++ b/test/core/security/auth_context_test.c
@@ -0,0 +1,143 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include<string.h>
+
+#include "src/core/security/security_context.h"
+#include "src/core/support/string.h"
+#include "test/core/util/test_config.h"
+
+#include <grpc/support/log.h>
+
+static void test_empty_context(void) {
+ grpc_auth_context *ctx = grpc_auth_context_create(NULL, 0);
+ grpc_auth_property_iterator it;
+
+ gpr_log(GPR_INFO, __FUNCTION__);
+ GPR_ASSERT(ctx != NULL);
+ GPR_ASSERT(grpc_auth_context_peer_identity_property_name(ctx) == NULL);
+ it = grpc_auth_context_peer_identity(ctx);
+ GPR_ASSERT(grpc_auth_property_iterator_next(&it) == NULL);
+ it = grpc_auth_context_property_iterator(ctx);
+ GPR_ASSERT(grpc_auth_property_iterator_next(&it) == NULL);
+ it = grpc_auth_context_find_properties_by_name(ctx, "foo");
+ GPR_ASSERT(grpc_auth_property_iterator_next(&it) == NULL);
+ grpc_auth_context_unref(ctx);
+}
+
+static void test_simple_context(void) {
+ grpc_auth_context *ctx = grpc_auth_context_create(NULL, 3);
+ grpc_auth_property_iterator it;
+ size_t i;
+
+ gpr_log(GPR_INFO, __FUNCTION__);
+ GPR_ASSERT(ctx != NULL);
+ GPR_ASSERT(ctx->property_count == 3);
+ ctx->properties[0] = grpc_auth_property_init_from_cstring("name", "chapi");
+ ctx->properties[1] = grpc_auth_property_init_from_cstring("name", "chapo");
+ ctx->properties[2] = grpc_auth_property_init_from_cstring("foo", "bar");
+ ctx->peer_identity_property_name = ctx->properties[0].name;
+
+ GPR_ASSERT(
+ strcmp(grpc_auth_context_peer_identity_property_name(ctx), "name") == 0);
+ it = grpc_auth_context_property_iterator(ctx);
+ for (i = 0; i < ctx->property_count; i++) {
+ const grpc_auth_property *p = grpc_auth_property_iterator_next(&it);
+ GPR_ASSERT(p == &ctx->properties[i]);
+ }
+ GPR_ASSERT(grpc_auth_property_iterator_next(&it) == NULL);
+
+ it = grpc_auth_context_find_properties_by_name(ctx, "foo");
+ GPR_ASSERT(grpc_auth_property_iterator_next(&it) == &ctx->properties[2]);
+ GPR_ASSERT(grpc_auth_property_iterator_next(&it) == NULL);
+
+ it = grpc_auth_context_peer_identity(ctx);
+ GPR_ASSERT(grpc_auth_property_iterator_next(&it) == &ctx->properties[0]);
+ GPR_ASSERT(grpc_auth_property_iterator_next(&it) == &ctx->properties[1]);
+ GPR_ASSERT(grpc_auth_property_iterator_next(&it) == NULL);
+
+ grpc_auth_context_unref(ctx);
+}
+
+static void test_chained_context(void) {
+ grpc_auth_context *chained = grpc_auth_context_create(NULL, 2);
+ grpc_auth_context *ctx = grpc_auth_context_create(chained, 3);
+ grpc_auth_property_iterator it;
+ size_t i;
+
+ gpr_log(GPR_INFO, __FUNCTION__);
+ grpc_auth_context_unref(chained);
+ chained->properties[0] =
+ grpc_auth_property_init_from_cstring("name", "padapo");
+ chained->properties[1] = grpc_auth_property_init_from_cstring("foo", "baz");
+ ctx->properties[0] = grpc_auth_property_init_from_cstring("name", "chapi");
+ ctx->properties[1] = grpc_auth_property_init_from_cstring("name", "chapo");
+ ctx->properties[2] = grpc_auth_property_init_from_cstring("foo", "bar");
+ ctx->peer_identity_property_name = ctx->properties[0].name;
+
+ GPR_ASSERT(
+ strcmp(grpc_auth_context_peer_identity_property_name(ctx), "name") == 0);
+ it = grpc_auth_context_property_iterator(ctx);
+ for (i = 0; i < ctx->property_count; i++) {
+ const grpc_auth_property *p = grpc_auth_property_iterator_next(&it);
+ GPR_ASSERT(p == &ctx->properties[i]);
+ }
+ for (i = 0; i < chained->property_count; i++) {
+ const grpc_auth_property *p = grpc_auth_property_iterator_next(&it);
+ GPR_ASSERT(p == &chained->properties[i]);
+ }
+ GPR_ASSERT(grpc_auth_property_iterator_next(&it) == NULL);
+
+ it = grpc_auth_context_find_properties_by_name(ctx, "foo");
+ GPR_ASSERT(grpc_auth_property_iterator_next(&it) == &ctx->properties[2]);
+ GPR_ASSERT(grpc_auth_property_iterator_next(&it) == &chained->properties[1]);
+ GPR_ASSERT(grpc_auth_property_iterator_next(&it) == NULL);
+
+ it = grpc_auth_context_peer_identity(ctx);
+ GPR_ASSERT(grpc_auth_property_iterator_next(&it) == &ctx->properties[0]);
+ GPR_ASSERT(grpc_auth_property_iterator_next(&it) == &ctx->properties[1]);
+ GPR_ASSERT(grpc_auth_property_iterator_next(&it) == &chained->properties[0]);
+ GPR_ASSERT(grpc_auth_property_iterator_next(&it) == NULL);
+
+ grpc_auth_context_unref(ctx);
+}
+
+
+int main(int argc, char **argv) {
+ grpc_test_init(argc, argv);
+ test_empty_context();
+ test_simple_context();
+ test_chained_context();
+ return 0;
+}
+
diff --git a/test/core/security/credentials_test.c b/test/core/security/credentials_test.c
index 1b657e3d89..9a77f88e73 100644
--- a/test/core/security/credentials_test.c
+++ b/test/core/security/credentials_test.c
@@ -135,51 +135,113 @@ static grpc_httpcli_response http_response(int status, const char *body) {
return response;
}
+static void test_empty_md_store(void) {
+ grpc_credentials_md_store *store = grpc_credentials_md_store_create(0);
+ GPR_ASSERT(store->num_entries == 0);
+ GPR_ASSERT(store->allocated == 0);
+ grpc_credentials_md_store_unref(store);
+}
+
+static void test_ref_unref_empty_md_store(void) {
+ grpc_credentials_md_store *store = grpc_credentials_md_store_create(0);
+ grpc_credentials_md_store_ref(store);
+ grpc_credentials_md_store_ref(store);
+ GPR_ASSERT(store->num_entries == 0);
+ GPR_ASSERT(store->allocated == 0);
+ grpc_credentials_md_store_unref(store);
+ grpc_credentials_md_store_unref(store);
+ grpc_credentials_md_store_unref(store);
+}
+
+static void test_add_to_empty_md_store(void) {
+ grpc_credentials_md_store *store = grpc_credentials_md_store_create(0);
+ const char *key_str = "hello";
+ const char *value_str = "there blah blah blah blah blah blah blah";
+ gpr_slice key = gpr_slice_from_copied_string(key_str);
+ gpr_slice value = gpr_slice_from_copied_string(value_str);
+ grpc_credentials_md_store_add(store, key, value);
+ GPR_ASSERT(store->num_entries == 1);
+ GPR_ASSERT(gpr_slice_cmp(key, store->entries[0].key) == 0);
+ GPR_ASSERT(gpr_slice_cmp(value, store->entries[0].value) == 0);
+ gpr_slice_unref(key);
+ gpr_slice_unref(value);
+ grpc_credentials_md_store_unref(store);
+}
+
+static void test_add_cstrings_to_empty_md_store(void) {
+ grpc_credentials_md_store *store = grpc_credentials_md_store_create(0);
+ const char *key_str = "hello";
+ const char *value_str = "there blah blah blah blah blah blah blah";
+ grpc_credentials_md_store_add_cstrings(store, key_str, value_str);
+ GPR_ASSERT(store->num_entries == 1);
+ GPR_ASSERT(gpr_slice_str_cmp(store->entries[0].key, key_str) == 0);
+ GPR_ASSERT(gpr_slice_str_cmp(store->entries[0].value, value_str) == 0);
+ grpc_credentials_md_store_unref(store);
+}
+
+static void test_empty_preallocated_md_store(void) {
+ grpc_credentials_md_store *store = grpc_credentials_md_store_create(4);
+ GPR_ASSERT(store->num_entries == 0);
+ GPR_ASSERT(store->allocated == 4);
+ GPR_ASSERT(store->entries != NULL);
+ grpc_credentials_md_store_unref(store);
+}
+
+static void test_add_abunch_to_md_store(void) {
+ grpc_credentials_md_store *store = grpc_credentials_md_store_create(4);
+ size_t num_entries = 1000;
+ const char *key_str = "hello";
+ const char *value_str = "there blah blah blah blah blah blah blah";
+ size_t i;
+ for (i = 0; i < num_entries; i++) {
+ grpc_credentials_md_store_add_cstrings(store, key_str, value_str);
+ }
+ for (i = 0; i < num_entries; i++) {
+ GPR_ASSERT(gpr_slice_str_cmp(store->entries[i].key, key_str) == 0);
+ GPR_ASSERT(gpr_slice_str_cmp(store->entries[i].value, value_str) == 0);
+ }
+ grpc_credentials_md_store_unref(store);
+}
+
static void test_oauth2_token_fetcher_creds_parsing_ok(void) {
- grpc_mdctx *ctx = grpc_mdctx_create();
- grpc_mdelem *token_elem = NULL;
+ grpc_credentials_md_store *token_md = NULL;
gpr_timespec token_lifetime;
grpc_httpcli_response response =
http_response(200, valid_oauth2_json_response);
GPR_ASSERT(grpc_oauth2_token_fetcher_credentials_parse_server_response(
- &response, ctx, &token_elem, &token_lifetime) ==
+ &response, &token_md, &token_lifetime) ==
GRPC_CREDENTIALS_OK);
GPR_ASSERT(token_lifetime.tv_sec == 3599);
GPR_ASSERT(token_lifetime.tv_nsec == 0);
- GPR_ASSERT(strcmp(grpc_mdstr_as_c_string(token_elem->key),
- "Authorization") == 0);
- GPR_ASSERT(strcmp(grpc_mdstr_as_c_string(token_elem->value),
- "Bearer ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_") == 0);
- grpc_mdelem_unref(token_elem);
- grpc_mdctx_unref(ctx);
+ GPR_ASSERT(token_md->num_entries == 1);
+ GPR_ASSERT(gpr_slice_str_cmp(token_md->entries[0].key, "Authorization") == 0);
+ GPR_ASSERT(gpr_slice_str_cmp(token_md->entries[0].value,
+ "Bearer ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_") ==
+ 0);
+ grpc_credentials_md_store_unref(token_md);
}
static void test_oauth2_token_fetcher_creds_parsing_bad_http_status(void) {
- grpc_mdctx *ctx = grpc_mdctx_create();
- grpc_mdelem *token_elem = NULL;
+ grpc_credentials_md_store *token_md = NULL;
gpr_timespec token_lifetime;
grpc_httpcli_response response =
http_response(401, valid_oauth2_json_response);
GPR_ASSERT(grpc_oauth2_token_fetcher_credentials_parse_server_response(
- &response, ctx, &token_elem, &token_lifetime) ==
+ &response, &token_md, &token_lifetime) ==
GRPC_CREDENTIALS_ERROR);
- grpc_mdctx_unref(ctx);
}
static void test_oauth2_token_fetcher_creds_parsing_empty_http_body(void) {
- grpc_mdctx *ctx = grpc_mdctx_create();
- grpc_mdelem *token_elem = NULL;
+ grpc_credentials_md_store *token_md = NULL;
gpr_timespec token_lifetime;
grpc_httpcli_response response = http_response(200, "");
GPR_ASSERT(grpc_oauth2_token_fetcher_credentials_parse_server_response(
- &response, ctx, &token_elem, &token_lifetime) ==
+ &response, &token_md, &token_lifetime) ==
GRPC_CREDENTIALS_ERROR);
- grpc_mdctx_unref(ctx);
}
static void test_oauth2_token_fetcher_creds_parsing_invalid_json(void) {
- grpc_mdctx *ctx = grpc_mdctx_create();
- grpc_mdelem *token_elem = NULL;
+ grpc_credentials_md_store *token_md = NULL;
gpr_timespec token_lifetime;
grpc_httpcli_response response =
http_response(200,
@@ -187,28 +249,24 @@ static void test_oauth2_token_fetcher_creds_parsing_invalid_json(void) {
" \"expires_in\":3599, "
" \"token_type\":\"Bearer\"");
GPR_ASSERT(grpc_oauth2_token_fetcher_credentials_parse_server_response(
- &response, ctx, &token_elem, &token_lifetime) ==
+ &response, &token_md, &token_lifetime) ==
GRPC_CREDENTIALS_ERROR);
- grpc_mdctx_unref(ctx);
}
static void test_oauth2_token_fetcher_creds_parsing_missing_token(void) {
- grpc_mdctx *ctx = grpc_mdctx_create();
- grpc_mdelem *token_elem = NULL;
+ grpc_credentials_md_store *token_md = NULL;
gpr_timespec token_lifetime;
grpc_httpcli_response response = http_response(200,
"{"
" \"expires_in\":3599, "
" \"token_type\":\"Bearer\"}");
GPR_ASSERT(grpc_oauth2_token_fetcher_credentials_parse_server_response(
- &response, ctx, &token_elem, &token_lifetime) ==
+ &response, &token_md, &token_lifetime) ==
GRPC_CREDENTIALS_ERROR);
- grpc_mdctx_unref(ctx);
}
static void test_oauth2_token_fetcher_creds_parsing_missing_token_type(void) {
- grpc_mdctx *ctx = grpc_mdctx_create();
- grpc_mdelem *token_elem = NULL;
+ grpc_credentials_md_store *token_md = NULL;
gpr_timespec token_lifetime;
grpc_httpcli_response response =
http_response(200,
@@ -216,35 +274,32 @@ static void test_oauth2_token_fetcher_creds_parsing_missing_token_type(void) {
" \"expires_in\":3599, "
"}");
GPR_ASSERT(grpc_oauth2_token_fetcher_credentials_parse_server_response(
- &response, ctx, &token_elem, &token_lifetime) ==
+ &response, &token_md, &token_lifetime) ==
GRPC_CREDENTIALS_ERROR);
- grpc_mdctx_unref(ctx);
}
static void test_oauth2_token_fetcher_creds_parsing_missing_token_lifetime(
void) {
- grpc_mdctx *ctx = grpc_mdctx_create();
- grpc_mdelem *token_elem = NULL;
+ grpc_credentials_md_store *token_md = NULL;
gpr_timespec token_lifetime;
grpc_httpcli_response response =
http_response(200,
"{\"access_token\":\"ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_\","
" \"token_type\":\"Bearer\"}");
GPR_ASSERT(grpc_oauth2_token_fetcher_credentials_parse_server_response(
- &response, ctx, &token_elem, &token_lifetime) ==
+ &response, &token_md, &token_lifetime) ==
GRPC_CREDENTIALS_ERROR);
- grpc_mdctx_unref(ctx);
}
-static void check_metadata(expected_md *expected, grpc_mdelem **md_elems,
+static void check_metadata(expected_md *expected, grpc_credentials_md *md_elems,
size_t num_md) {
size_t i;
for (i = 0; i < num_md; i++) {
size_t j;
for (j = 0; j < num_md; j++) {
- if (0 == gpr_slice_str_cmp(md_elems[j]->key->slice, expected[i].key)) {
- GPR_ASSERT(0 == gpr_slice_str_cmp(md_elems[j]->value->slice,
- expected[i].value));
+ if (0 == gpr_slice_str_cmp(md_elems[j].key, expected[i].key)) {
+ GPR_ASSERT(gpr_slice_str_cmp(md_elems[j].value, expected[i].value) ==
+ 0);
break;
}
}
@@ -255,7 +310,7 @@ static void check_metadata(expected_md *expected, grpc_mdelem **md_elems,
}
}
-static void check_iam_metadata(void *user_data, grpc_mdelem **md_elems,
+static void check_iam_metadata(void *user_data, grpc_credentials_md *md_elems,
size_t num_md, grpc_credentials_status status) {
grpc_credentials *c = (grpc_credentials *)user_data;
expected_md emd[] = {
@@ -277,7 +332,7 @@ static void test_iam_creds(void) {
}
static void check_ssl_oauth2_composite_metadata(
- void *user_data, grpc_mdelem **md_elems, size_t num_md,
+ void *user_data, grpc_credentials_md *md_elems, size_t num_md,
grpc_credentials_status status) {
grpc_credentials *c = (grpc_credentials *)user_data;
expected_md emd[] = {
@@ -327,7 +382,7 @@ void test_ssl_fake_transport_security_composite_creds_failure(void) {
}
static void check_ssl_oauth2_iam_composite_metadata(
- void *user_data, grpc_mdelem **md_elems, size_t num_md,
+ void *user_data, grpc_credentials_md *md_elems, size_t num_md,
grpc_credentials_status status) {
grpc_credentials *c = (grpc_credentials *)user_data;
expected_md emd[] = {
@@ -374,20 +429,20 @@ static void test_ssl_oauth2_iam_composite_creds(void) {
}
static void on_oauth2_creds_get_metadata_success(
- void *user_data, grpc_mdelem **md_elems, size_t num_md,
+ void *user_data, grpc_credentials_md *md_elems, size_t num_md,
grpc_credentials_status status) {
GPR_ASSERT(status == GRPC_CREDENTIALS_OK);
GPR_ASSERT(num_md == 1);
- GPR_ASSERT(strcmp(grpc_mdstr_as_c_string(md_elems[0]->key),
- "Authorization") == 0);
- GPR_ASSERT(strcmp(grpc_mdstr_as_c_string(md_elems[0]->value),
- "Bearer ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_") == 0);
+ GPR_ASSERT(gpr_slice_str_cmp(md_elems[0].key, "Authorization") == 0);
+ GPR_ASSERT(gpr_slice_str_cmp(md_elems[0].value,
+ "Bearer ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_") ==
+ 0);
GPR_ASSERT(user_data != NULL);
GPR_ASSERT(strcmp((const char *)user_data, test_user_data) == 0);
}
static void on_oauth2_creds_get_metadata_failure(
- void *user_data, grpc_mdelem **md_elems, size_t num_md,
+ void *user_data, grpc_credentials_md *md_elems, size_t num_md,
grpc_credentials_status status) {
GPR_ASSERT(status == GRPC_CREDENTIALS_ERROR);
GPR_ASSERT(num_md == 0);
@@ -719,24 +774,22 @@ static void test_service_account_creds_signing_failure(void) {
}
static void on_jwt_creds_get_metadata_success(void *user_data,
- grpc_mdelem **md_elems,
+ grpc_credentials_md *md_elems,
size_t num_md,
grpc_credentials_status status) {
char *expected_md_value;
gpr_asprintf(&expected_md_value, "Bearer %s", test_signed_jwt);
GPR_ASSERT(status == GRPC_CREDENTIALS_OK);
GPR_ASSERT(num_md == 1);
- GPR_ASSERT(strcmp(grpc_mdstr_as_c_string(md_elems[0]->key),
- "Authorization") == 0);
- GPR_ASSERT(strcmp(grpc_mdstr_as_c_string(md_elems[0]->value),
- expected_md_value) == 0);
+ GPR_ASSERT(gpr_slice_str_cmp(md_elems[0].key, "Authorization") == 0);
+ GPR_ASSERT(gpr_slice_str_cmp(md_elems[0].value, expected_md_value) == 0);
GPR_ASSERT(user_data != NULL);
GPR_ASSERT(strcmp((const char *)user_data, test_user_data) == 0);
gpr_free(expected_md_value);
}
static void on_jwt_creds_get_metadata_failure(void *user_data,
- grpc_mdelem **md_elems,
+ grpc_credentials_md *md_elems,
size_t num_md,
grpc_credentials_status status) {
GPR_ASSERT(status == GRPC_CREDENTIALS_ERROR);
@@ -796,6 +849,12 @@ static void test_jwt_creds_signing_failure(void) {
int main(int argc, char **argv) {
grpc_test_init(argc, argv);
+ test_empty_md_store();
+ test_ref_unref_empty_md_store();
+ test_add_to_empty_md_store();
+ test_add_cstrings_to_empty_md_store();
+ test_empty_preallocated_md_store();
+ test_add_abunch_to_md_store();
test_oauth2_token_fetcher_creds_parsing_ok();
test_oauth2_token_fetcher_creds_parsing_bad_http_status();
test_oauth2_token_fetcher_creds_parsing_empty_http_body();