X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=src%2Flogin%2Ftest-login.c;h=2ab083bb71960b447acda01b082fdd3a67fb72ae;hb=bf34ab149f3038686bc75e1592179abac1700322;hp=228ddb293381eed43d875a0787d90862e9aceee2;hpb=e9e506ed436859048f6efc3b5962c6809f1a592a;p=elogind.git diff --git a/src/login/test-login.c b/src/login/test-login.c index 228ddb293..2ab083bb7 100644 --- a/src/login/test-login.c +++ b/src/login/test-login.c @@ -28,9 +28,11 @@ #include "strv.h" static void test_login(void) { + _cleanup_close_pipe_ int pair[2] = { -1, -1 }; + _cleanup_free_ char *pp = NULL, *qq = NULL; int r, k; uid_t u, u2; - char *seat, *type, *class, *display; + char *seat, *type, *class, *display, *remote_user, *remote_host; char *session; char *state; char *session2; @@ -39,7 +41,7 @@ static void test_login(void) { uid_t *uids; unsigned n; struct pollfd pollfd; - sd_login_monitor *m; + sd_login_monitor *m = NULL; assert_se(sd_pid_get_session(0, &session) == 0); printf("session = %s\n", session); @@ -47,6 +49,11 @@ static void test_login(void) { assert_se(sd_pid_get_owner_uid(0, &u2) == 0); printf("user = %lu\n", (unsigned long) u2); + assert_se(socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == 0); + sd_peer_get_session(pair[0], &pp); + sd_peer_get_session(pair[1], &qq); + assert_se(streq_ptr(pp, qq)); + r = sd_uid_get_sessions(u2, false, &sessions); assert_se(r >= 0); assert_se(r == (int) strv_length(sessions)); @@ -71,6 +78,10 @@ static void test_login(void) { assert_se(r >= 0); printf("active = %s\n", yes_no(r)); + r = sd_session_is_remote(session); + assert_se(r >= 0); + printf("remote = %s\n", yes_no(r)); + r = sd_session_get_state(session, &state); assert_se(r >= 0); printf("state = %s\n", state); @@ -92,6 +103,14 @@ static void test_login(void) { printf("display = %s\n", display); free(display); + assert_se(sd_session_get_remote_user(session, &remote_user) >= 0); + printf("remote_user = %s\n", remote_user); + free(remote_user); + + assert_se(sd_session_get_remote_host(session, &remote_host) >= 0); + printf("remote_host = %s\n", remote_host); + free(remote_host); + assert_se(sd_session_get_seat(session, &seat) >= 0); printf("seat = %s\n", seat);