1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-22 13:34:15 +03:00
samba-mirror/testsuite/nsswitch/getent.exp
2001-05-09 04:59:49 +00:00

149 lines
3.1 KiB
Plaintext

#
# @(#) Test the getent command returns domain/local users and groups
#
load_lib util-defs.exp
load_lib compile.exp
load_lib $srcdir/lib/nsswitch-config.exp
#
# @(#) Test getent passwd returns domain users
#
set wbinfo_output [util_start "bin/wbinfo" "-u"]
set getent_output [util_start "getent" "passwd" ""]
if { ![regexp "$domain/" $getent_output] } {
fail "no domain users in getent passwd"
return
}
if { [regexp "Error" $wbinfo_output] } {
fail "wbinfo -u failed"
return
}
#
# @(#) Test each user in the output of wbinfo is also in the output of
# @(#) getent.
#
# Test wbinfo user names are in getent user names
foreach { user } [split $wbinfo_output "\n"] {
verbose "looking for $user"
set test_desc "getent passwd does not contain $user"
if { ![regexp "$user" $getent_output] } {
fail $test_desc
} else {
pass $test_desc
}
}
# Test getent user names are in wbinfo user names
foreach { user } [split $getent_output "\n"] {
set user_info [split $user ":"]
set username [lindex $user_info 0]
if { [regexp {^[^/]+/} $username] } {
set test_desc "wbinfo -u does not contain $username"
if { ![regexp "$username" $wbinfo_output] } {
fail $test_desc
} else {
pass $test_desc
}
} else {
verbose "ignoring non-domain user $username"
}
}
#
# @(#) Test each group in the output of wbinfo is also in the output of
# @(#) getent.
#
set wbinfo_output [util_start "bin/wbinfo" "-g"]
set getent_output [util_start "getent" "group" ""]
if { ![regexp "$domain/" $getent_output] } {
fail "no domain groups in getent passwd"
return
}
if { [regexp "Error" $wbinfo_output] } {
fail "wbinfo -g failed"
return
}
# Test wbinfo group names are in getent group names
foreach { group } [split $wbinfo_output "\n"] {
verbose "looking for $group"
set test_desc "getent group does not contain $group"
if { ![regexp "$group" $getent_output] } {
fail $test_desc
} else {
pass $test_desc
}
}
# Test getent group names are in wbinfo group names
foreach { group } [split $getent_output "\n"] {
set group_info [split $group ":"]
set groupname [lindex $group_info 0]
if { [regexp {^[^/]+/} $groupname] } {
set test_desc "wbinfo -g does not contain $groupname"
if { ![regexp "$groupname" $wbinfo_output] } {
fail $test_desc
} else {
pass $test_desc
}
} else {
verbose "ignoring non-domain group $groupname"
}
}
#
# @(#) Test out of order and repeat calls of pwent functions
# @(#) Test out of order and repeat calls of grent functions
#
set getent_tests [list \
{ "out of order pwent operations" "getent_pwent" } \
{ "out of order grent operations" "getent_grent" } \
]
# Compile and run each test
foreach { test } $getent_tests {
set test_desc [lindex $test 0]
set test_file [lindex $test 1]
simple_compile $test_file
set output [util_start "$srcdir/$subdir/$test_file" ]
if { [regexp "PASS" $output] } {
pass $test_desc
file delete "$srcdir/$subdir/$test_file" "$srcdir/$subdir/$test_file.o"
} else {
fail $test_desc
puts $output
}
}