diff seobeo/tests/seobeo_response_test.c @ 223:0e7b9464248d hg-web

[hg-web] Add browser route regression coverage
author MrJuneJune <me@mrjunejune.com>
date Sun, 02 Aug 2026 10:07:40 -0700
parents ce7f4400c2de
children
line wrap: on
line diff
--- a/seobeo/tests/seobeo_response_test.c	Sun Aug 02 09:07:36 2026 -0700
+++ b/seobeo/tests/seobeo_response_test.c	Sun Aug 02 10:07:40 2026 -0700
@@ -45,5 +45,35 @@
   close(sockets[1]);
   free(handle.write_buffer);
   Dowa_Arena_Free(arena);
+
+  if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockets) != 0)
+    return 1;
+
+  memset(&handle, 0, sizeof(handle));
+  handle.socket = sockets[0];
+  handle.write_buffer_capacity = 4096;
+  handle.write_buffer = malloc(handle.write_buffer_capacity);
+  arena = Dowa_Arena_Create(4096);
+  response = NULL;
+  Dowa_HashMap_Push_Arena(response, "status", "204", arena);
+  Dowa_HashMap_Push_Arena(response, "content-type", "text/plain", arena);
+  Dowa_HashMap_Push_Arena(response, "body", "", arena);
+  Seobeo_Router_Send_Response(&handle, response, arena);
+
+  memset(received, 0, sizeof(received));
+  length = read(sockets[1], received, sizeof(received) - 1);
+  if (length <= 0 ||
+      !strstr(received, "HTTP/1.1 204 No Content\r\n") ||
+      !strstr(received, "Content-Length: 0\r\n") ||
+      !strstr(received, "\r\n\r\n"))
+    failed = 1;
+
+  if (failed)
+    fprintf(stderr, "Unexpected no-content response:\n%s\n", received);
+
+  close(sockets[0]);
+  close(sockets[1]);
+  free(handle.write_buffer);
+  Dowa_Arena_Free(arena);
   return failed;
 }