diff options
Diffstat (limited to 'src/testing/testing_api_cmd_oauth.c')
-rw-r--r-- | src/testing/testing_api_cmd_oauth.c | 50 |
1 files changed, 36 insertions, 14 deletions
diff --git a/src/testing/testing_api_cmd_oauth.c b/src/testing/testing_api_cmd_oauth.c index 514b4ac8c..80d38e4c8 100644 --- a/src/testing/testing_api_cmd_oauth.c +++ b/src/testing/testing_api_cmd_oauth.c @@ -1,6 +1,6 @@ /* This file is part of TALER - Copyright (C) 2021 Taler Systems SA + Copyright (C) 2021-2023 Taler Systems SA TALER is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -40,6 +40,11 @@ struct OAuthState struct MHD_Daemon *mhd; /** + * Birthdate that the oauth server should return in a response, may be NULL + */ + const char *birthdate; + + /** * Port to listen on. */ uint16_t port; @@ -172,28 +177,36 @@ handler_cb (void *cls, void **con_cls) { struct RequestCtx *rc = *con_cls; + struct OAuthState *oas = cls; unsigned int hc; json_t *body; - (void) cls; (void) version; if (0 == strcasecmp (method, MHD_HTTP_METHOD_GET)) { + json_t *data = + GNUNET_JSON_PACK ( + GNUNET_JSON_pack_string ("id", + "XXXID12345678"), + GNUNET_JSON_pack_string ("first_name", + "Bob"), + GNUNET_JSON_pack_string ("last_name", + "Builder")); + + if (NULL != oas->birthdate) + GNUNET_assert (0 == + json_object_set_new (data, + "birthdate", + json_string_nocheck ( + oas->birthdate))); + body = GNUNET_JSON_PACK ( GNUNET_JSON_pack_string ( "status", "success"), GNUNET_JSON_pack_object_steal ( - "data", - GNUNET_JSON_PACK ( - GNUNET_JSON_pack_string ("id", - "XXXID12345678"), - GNUNET_JSON_pack_string ("first_name", - "Bob"), - GNUNET_JSON_pack_string ("last_name", - "Builder") - ))); + "data", data)); return TALER_MHD_reply_json_steal (connection, body, MHD_HTTP_OK); @@ -310,6 +323,7 @@ cleanup (void *cls, (void) toe; if (NULL == rc) return; + MHD_destroy_post_processor (rc->pp); GNUNET_free (rc->code); GNUNET_free (rc->client_id); GNUNET_free (rc->redirect_uri); @@ -333,12 +347,18 @@ oauth_run (void *cls, struct OAuthState *oas = cls; (void) cmd; - oas->mhd = MHD_start_daemon (MHD_USE_AUTO_INTERNAL_THREAD, + oas->mhd = MHD_start_daemon (MHD_USE_AUTO_INTERNAL_THREAD | MHD_USE_DEBUG, oas->port, NULL, NULL, &handler_cb, oas, MHD_OPTION_NOTIFY_COMPLETED, &cleanup, NULL, NULL); + if (NULL == oas->mhd) + { + GNUNET_break (0); + TALER_TESTING_interpreter_fail (is); + return; + } TALER_TESTING_interpreter_next (is); } @@ -367,13 +387,15 @@ oauth_cleanup (void *cls, struct TALER_TESTING_Command -TALER_TESTING_cmd_oauth (const char *label, - uint16_t port) +TALER_TESTING_cmd_oauth_with_birthdate (const char *label, + const char *birthdate, + uint16_t port) { struct OAuthState *oas; oas = GNUNET_new (struct OAuthState); oas->port = port; + oas->birthdate = birthdate; { struct TALER_TESTING_Command cmd = { .cls = oas, |