xref: /freebsd/libexec/nuageinit/tests/nuage.sh (revision 3e2a7a2cbeb272b891c6931f2ae54ee6e5ec2c7d)
150498135SJose Luis Duran#-
250498135SJose Luis Duran# Copyright (c) 2022 Baptiste Daroussin <bapt@FreeBSD.org>
350498135SJose Luis Duran#
450498135SJose Luis Duran# SPDX-License-Identifier: BSD-2-Clause
550498135SJose Luis Duran#
650498135SJose Luis Duran
7e72457c4SJose Luis Duranexport NUAGE_FAKE_ROOTDIR="$PWD"
8e72457c4SJose Luis Duran
9a42d6f76SBaptiste Daroussinatf_test_case sethostname
10a42d6f76SBaptiste Daroussinatf_test_case addsshkey
11a42d6f76SBaptiste Daroussinatf_test_case adduser
12fc34a246SBaptiste Daroussinatf_test_case adduser_passwd
13a42d6f76SBaptiste Daroussinatf_test_case addgroup
14a42d6f76SBaptiste Daroussin
1550498135SJose Luis Duransethostname_body()
1650498135SJose Luis Duran{
17a42d6f76SBaptiste Daroussin	atf_check /usr/libexec/flua $(atf_get_srcdir)/sethostname.lua
18a42d6f76SBaptiste Daroussin	if [ ! -f etc/rc.conf.d/hostname ]; then
19a42d6f76SBaptiste Daroussin		atf_fail "hostname not written"
20a42d6f76SBaptiste Daroussin	fi
21a42d6f76SBaptiste Daroussin	atf_check -o inline:"hostname=\"myhostname\"\n" cat etc/rc.conf.d/hostname
22a42d6f76SBaptiste Daroussin}
23a42d6f76SBaptiste Daroussin
2450498135SJose Luis Duranaddsshkey_body()
2550498135SJose Luis Duran{
26a42d6f76SBaptiste Daroussin	atf_check /usr/libexec/flua $(atf_get_srcdir)/addsshkey.lua
27a42d6f76SBaptiste Daroussin	if [ ! -f .ssh/authorized_keys ]; then
28a42d6f76SBaptiste Daroussin		atf_fail "ssh key not added"
29a42d6f76SBaptiste Daroussin	fi
308edd6c07SJose Luis Duran	atf_check -o inline:"40700\n" stat -f %p .ssh
318edd6c07SJose Luis Duran	atf_check -o inline:"100600\n" stat -f %p .ssh/authorized_keys
32a42d6f76SBaptiste Daroussin	atf_check -o inline:"mykey\n" cat .ssh/authorized_keys
33a42d6f76SBaptiste Daroussin	atf_check /usr/libexec/flua $(atf_get_srcdir)/addsshkey.lua
34a42d6f76SBaptiste Daroussin	atf_check -o inline:"mykey\nmykey\n" cat .ssh/authorized_keys
35a42d6f76SBaptiste Daroussin}
36a42d6f76SBaptiste Daroussin
37e72457c4SJose Luis Duranadduser_head()
38e72457c4SJose Luis Duran{
39e72457c4SJose Luis Duran	atf_set "require.user" root
40e72457c4SJose Luis Duran}
4150498135SJose Luis Duranadduser_body()
4250498135SJose Luis Duran{
43a42d6f76SBaptiste Daroussin	mkdir etc
44e72457c4SJose Luis Duran	printf "root:*:0:0::0:0:Charlie &:/root:/bin/sh\n" > etc/master.passwd
45a42d6f76SBaptiste Daroussin	pwd_mkdb -d etc etc/master.passwd
46a42d6f76SBaptiste Daroussin	printf "wheel:*:0:root\n" > etc/group
47945632caSJose Luis Duran	atf_check -e inline:"nuageinit: Argument should be a table\nnuageinit: Argument should be a table\n" /usr/libexec/flua $(atf_get_srcdir)/adduser.lua
48a42d6f76SBaptiste Daroussin	test -d home/impossible_username || atf_fail "home not created"
49a42d6f76SBaptiste Daroussin	atf_check -o inline:"impossible_username::1001:1001::0:0:impossible_username User:/home/impossible_username:/bin/sh\n" grep impossible_username etc/master.passwd
50a42d6f76SBaptiste Daroussin}
51a42d6f76SBaptiste Daroussin
52fc34a246SBaptiste Daroussinadduser_passwd_body()
53fc34a246SBaptiste Daroussin{
54fc34a246SBaptiste Daroussin	mkdir etc
55fc34a246SBaptiste Daroussin	printf "root:*:0:0::0:0:Charlie &:/root:/bin/sh\n" > etc/master.passwd
56fc34a246SBaptiste Daroussin	pwd_mkdb -d etc etc/master.passwd
57fc34a246SBaptiste Daroussin	printf "wheel:*:0:root\n" > etc/group
58fc34a246SBaptiste Daroussin	atf_check /usr/libexec/flua $(atf_get_srcdir)/adduser_passwd.lua
59fc34a246SBaptiste Daroussin	test -d home/foo || atf_fail "home not created"
60fc34a246SBaptiste Daroussin	passhash=`awk -F ':' '/^foo:/ {print $2}' etc/master.passwd`
61fc34a246SBaptiste Daroussin	atf_check -s exit:0 -o inline:$passhash \
62fc34a246SBaptiste Daroussin		$(atf_get_srcdir)/crypt $passhash "bar"
63*3e2a7a2cSBaptiste Daroussin	passhash=`awk -F ':' '/^foocrypted:/ {print $2}' etc/master.passwd`
64*3e2a7a2cSBaptiste Daroussin	atf_check -s exit:0 -o inline:$passhash \
65*3e2a7a2cSBaptiste Daroussin		$(atf_get_srcdir)/crypt $passhash "barcrypted"
66fc34a246SBaptiste Daroussin}
67fc34a246SBaptiste Daroussin
6850498135SJose Luis Duranaddgroup_body()
6950498135SJose Luis Duran{
70a42d6f76SBaptiste Daroussin	mkdir etc
71a42d6f76SBaptiste Daroussin	printf "wheel:*:0:root\n" > etc/group
72945632caSJose Luis Duran	atf_check -e inline:"nuageinit: Argument should be a table\nnuageinit: Argument should be a table\n" /usr/libexec/flua $(atf_get_srcdir)/addgroup.lua
73a42d6f76SBaptiste Daroussin	atf_check -o inline:"impossible_groupname:*:1001:\n" grep impossible_groupname etc/group
74a42d6f76SBaptiste Daroussin}
75a42d6f76SBaptiste Daroussin
7650498135SJose Luis Duranatf_init_test_cases()
7750498135SJose Luis Duran{
78a42d6f76SBaptiste Daroussin	atf_add_test_case sethostname
79a42d6f76SBaptiste Daroussin	atf_add_test_case addsshkey
80a42d6f76SBaptiste Daroussin	atf_add_test_case adduser
81fc34a246SBaptiste Daroussin	atf_add_test_case adduser_passwd
82a42d6f76SBaptiste Daroussin	atf_add_test_case addgroup
83a42d6f76SBaptiste Daroussin}
84