test: add test for org.freedesktop.login1.Session SetDisplay

This commit is contained in:
David Tardon
2022-07-13 13:53:13 +02:00
parent 9ac0855b61
commit d1fa6c99bb
+39
View File
@@ -55,6 +55,45 @@ TEST(set_type) {
assert_se(streq(type, "tty"));
}
/* Tests org.freedesktop.logind.Session SetDisplay */
TEST(set_display) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus* bus = NULL;
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
_cleanup_free_ char *display = NULL;
assert_se(sd_bus_open_system(&bus) >= 0);
/* Display is unset by default */
assert_se(bus_get_property_string(bus, &session, "Display", NULL, &display) >= 0);
assert_se(isempty(display));
/* Display can only be set by the session controller (which we're not ATM) */
assert_se(bus_call_method(bus, &session, "SetDisplay", &error, NULL, "s", ":0") < 0);
assert_se(sd_bus_error_has_name(&error, BUS_ERROR_NOT_IN_CONTROL));
assert_se(bus_call_method(bus, &session, "TakeControl", NULL, NULL, "b", true) >= 0);
/* Display can only be set on a graphical session */
assert_se(bus_call_method(bus, &session, "SetType", NULL, NULL, "s", "tty") >= 0);
sd_bus_error_free(&error);
assert_se(bus_call_method(bus, &session, "SetDisplay", &error, NULL, "s", ":0") < 0);
assert_se(sd_bus_error_has_name(&error, SD_BUS_ERROR_NOT_SUPPORTED));
assert_se(bus_call_method(bus, &session, "SetType", NULL, NULL, "s", "x11") >= 0);
/* Non-empty display can be set */
assert_se(bus_call_method(bus, &session, "SetDisplay", NULL, NULL, "s", ":0") >= 0);
display = mfree(display);
assert_se(bus_get_property_string(bus, &session, "Display", NULL, &display) >= 0);
assert_se(streq(display, ":0"));
/* Empty display can be set too */
assert_se(bus_call_method(bus, &session, "SetDisplay", NULL, NULL, "s", "") >= 0);
display = mfree(display);
assert_se(bus_get_property_string(bus, &session, "Display", NULL, &display) >= 0);
assert_se(isempty(display));
}
static int intro(void) {
if (saved_argc <= 1)
return EXIT_FAILURE;