Mercurial
view connectors/tests/route_test.c @ 281:c57149ad216e default tip
Copilot-Session: f68442b1-fa8f-46a0-9689-81710613bbd4
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Tue, 18 Aug 2026 22:18:15 -0700 |
| parents | b3b547563ec7 |
| children |
line wrap: on
line source
#include "connectors/connector.h" #include <assert.h> #include <stdio.h> #include <string.h> static const char *value(Seobeo_Request_Entry *map, const char *key) { Seobeo_Request_Entry *entry = Dowa_HashMap_Get_Ptr(map, (char *)key); return entry ? entry->value : NULL; } typedef struct { boolean required_csrf; } Test_Auth_Context; static const char *test_only_auth( Seobeo_Request_Entry *request, boolean require_csrf, Dowa_Arena *arena, void *opaque) { (void)request; (void)arena; Test_Auth_Context *context = opaque; context->required_csrf = require_csrf; return NULL; } int main(void) { Dowa_Arena *arena = Dowa_Arena_Create(64 * 1024); Test_Auth_Context auth_context = {0}; Connector_Auth_Adapter test_adapter = { .resolve_user = test_only_auth, .context = &auth_context }; Connector_Service_Configure(NULL, NULL, test_adapter); Seobeo_Router_Init(); Connector_Service_Register_Routes(); Seobeo_Request_Entry *request = NULL; Seobeo_Route_Handler health = Seobeo_Router_Find_Handler( "GET", "/health", &request, arena); assert(health); Seobeo_Request_Entry *response = health(request, arena); assert(!strcmp(value(response, "status"), "200")); request = NULL; Seobeo_Route_Handler auth_page = Seobeo_Router_Find_Handler( "GET", "/auth-test.html", &request, arena); assert(auth_page); response = auth_page(request, arena); assert(!strcmp(value(response, "status"), "200")); assert(strstr(value(response, "content-type"), "text/html")); assert(strstr(value(response, "body"), "Check Zenbu session")); request = NULL; Seobeo_Route_Handler ai_tools = Seobeo_Router_Find_Handler( "GET", "/v1/ai/tools", &request, arena); assert(ai_tools); response = ai_tools(request, arena); assert(!strcmp(value(response, "status"), "200")); assert(strstr(value(response, "body"), "connector.gmail.get")); request = NULL; Seobeo_Route_Handler oauth_start = Seobeo_Router_Find_Handler( "POST", "/v1/oauth/google/start", &request, arena); assert(oauth_start); response = oauth_start(request, arena); assert(!strcmp(value(response, "status"), "401")); assert(auth_context.required_csrf); request = NULL; assert(!Seobeo_Router_Find_Handler( "GET", "/v1/oauth/google/start", &request, arena)); request = NULL; Seobeo_Route_Handler auth_session = Seobeo_Router_Find_Handler( "GET", "/v1/auth/session", &request, arena); assert(auth_session); response = auth_session(request, arena); assert(!strcmp(value(response, "status"), "401")); assert(strstr(value(response, "body"), "\"authenticated\":false")); request = NULL; Seobeo_Route_Handler rejected = Seobeo_Router_Find_Handler( "DELETE", "/v1/accounts/google:one/drive/files/file-1", &request, arena); assert(rejected); response = rejected(request, arena); assert(!strcmp(value(response, "status"), "403")); assert(strstr(value(response, "body"), "operation_not_allowed")); request = NULL; Seobeo_Route_Handler confirmation = Seobeo_Router_Find_Handler( "POST", "/v1/confirmations", &request, arena); assert(confirmation); response = confirmation(request, arena); assert(!strcmp(value(response, "status"), "401")); assert(auth_context.required_csrf); request = NULL; Seobeo_Route_Handler get_policy = Seobeo_Router_Find_Handler( "GET", "/v1/settings/confirmations/gmail.send", &request, arena); assert(get_policy); response = get_policy(request, arena); assert(!strcmp(value(response, "status"), "401")); assert(!auth_context.required_csrf); request = NULL; Seobeo_Route_Handler set_policy = Seobeo_Router_Find_Handler( "PUT", "/v1/settings/confirmations/gmail.send", &request, arena); assert(set_policy); response = set_policy(request, arena); assert(!strcmp(value(response, "status"), "401")); assert(auth_context.required_csrf); request = NULL; Seobeo_Route_Handler drive_list = Seobeo_Router_Find_Handler( "GET", "/v1/accounts/google:one/drive/files", &request, arena); assert(drive_list); response = drive_list(request, arena); assert(!strcmp(value(response, "status"), "401")); assert(!auth_context.required_csrf); request = NULL; assert(Seobeo_Router_Find_Handler( "POST", "/v1/accounts/google:one/gmail/send", &request, arena)); request = NULL; assert(Seobeo_Router_Find_Handler( "GET", "/v1/accounts/google:one/gmail/messages/msg/attachments/attachment", &request, arena)); request = NULL; assert(!Seobeo_Router_Find_Handler( "POST", "/v1/accounts/google:one/gmail/messages/msg/labels", &request, arena)); Seobeo_Router_Destroy(); Dowa_Arena_Free(arena); printf("route_test: ok\n"); return 0; }