diff options
| author | Jesper Jensen <jesper@jnsn.dev> | 2026-02-17 23:34:53 +0100 |
|---|---|---|
| committer | Jesper Jensen <jesper@jnsn.dev> | 2026-02-17 23:34:53 +0100 |
| commit | 78745e06f4a4365e9caa8ee12fb0d9e15fb59300 (patch) | |
| tree | fb24257a0942704408e0ed1c2513a0f1cdd8c20e /test | |
| parent | c9e3a4b2816ad23aa201a4f43f357a376947bd49 (diff) | |
Simple client CRUD
Diffstat (limited to 'test')
| -rw-r--r-- | test/list_clients.c | 38 |
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; +} |
