Blame SOURCES/0018-Add-a-test-for-session_info.patch

ad412c
From a77b09e5d77e5cf1d4fdd38d018ecf164cd01df9 Mon Sep 17 00:00:00 2001
ad412c
From: Frediano Ziglio <freddy77@gmail.com>
ad412c
Date: Tue, 20 Oct 2020 16:38:37 +0100
ad412c
Subject: [PATCH 10/10] Add a test for session_info
ad412c
ad412c
Test from Uri, integrated in test suite.
ad412c
ad412c
Signed-off-by: Uri Lublin <uril@redhat.com>
ad412c
Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
ad412c
---
ad412c
 Makefile.am               | 30 ++++++++++++++++++++
ad412c
 tests/test-session-info.c | 58 +++++++++++++++++++++++++++++++++++++++
ad412c
 2 files changed, 88 insertions(+)
ad412c
 create mode 100644 tests/test-session-info.c
ad412c
ad412c
diff --git a/Makefile.am b/Makefile.am
ad412c
index 575ba52..f4c65b4 100644
ad412c
--- a/Makefile.am
ad412c
+++ b/Makefile.am
ad412c
@@ -109,13 +109,43 @@ src_spice_vdagentd_SOURCES =			\
ad412c
 	src/vdagentd/virtio-port.h		\
ad412c
 	$(NULL)
ad412c
 
ad412c
+tests_test_session_info_CFLAGS =		\
ad412c
+	$(DBUS_CFLAGS)				\
ad412c
+	$(LIBSYSTEMD_DAEMON_CFLAGS)		\
ad412c
+	$(LIBSYSTEMD_LOGIN_CFLAGS)		\
ad412c
+	$(SPICE_CFLAGS)				\
ad412c
+	$(GIO2_CFLAGS)				\
ad412c
+	-I$(srcdir)/src				\
ad412c
+	-I$(srcdir)/src/vdagentd		\
ad412c
+	-DUDSCS_NO_SERVER			\
ad412c
+	$(NULL)
ad412c
+
ad412c
+tests_test_session_info_LDADD =			\
ad412c
+	$(DBUS_LIBS)				\
ad412c
+	$(LIBSYSTEMD_DAEMON_LIBS)		\
ad412c
+	$(LIBSYSTEMD_LOGIN_LIBS)		\
ad412c
+	$(SPICE_LIBS)				\
ad412c
+	$(GIO2_LIBS)				\
ad412c
+	$(NULL)
ad412c
+
ad412c
+tests_test_session_info_SOURCES =		\
ad412c
+	$(common_sources)			\
ad412c
+	src/vdagentd/session-info.h		\
ad412c
+	tests/test-session-info.c		\
ad412c
+	$(NULL)
ad412c
+
ad412c
+check_PROGRAMS += tests/test-session-info
ad412c
+
ad412c
 if HAVE_CONSOLE_KIT
ad412c
 src_spice_vdagentd_SOURCES += src/vdagentd/console-kit.c
ad412c
+tests_test_session_info_SOURCES += src/vdagentd/console-kit.c
ad412c
 else
ad412c
 if HAVE_LIBSYSTEMD_LOGIN
ad412c
 src_spice_vdagentd_SOURCES += src/vdagentd/systemd-login.c
ad412c
+tests_test_session_info_SOURCES += src/vdagentd/systemd-login.c
ad412c
 else
ad412c
 src_spice_vdagentd_SOURCES += src/vdagentd/dummy-session-info.c
ad412c
+tests_test_session_info_SOURCES += src/vdagentd/dummy-session-info.c
ad412c
 endif
ad412c
 endif
ad412c
 
ad412c
diff --git a/tests/test-session-info.c b/tests/test-session-info.c
ad412c
new file mode 100644
ad412c
index 0000000..dae3ec6
ad412c
--- /dev/null
ad412c
+++ b/tests/test-session-info.c
ad412c
@@ -0,0 +1,58 @@
ad412c
+/*  test-session-info.c  - test session info
ad412c
+
ad412c
+    Copyright 2020 Red Hat, Inc.
ad412c
+
ad412c
+    This program is free software: you can redistribute it and/or modify
ad412c
+    it under the terms of the GNU General Public License as published by
ad412c
+    the Free Software Foundation, either version 3 of the License, or
ad412c
+    (at your option) any later version.
ad412c
+
ad412c
+    This program is distributed in the hope that it will be useful,
ad412c
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
ad412c
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
ad412c
+    GNU General Public License for more details.
ad412c
+
ad412c
+    You should have received a copy of the GNU General Public License
ad412c
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
ad412c
+*/
ad412c
+#include <config.h>
ad412c
+
ad412c
+#undef NDEBUG
ad412c
+#include <assert.h>
ad412c
+#include <stdio.h>
ad412c
+#include <stdlib.h>
ad412c
+#include <unistd.h>
ad412c
+
ad412c
+#include "session-info.h"
ad412c
+
ad412c
+int main(int argc, char *argv[])
ad412c
+{
ad412c
+    int pid, uid, ck_uid;
ad412c
+
ad412c
+    pid = (int)getpid();
ad412c
+
ad412c
+    struct session_info *session_info = session_info_create(1);
ad412c
+    if (session_info == NULL) {
ad412c
+        return 1;
ad412c
+    }
ad412c
+
ad412c
+    char *session = session_info_session_for_pid(session_info, pid);
ad412c
+    if (session == NULL) {
ad412c
+        session_info_destroy(session_info);
ad412c
+        return 2;
ad412c
+    }
ad412c
+    ck_uid = session_info_uid_for_session(session_info, session);
ad412c
+
ad412c
+    free(session);
ad412c
+    session_info_destroy(session_info);
ad412c
+
ad412c
+    uid = getuid();
ad412c
+    printf("MAIN: uid is %d, ck_uid is %d\n", uid, ck_uid);
ad412c
+
ad412c
+    if (uid != ck_uid) {
ad412c
+        fprintf(stderr, "MAIN: uid (%d) does not match console-kit uid %d\n", uid, ck_uid);
ad412c
+        return 3;
ad412c
+    }
ad412c
+
ad412c
+    return 0;
ad412c
+}
ad412c
-- 
ad412c
2.28.0
ad412c