Skip to content

Commit 1b7a848

Browse files
committed
Refactor shared data tests so they don't require root.
We now specifically test the use cases of writing data between greeters and sessions. The new tests do not check the directory is removed when a user is removed (it's done in the background so we can't reliably be sure when it will complete). The new tests do not check the ownership of the directories.
1 parent a29bfc7 commit 1b7a848

17 files changed

+322
-155
lines changed

tests/Makefile.am

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,10 @@ TESTS = \
110110
test-script-hook-fail-display-setup \
111111
test-script-hook-fail-greeter-setup \
112112
test-script-hook-fail-session-setup \
113-
test-shared-data-dirs \
114-
test-shared-data-dirs-autologin \
113+
test-shared-data-greeter-to-session \
114+
test-shared-data-session-to-greeter \
115+
test-shared-data-session-to-greeter-autologin \
116+
test-shared-data-invalid-user \
115117
test-upstart-autologin \
116118
test-upstart-login \
117119
test-dbus \
@@ -408,8 +410,10 @@ EXTRA_DIST = \
408410
scripts/plymouth-inactive-vt.conf \
409411
scripts/plymouth-no-seat.conf \
410412
scripts/restart-authentication.conf \
411-
scripts/shared-data-dirs.conf \
412-
scripts/shared-data-dirs-autologin.conf \
413+
scripts/shared-data-greeter-to-session.conf \
414+
scripts/shared-data-invalid-user.conf \
415+
scripts/shared-data-session-to-greeter.conf \
416+
scripts/shared-data-session-to-greeter-autologin.conf \
413417
scripts/script-hooks.conf \
414418
scripts/script-hook-fail-display-setup.conf \
415419
scripts/script-hook-fail-greeter-setup.conf \

tests/scripts/shared-data-dirs-autologin.conf

Lines changed: 0 additions & 31 deletions
This file was deleted.

tests/scripts/shared-data-dirs.conf

