Mercurial
view seobeo/tests/seobeo_response_test.c @ 221:ce7f4400c2de hg-web
[hg-web] Harden forge and add changeset UI
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Sun, 02 Aug 2026 09:01:24 -0700 |
| parents | |
| children | 0e7b9464248d |
line wrap: on
line source
#include "seobeo/seobeo.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> int main(void) { int sockets[2]; if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockets) != 0) return 1; Seobeo_Handle handle = {0}; handle.socket = sockets[0]; handle.write_buffer_capacity = 4096; handle.write_buffer = malloc(handle.write_buffer_capacity); Dowa_Arena *arena = Dowa_Arena_Create(4096); Seobeo_Request_Entry *response = NULL; Dowa_HashMap_Push_Arena(response, "status", "200", arena); Dowa_HashMap_Push_Arena(response, "content-type", "text/plain", arena); Dowa_HashMap_Push_Arena(response, "body", "hello", arena); Dowa_HashMap_Push_Arena(response, "X-Test", "present", arena); Dowa_HashMap_Push_Arena(response, "X-Unsafe", "bad\r\nInjected: yes", arena); Seobeo_Router_Send_Response(&handle, response, arena); char received[4096] = {0}; ssize_t length = read(sockets[1], received, sizeof(received) - 1); int failed = 0; if (length <= 0) failed = 1; if (!strstr(received, "Content-Length: 5\r\n")) failed = 1; if (!strstr(received, "X-Test: present\r\n\r\nhello")) failed = 1; if (strstr(received, "Injected: yes")) failed = 1; if (failed) fprintf(stderr, "Unexpected response:\n%s\n", received); close(sockets[0]); close(sockets[1]); free(handle.write_buffer); Dowa_Arena_Free(arena); return failed; }