summaryrefslogtreecommitdiff
path: root/test/list_clients.c
blob: ea34794feae173dd4259f9974e0cf1c9c256f47a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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;
}