-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtest.bats
executable file
Β·118 lines (98 loc) Β· 3.11 KB
/
test.bats
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#!/usr/bin/env bats
container() {
docker run --entrypoint=autouseradd --rm "$@"
}
@test "invalid arguments" {
run container autouseradd --foo
[[ "$status" -eq 1 ]]
[[ "$output" = "autouseradd: unrecognized option '--foo'" ]]
}
@test "version" {
container autouseradd -v | grep -E "^autouseradd [0-9]+\.[0-9]+\.[0-9]+$"
container autouseradd --version | grep -E "^autouseradd [0-9]+\.[0-9]+\.[0-9]+$"
}
@test "prevent root" {
run container autouseradd newuser
[[ "$status" -eq 1 ]]
[[ "$output" = "autouseradd: running as root is not permitted" ]]
}
@test "new uid/gid" {
run container -u 501:502 autouseradd id
[[ "$status" -eq 0 ]]
[[ "$output" = "uid=501(auto) gid=502(auto) groups=502(auto)" ]]
}
@test "new uid/gid with custom names" {
run container -u 504:503 autouseradd -u a -g b id
[[ "$status" -eq 0 ]]
[[ "$output" = "uid=504(a) gid=503(b) groups=503(b)" ]]
}
@test "default shell" {
run container -i -u 1001:1001 autouseradd <<< 'echo $BASH'
[[ "$status" -eq 0 ]]
[[ "$output" = "/bin/bash" ]]
}
@test "custom shell" {
run container -i -u 1000:1001 autouseradd -s /bin/sh <<< 'echo $0'
[[ "$status" -eq 0 ]]
[[ "$output" = "/bin/sh" ]]
}
@test "chdir" {
run container -u 501:502 autouseradd -C /home/auto pwd
[[ "$status" -eq 0 ]]
[[ "$output" = "/home/auto" ]]
}
@test "--no-create-home" {
run container -u 501:502 autouseradd --no-create-home ls -l /home
[[ "$status" -eq 0 ]]
[[ "$output" = "total 0" ]]
}
@test "home directory permissions" {
run container -u 501:502 autouseradd sh -c 'stat -c "%A %n" $HOME'
[[ "$status" -eq 0 ]]
[[ "$output" = "drwxr-xr-x /home/auto" ]]
}
@test "home directory exists" {
run container --volume=foo:/home/auto -u 501:502 autouseradd true
[[ "$status" -eq 0 ]]
[[ "$output" = *"warning: the home directory already exists"* ]]
}
@test "home directory exists with --no-create-home" {
run container --volume=foo:/home/auto -u 501:502 autouseradd --no-create-home true
[[ "$status" -eq 0 ]]
[[ -z "$output" ]]
}
@test "env propagates" {
run container -u 501:502 -e FOO=bar autouseradd sh -c 'echo $FOO'
[[ "$status" -eq 0 ]]
[[ "$output" = "bar" ]]
}
@test "env overrides" {
run container -u 501:502 -e FOO=outside autouseradd -e FOO=inside1 -e FOO=inside2 sh -c 'echo $FOO'
[[ "$status" -eq 0 ]]
[[ "$output" = "inside2" ]]
}
@test "env unset" {
run container -u 501:502 -e FOO=outside autouseradd -e FOO sh -uc 'echo $FOO'
[[ "$status" -eq 2 ]]
[[ "$output" = "sh: 1: FOO: parameter not set" ]]
}
@test "tmpdir propagates" {
run container -u 501:502 -e TMPDIR=/foo autouseradd sh -c 'echo $TMPDIR'
[[ "$status" -eq 0 ]]
[[ "$output" = "/foo" ]]
}
@test "tmpdir overrides" {
run container -u 501:502 -e TMPDIR=/outside autouseradd -e TMPDIR=/inside sh -c 'echo $TMPDIR'
[[ "$status" -eq 0 ]]
[[ "$output" = "/inside" ]]
}
@test "duplicate gid" {
run container -u 501:1 autouseradd
[[ "$status" -eq 1 ]]
[[ "${lines[0]}" = "groupadd: GID '1' already exists" ]]
}
@test "duplicate uid" {
run container -u 1:501 autouseradd
[[ "$status" -eq 1 ]]
[[ "${lines[0]}" = "useradd: UID 1 is not unique" ]]
}