diff --git a/test/meson.build b/test/meson.build
index 149322f..0d08d19 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -2,6 +2,7 @@
 	'test-client-escape',
 	'test-config-parse',
 	'test-config-parse-logsize',
+	'test-config-resolve-console-id',
 	'test-ringbuffer-boundary-poll',
 	'test-ringbuffer-boundary-read',
 	'test-ringbuffer-contained-offset-read',
diff --git a/test/test-config-resolve-console-id.c b/test/test-config-resolve-console-id.c
new file mode 100644
index 0000000..319f342
--- /dev/null
+++ b/test/test-config-resolve-console-id.c
@@ -0,0 +1,140 @@
+#include <assert.h>
+
+#define TEST_CONSOLE_ID "test"
+
+#include "config.c"
+
+static void test_independence_cmdline_optarg(void)
+{
+	const char *console_id;
+	struct config *ctx;
+
+	ctx = calloc(1, sizeof(*ctx));
+	console_id = config_resolve_console_id(ctx, TEST_CONSOLE_ID);
+
+	assert(!strcmp(console_id, TEST_CONSOLE_ID));
+
+	config_fini(ctx);
+}
+
+static void test_independence_config_console_id(void)
+{
+	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);
+	console_id = config_resolve_console_id(ctx, NULL);
+
+	assert(!strcmp(console_id, TEST_CONSOLE_ID));
+
+	config_fini(ctx);
+}
+
+static void test_independence_config_socket_id(void)
+{
+	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);
+	console_id = config_resolve_console_id(ctx, NULL);
+
+	assert(!strcmp(console_id, TEST_CONSOLE_ID));
+
+	config_fini(ctx);
+}
+
+static void test_independence_default(void)
+{
+	const char *console_id;
+	struct config *ctx;
+
+	ctx = calloc(1, sizeof(*ctx));
+	console_id = config_resolve_console_id(ctx, NULL);
+
+	assert(!strcmp(console_id, DEFAULT_CONSOLE_ID));
+
+	config_fini(ctx);
+}
+
+static void test_precedence_cmdline_optarg(void)
+{
+	static const char *const config = "console-id = console\n"
+					  "socket-id = socket\n";
+	const char *console_id;
+	struct config *ctx;
+	char *buf;
+
+	ctx = calloc(1, sizeof(*ctx));
+	buf = strdup(config);
+	config_parse(ctx, buf);
+	free(buf);
+	console_id = config_resolve_console_id(ctx, TEST_CONSOLE_ID);
+
+	assert(config_get_value(ctx, "console-id"));
+	assert(config_get_value(ctx, "socket-id"));
+	assert(!strcmp(console_id, TEST_CONSOLE_ID));
+
+	config_fini(ctx);
+}
+
+static void test_precedence_config_console_id(void)
+{
+	static const char *const config = "console-id = console\n"
+					  "socket-id = socket\n";
+	const char *console_id;
+	struct config *ctx;
+	char *buf;
+
+	ctx = calloc(1, sizeof(*ctx));
+	buf = strdup(config);
+	config_parse(ctx, buf);
+	free(buf);
+	console_id = config_resolve_console_id(ctx, NULL);
+
+	assert(config_get_value(ctx, "console-id"));
+	assert(config_get_value(ctx, "socket-id"));
+	assert(!strcmp(console_id, "console"));
+
+	config_fini(ctx);
+}
+
+static void test_precedence_config_socket_id(void)
+{
+	static const char *const config = "socket-id = socket\n";
+	const char *console_id;
+	struct config *ctx;
+	char *buf;
+
+	ctx = calloc(1, sizeof(*ctx));
+	buf = strdup(config);
+	config_parse(ctx, buf);
+	free(buf);
+	console_id = config_resolve_console_id(ctx, NULL);
+
+	assert(!config_get_value(ctx, "console-id"));
+	assert(config_get_value(ctx, "socket-id"));
+	assert(!strcmp(console_id, "socket"));
+
+	config_fini(ctx);
+}
+
+int main(void)
+{
+	test_independence_cmdline_optarg();
+	test_independence_config_console_id();
+	test_independence_config_socket_id();
+	test_independence_default();
+	test_precedence_cmdline_optarg();
+	test_precedence_config_console_id();
+	test_precedence_config_socket_id();
+
+	return EXIT_SUCCESS;
+}