Lines changed: 0 additions & 63 deletions
This file was deleted.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#
2+
# Make sure we can make a shared data directory to write from the greeter to the session
3+
#
4+
5+
#?RUNNER DAEMON-START
6+
7+
# X server starts
8+
#?XSERVER-0 START VT=7 SEAT=seat0
9+
10+
# Daemon connects when X server is ready
11+
#?*XSERVER-0 INDICATE-READY
12+
#?XSERVER-0 INDICATE-READY
13+
#?XSERVER-0 ACCEPT-CONNECT
14+
15+
# Greeter starts
16+
#?GREETER-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter
17+
#?XSERVER-0 ACCEPT-CONNECT
18+
#?GREETER-X-0 CONNECT-XSERVER
19+
#?GREETER-X-0 CONNECT-TO-DAEMON
20+
#?GREETER-X-0 CONNECTED-TO-DAEMON
21+
22+
# Check greeter can write to data directory
23+
#?*GREETER-X-0 WRITE-SHARED-DATA USERNAME=no-password1 DATA=HELLO
24+
#?GREETER-X-0 WRITE-SHARED-DATA RESULT=TRUE
25+
26+
# Log into account without a password
27+
#?*GREETER-X-0 AUTHENTICATE USERNAME=no-password1
28+
#?GREETER-X-0 AUTHENTICATION-COMPLETE USERNAME=no-password1 AUTHENTICATED=TRUE
29+
#?*GREETER-X-0 START-SESSION
30+
#?GREETER-X-0 TERMINATE SIGNAL=15
31+
32+
# Session starts
33+
#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/no-password1 DESKTOP_SESSION=default USER=no-password1
34+
#?XSERVER-0 ACCEPT-CONNECT
35+
#?SESSION-X-0 CONNECT-XSERVER
36+
37+
# Check session can read from shared data directory
38+
#?*SESSION-X-0 READ-SHARED-DATA
39+
#?SESSION-X-0 READ-SHARED-DATA DATA=HELLO
40+
41+
# Cleanup
42+
#?*STOP-DAEMON
43+
#?XSERVER-0 TERMINATE SIGNAL=15
44+
#?SESSION-X-0 TERMINATE SIGNAL=15
45+
#?RUNNER DAEMON-EXIT STATUS=0
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#
2+
# Make sure we handle requesting an invalid user to share data with
3+
#
4+
5+
#?RUNNER DAEMON-START
6+
7+
# X server starts
8+
#?XSERVER-0 START VT=7 SEAT=seat0
9+
10+
# Daemon connects when X server is ready
11+
#?*XSERVER-0 INDICATE-READY
12+
#?XSERVER-0 INDICATE-READY
13+
#?XSERVER-0 ACCEPT-CONNECT
14+
15+
# Greeter starts
16+
#?GREETER-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter
17+
#?XSERVER-0 ACCEPT-CONNECT
18+
#?GREETER-X-0 CONNECT-XSERVER
19+
#?GREETER-X-0 CONNECT-TO-DAEMON
20+
#?GREETER-X-0 CONNECTED-TO-DAEMON
21+
22+
# Try and write data to an invalid user
23+
#?*GREETER-X-0 WRITE-SHARED-DATA USERNAME=invalid DATA=HELLO
24+
#?GREETER-X-0 WRITE-SHARED-DATA ERROR=NO_SHARED_DIR
25+
26+
# Cleanup
27+
#?*STOP-DAEMON
28+
#?XSERVER-0 TERMINATE SIGNAL=15
29+
#?GREETER-X-0 TERMINATE SIGNAL=15
30+
#?RUNNER DAEMON-EXIT STATUS=0
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
#
2+
# Make sure a shared data directory is created on autologin and can be written back to the greeter
3+
#
4+
5+
[SeatDefaults]
6+
autologin-user=have-password1
7+
8+
#?RUNNER DAEMON-START
9+
10+
# X server starts
11+
#?XSERVER-0 START VT=7 SEAT=seat0
12+
13+
# Daemon connects when X server is ready
14+
#?*XSERVER-0 INDICATE-READY
15+
#?XSERVER-0 INDICATE-READY
16+
#?XSERVER-0 ACCEPT-CONNECT
17+
18+
# Session starts
19+
#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/have-password1 DESKTOP_SESSION=default USER=have-password1
20+
#?XSERVER-0 ACCEPT-CONNECT
21+
#?SESSION-X-0 CONNECT-XSERVER
22+
23+
# Check session can write to data directory
24+
#?*SESSION-X-0 WRITE-SHARED-DATA DATA=HELLO
25+
#?SESSION-X-0 WRITE-SHARED-DATA RESULT=TRUE
26+
27+
# Logout session
28+
#?*SESSION-X-0 LOGOUT
29+
30+
# X server stops
31+
#?XSERVER-0 TERMINATE SIGNAL=15
32+
33+
# X server starts
34+
#?XSERVER-0 START VT=7 SEAT=seat0
35+
36+
# Daemon connects when X server is ready
37+
#?*XSERVER-0 INDICATE-READY
38+
#?XSERVER-0 INDICATE-READY
39+
#?XSERVER-0 ACCEPT-CONNECT
40+
41+
# Greeter starts
42+
#?GREETER-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter
43+
#?XSERVER-0 ACCEPT-CONNECT
44+
#?GREETER-X-0 CONNECT-XSERVER
45+
#?GREETER-X-0 CONNECT-TO-DAEMON
46+
#?GREETER-X-0 CONNECTED-TO-DAEMON
47+
48+
# Check greeter can read from user
49+
#?*GREETER-X-0 READ-SHARED-DATA USERNAME=have-password1 DATA=HELLO
50+
#?GREETER-X-0 READ-SHARED-DATA DATA=HELLO
51+
52+
# Cleanup
53+
#?*STOP-DAEMON
54+
#?XSERVER-0 TERMINATE SIGNAL=15
55+
#?GREETER-X-0 TERMINATE SIGNAL=15
56+
#?RUNNER DAEMON-EXIT STATUS=0
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#
2+
# Make sure a shared data directory is created on login and can be written back to the greeter
3+
#
4+
5+
#?RUNNER DAEMON-START
6+
7+
# X server starts
8+
#?XSERVER-0 START VT=7 SEAT=seat0
9+
10+
# Daemon connects when X server is ready
11+
#?*XSERVER-0 INDICATE-READY
12+
#?XSERVER-0 INDICATE-READY
13+
#?XSERVER-0 ACCEPT-CONNECT
14+
15+
# Greeter starts
16+
#?GREETER-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter
17+
#?XSERVER-0 ACCEPT-CONNECT
18+
#?GREETER-X-0 CONNECT-XSERVER
19+
#?GREETER-X-0 CONNECT-TO-DAEMON
20+
#?GREETER-X-0 CONNECTED-TO-DAEMON
21+
22+
# Log into account without a password
23+
#?*GREETER-X-0 AUTHENTICATE USERNAME=no-password1
24+
#?GREETER-X-0 AUTHENTICATION-COMPLETE USERNAME=no-password1 AUTHENTICATED=TRUE
25+
#?*GREETER-X-0 START-SESSION
26+
#?GREETER-X-0 TERMINATE SIGNAL=15
27+
28+
# Session starts
29+
#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/no-password1 DESKTOP_SESSION=default USER=no-password1
30+
#?XSERVER-0 ACCEPT-CONNECT
31+
#?SESSION-X-0 CONNECT-XSERVER
32+
33+
# Check session can write to data directory
34+
#?*SESSION-X-0 WRITE-SHARED-DATA DATA=HELLO
35+
#?SESSION-X-0 WRITE-SHARED-DATA RESULT=TRUE
36+
37+
# Logout session
38+
#?*SESSION-X-0 LOGOUT
39+
40+
# X server stops
41+
#?XSERVER-0 TERMINATE SIGNAL=15
42+
43+
# X server starts
44+
#?XSERVER-0 START VT=7 SEAT=seat0
45+
46+
# Daemon connects when X server is ready
47+
#?*XSERVER-0 INDICATE-READY
48+
#?XSERVER-0 INDICATE-READY
49+
#?XSERVER-0 ACCEPT-CONNECT
50+
51+
# Greeter starts
52+
#?GREETER-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter
53+
#?XSERVER-0 ACCEPT-CONNECT
54+
#?GREETER-X-0 CONNECT-XSERVER
55+
#?GREETER-X-0 CONNECT-TO-DAEMON
56+
#?GREETER-X-0 CONNECTED-TO-DAEMON
57+
58+
# Check greeter can read from user
59+
#?*GREETER-X-0 READ-SHARED-DATA USERNAME=no-password1 DATA=HELLO
60+
#?GREETER-X-0 READ-SHARED-DATA DATA=HELLO
61+
62+
# Cleanup
63+
#?*STOP-DAEMON
64+
#?XSERVER-0 TERMINATE SIGNAL=15
65+
#?GREETER-X-0 TERMINATE SIGNAL=15
66+
#?RUNNER DAEMON-EXIT STATUS=0

tests/src/libsystem.c

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -454,17 +454,8 @@ mkdir (const char *pathname, mode_t mode)
454454
int
455455
chown (const char *pathname, uid_t owner, gid_t group)
456456
{
457-
int (*_chown) (const char *pathname, uid_t owner, gid_t group);
458-
gchar *new_path = NULL;
459-
int result;
460-
461-
_chown = (int (*)(const char *pathname, uid_t owner, gid_t group)) dlsym (RTLD_NEXT, "chown");
462-
463-
new_path = redirect_path (pathname);
464-
result = _chown (new_path, owner, group);
465-
g_free (new_path);
466-
467-
return result;
457+
/* Just fake it - we're not root */
458+
return 0;
468459
}
469460

470461
int

0 commit comments

Comments
 (0)