diff --git a/test/meson.build b/test/meson.build
index 39c9784..a204b12 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -1,8 +1,4 @@
 tests = [
-	'test-client-escape',
-	'test-config-parse',
-	'test-config-parse-bytesize',
-	'test-config-resolve-console-id',
 	'test-ringbuffer-boundary-poll',
 	'test-ringbuffer-boundary-read',
 	'test-ringbuffer-contained-offset-read',
@@ -16,3 +12,23 @@
   test(t, executable(t, f'@t@.c', c_args: [ '-DSYSCONFDIR=""' ],
 		     include_directories: '..'))
 endforeach
+
+tests_depend_iniparser = [
+	'test-client-escape',
+	'test-config-parse',
+	'test-config-parse-bytesize',
+	'test-config-resolve-console-id'
+]
+
+foreach ct : tests_depend_iniparser
+  test(
+    ct,
+    executable(
+      ct,
+      f'@ct@.c',
+      c_args: [ '-DSYSCONFDIR=""' ],
+      dependencies: [ iniparser_dep ],
+      include_directories: '..'
+    )
+  )
+endforeach
diff --git a/test/test-config-parse.c b/test/test-config-parse.c
index df90e91..8409f24 100644
--- a/test/test-config-parse.c
+++ b/test/test-config-parse.c
@@ -11,25 +11,66 @@
 
 #include "config.c"
 
+static struct config *mock_config_from_buffer(const char *input)
+{
+	struct config *ctx;
+	ssize_t rc;
+
+	int fd = memfd_create("test-parse-ini", 0);
+	assert(fd != -1);
+
+	const size_t len = strlen(input);
+	rc = write(fd, input, len);
+
+	assert(rc >= 0);
+	assert((size_t)rc == len);
+
+	rc = lseek(fd, 0, SEEK_SET);
+	assert(rc == 0);
+
+	FILE *f = fdopen(fd, "r");
+	assert(f != NULL);
+
+	dictionary *dict = iniparser_load_file(f, "");
+
+	fclose(f);
+
+	if (dict == NULL) {
+		return NULL;
+	}
+
+	ctx = calloc(1, sizeof(*ctx));
+
+	if (ctx) {
+		ctx->dict = dict;
+	}
+
+	return ctx;
+}
+
 static void execute_test(const char *input, const char *key,
 			 const char *expected)
 {
-	struct config *ctx;
+	struct config *ctx = mock_config_from_buffer(input);
 	const char *found;
-	char *buf;
 
-	ctx = calloc(1, sizeof(*ctx));
-	buf = strdup(input);
-	config_parse(ctx, buf);
-	free(buf);
-	found = config_get_value(ctx, key);
 	if (!expected) {
+		if (ctx == NULL) {
+			return;
+		}
+
+		found = config_get_value(ctx, key);
 		assert(!found);
+
+		goto cleanup;
 	}
-	if (expected) {
-		assert(found);
-		assert(!strcmp(expected, found));
-	}
+
+	assert(ctx->dict != NULL);
+	found = config_get_value(ctx, key);
+
+	assert(found);
+	assert(!strcmp(expected, found));
+cleanup:
 	config_fini(ctx);
 }
 
diff --git a/test/test-config-resolve-console-id.c b/test/test-config-resolve-console-id.c
index 84bc5b3..d84ebd1 100644
--- a/test/test-config-resolve-console-id.c
+++ b/test/test-config-resolve-console-id.c
@@ -4,6 +4,26 @@
 
 #include "config.c"
 
+static struct config *config_mock(char *key, char *value)
+{
+	char buf[CONFIG_MAX_KEY_LENGTH];
+	struct config *config;
+	int rc;
+
+	config = malloc(sizeof(struct config));
+	assert(config != NULL);
+
+	config->dict = dictionary_new(1);
+	assert(config->dict != NULL);
+
+	rc = snprintf(buf, CONFIG_MAX_KEY_LENGTH, ":%s", key);
+	assert(rc >= 0 && (size_t)rc < sizeof(buf));
+
+	dictionary_set(config->dict, buf, value);
+
+	return config;
+}
+
 static void test_independence_cmdline_optarg(void)
 {
 	const char *console_id;
@@ -21,12 +41,8 @@
 {
 	const char *console_id;
 	struct config *ctx;
-	char *buf;
 
-	ctx = calloc(1, sizeof(*ctx));
-	buf = strdup("console-id = " TEST_CONSOLE_ID);
-	config_parse(ctx, buf);
-	free(buf);
+	ctx = config_mock("console-id", TEST_CONSOLE_ID);
 	console_id = config_resolve_console_id(ctx, NULL);
 
 	assert(!strcmp(console_id, TEST_CONSOLE_ID));
@@ -38,12 +54,8 @@
 {
 	const char *console_id;
 	struct config *ctx;
-	char *buf;
 
-	ctx = calloc(1, sizeof(*ctx));
-	buf = strdup("socket-id = " TEST_CONSOLE_ID);
-	config_parse(ctx, buf);
-	free(buf);
+	ctx = config_mock("socket-id", TEST_CONSOLE_ID);
 	console_id = config_resolve_console_id(ctx, NULL);
 
 	/*
@@ -70,15 +82,10 @@
 
 static void test_precedence_cmdline_optarg(void)
 {
-	static const char *const config = "console-id = console\n";
 	const char *console_id;
 	struct config *ctx;
-	char *buf;
 
-	ctx = calloc(1, sizeof(*ctx));
-	buf = strdup(config);
-	config_parse(ctx, buf);
-	free(buf);
+	ctx = config_mock("console-id", "console");
 	console_id = config_resolve_console_id(ctx, TEST_CONSOLE_ID);
 
 	assert(config_get_value(ctx, "console-id"));
@@ -89,15 +96,10 @@
 
 static void test_precedence_config_console_id(void)
 {
-	static const char *const config = "console-id = console\n";
 	const char *console_id;
 	struct config *ctx;
-	char *buf;
 
-	ctx = calloc(1, sizeof(*ctx));
-	buf = strdup(config);
-	config_parse(ctx, buf);
-	free(buf);
+	ctx = config_mock("console-id", "console");
 	console_id = config_resolve_console_id(ctx, NULL);
 
 	assert(config_get_value(ctx, "console-id"));
