grpc_auth_refresh_token grpc_auth_refresh_token_create_from_json( const grpc_json *json) { grpc_auth_refresh_token result; const char *prop_value; int success = 0; memset(&result, 0, sizeof(grpc_auth_refresh_token)); result.type = GRPC_AUTH_JSON_TYPE_INVALID; if (json == NULL) { gpr_log(GPR_ERROR, "Invalid json."); goto end; } prop_value = json_get_string_property(json, "type"); if (prop_value == NULL || strcmp(prop_value, GRPC_AUTH_JSON_TYPE_AUTHORIZED_USER)) { goto end; } result.type = GRPC_AUTH_JSON_TYPE_AUTHORIZED_USER; if (!set_json_key_string_property(json, "client_secret", &result.client_secret) || !set_json_key_string_property(json, "client_id", &result.client_id) || !set_json_key_string_property(json, "refresh_token", &result.refresh_token)) { goto end; } success = 1; end: if (!success) grpc_auth_refresh_token_destruct(&result); return result; }
static void test_parse_refresh_token_success(void) { grpc_auth_refresh_token refresh_token = grpc_auth_refresh_token_create_from_string(test_refresh_token_str); GPR_ASSERT(grpc_auth_refresh_token_is_valid(&refresh_token)); GPR_ASSERT(refresh_token.type != NULL && (strcmp(refresh_token.type, "authorized_user") == 0)); GPR_ASSERT(refresh_token.client_id != NULL && (strcmp(refresh_token.client_id, "32555999999.apps.googleusercontent.com") == 0)); GPR_ASSERT( refresh_token.client_secret != NULL && (strcmp(refresh_token.client_secret, "EmssLNjJy1332hD4KFsecret") == 0)); GPR_ASSERT(refresh_token.refresh_token != NULL && (strcmp(refresh_token.refresh_token, "1/Blahblasj424jladJDSGNf-u4Sua3HDA2ngjd42") == 0)); grpc_auth_refresh_token_destruct(&refresh_token); }
static void refresh_token_destroy(grpc_credentials *creds) { grpc_refresh_token_credentials *c = (grpc_refresh_token_credentials *)creds; grpc_auth_refresh_token_destruct(&c->refresh_token); oauth2_token_fetcher_destroy(&c->base.base); }