1#! /bin/sh
2
3#  Copyright (c) 2012 FUJITSU LIMITED
4#
5#  This program is free software;  you can redistribute it and/or modify
6#  it under the terms of the GNU General Public License as published by
7#  the Free Software Foundation; either version 2 of the License, or
8#  (at your option) any later version.
9#
10#  This program is distributed in the hope that it will be useful,
11#  but WITHOUT ANY WARRANTY;  without even the implied warranty of
12#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
13#  the GNU General Public License for more details.
14#
15#  You should have received a copy of the GNU General Public License
16#  along with this program;  if not, write to the Free Software
17#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18#
19# Description:  Test override_homedir in the configuration file.
20# Author:       Peng Haitao <penght@cn.fujitsu.com>
21# History:      2012/02/17 - Created.
22#
23
24. ./sssd-lib.sh || exit 1
25
26sssd_case1()
27{
28	export TST_COUNT=1
29
30	tst_resm TINFO "test override_homedir with absolute path in [nss]"
31
32	# Create the configuration file specific to this test case.
33	make_config_file
34	sed -i -e "/\[nss\]/ a\override_homedir = $LTPTMP" $CONFIG_FILE
35	sleep 1
36
37	getent passwd $username@LOCAL | grep "$LTPTMP" >/dev/null 2>&1
38	if [ $? -eq 0 ]; then
39		tst_resm TFAIL "sssd: user home dir should be not $LTPTMP."
40		: $(( TFAILCNT += 1 ))
41		return $TFAILCNT
42	fi
43
44	restart_sssd_daemon
45
46	getent passwd $username@LOCAL | grep "$LTPTMP" >/dev/null 2>&1
47	if [ $? -eq 0 ]; then
48		tst_resm TPASS "sssd: user home dir is $LTPTMP."
49	else
50		tst_resm TFAIL "sssd: user home dir should be $LTPTMP."
51		: $(( TFAILCNT += 1 ))
52		return $TFAILCNT
53	fi
54
55	return 0
56}
57
58sssd_case2()
59{
60	export TST_COUNT=2
61
62	tst_resm TINFO "test override_homedir with template in [domain/LOCAL]"
63
64	# Create the configuration file specific to this test case.
65	make_config_file
66	sed -i -e "/\[domain\/LOCAL\]/ a\override_homedir = $LTPTMP/%u_%U@%d" \
67		   $CONFIG_FILE
68	sleep 1
69
70	uid=`id -u $username`
71	home_dir="$LTPTMP/${username}_$uid@LOCAL"
72	getent passwd $username@LOCAL | grep "$home_dir" >/dev/null 2>&1
73	if [ $? -eq 0 ]; then
74		tst_resm TFAIL "sssd: user home dir should be not $home_dir."
75		: $(( TFAILCNT += 1 ))
76		return $TFAILCNT
77	fi
78
79	restart_sssd_daemon
80
81	getent passwd $username@LOCAL | grep "$home_dir" >/dev/null 2>&1
82	if [ $? -eq 0 ]; then
83		tst_resm TPASS "sssd: user home dir is $home_dir."
84	else
85		tst_resm TFAIL "sssd: user home dir should be $home_dir."
86		: $(( TFAILCNT += 1 ))
87		return $TFAILCNT
88	fi
89
90	return 0
91}
92
93sssd_case3()
94{
95	export TST_COUNT=3
96
97	tst_resm TINFO "test override_homedir with absolute path in [nss]"
98
99	# Create the configuration file specific to this test case.
100	make_config_file
101	sed -i -e "/\[nss\]/ a\override_homedir = $LTPTMP/%f" $CONFIG_FILE
102	sleep 1
103
104	home_dir="$LTPTMP/$username@LOCAL"
105	getent passwd $username@LOCAL | grep "$home_dir" >/dev/null 2>&1
106	if [ $? -eq 0 ]; then
107		tst_resm TFAIL "sssd: user home dir should be not $home_dir."
108		: $(( TFAILCNT += 1 ))
109		return $TFAILCNT
110	fi
111
112	restart_sssd_daemon
113
114	getent passwd $username@LOCAL | grep "$home_dir" >/dev/null 2>&1
115	if [ $? -eq 0 ]; then
116		tst_resm TPASS "sssd: user home dir is $home_dir."
117	else
118		tst_resm TFAIL "sssd: user home dir should be $home_dir."
119		: $(( TFAILCNT += 1 ))
120		return $TFAILCNT
121	fi
122
123	return 0
124}
125
126export TST_TOTAL=3
127export TCID=sssd01
128
129TFAILCNT=0
130username="sssd_test_user"
131
132make_config_file
133# make sure config file is OK
134sleep 1
135restart_sssd_daemon
136sss_useradd $username
137
138for i in $(seq 1 $TST_TOTAL); do
139	sssd_case$i
140done
141
142sss_userdel $username
143cleanup ${TFAILCNT:=0}
144