summaryrefslogtreecommitdiff
path: root/test/list_clients.c
diff options
context:
space:
mode:
authorJesper Jensen <jesper@jnsn.dev>2026-02-17 23:34:53 +0100
committerJesper Jensen <jesper@jnsn.dev>2026-02-17 23:34:53 +0100
commit78745e06f4a4365e9caa8ee12fb0d9e15fb59300 (patch)
treefb24257a0942704408e0ed1c2513a0f1cdd8c20e /test/list_clients.c
parentc9e3a4b2816ad23aa201a4f43f357a376947bd49 (diff)
Simple client CRUD
Diffstat (limited to 'test/list_clients.c')
-rw-r--r--test/list_clients.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/list_clients.c b/test/list_clients.c
new file mode 100644
index 0000000..ea34794
--- /dev/null
+++ b/test/list_clients.c
@@ -0,0 +1,38 @@
+#include "web.h"
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int main() {
+ struct App app = { .dbname = "file::memory:?cache=shared" };
+ prepare_database(&app);
+ struct Server server = { .app = &app };
+ struct Request request = { .server = &server };
+
+ // Insert 17 clients using create_client
+ for (int i = 1; i <= 17; i++) {
+ char name[32];
+ snprintf(name, sizeof(name), "client%d", i);
+ struct CreateClientResult cr;
+ create_client(&request, name, &cr);
+ }
+
+ // Call list_clients
+ struct ListClientResult *result = malloc(sizeof(*result) + 16 * sizeof(struct ListClientResultClient));
+ list_clients(&request, result);
+
+ // Verify: exactly 16 returned, correct order and names
+ assert(result->clients_len == 16);
+ for (int i = 0; i < 16; i++) {
+ assert(result->clients[i].id == i + 1);
+ char expected[32];
+ snprintf(expected, sizeof(expected), "client%d", i + 1);
+ assert(strcmp(result->clients[i].name, expected) == 0);
+ }
+ free(result);
+
+ printf("list_clients test passed\n");
+ return 0;
+}