1# 2# @(#) Test the getent command returns domain/local users and groups 3# 4 5load_lib util-defs.exp 6load_lib compile.exp 7load_lib $srcdir/lib/nsswitch-config.exp 8 9# 10# @(#) Test getent passwd returns domain users 11# 12 13set wbinfo_output [util_start "bin/wbinfo" "-u"] 14set getent_output [util_start "getent" "passwd" ""] 15 16if { ![regexp "$domain/" $getent_output] } { 17 fail "no domain users in getent passwd" 18 return 19} 20 21if { [regexp "Error" $wbinfo_output] } { 22 fail "wbinfo -u failed" 23 return 24} 25 26# 27# @(#) Test each user in the output of wbinfo is also in the output of 28# @(#) getent. 29# 30 31# Test wbinfo user names are in getent user names 32 33foreach { user } [split $wbinfo_output "\n"] { 34 35 verbose "looking for $user" 36 37 set test_desc "getent passwd does not contain $user" 38 39 if { ![regexp "$user" $getent_output] } { 40 fail $test_desc 41 } else { 42 pass $test_desc 43 } 44} 45 46# Test getent user names are in wbinfo user names 47 48foreach { user } [split $getent_output "\n"] { 49 50 set user_info [split $user ":"] 51 set username [lindex $user_info 0] 52 53 if { [regexp {^[^/]+/} $username] } { 54 55 set test_desc "wbinfo -u does not contain $username" 56 57 if { ![regexp "$username" $wbinfo_output] } { 58 fail $test_desc 59 } else { 60 pass $test_desc 61 } 62 } else { 63 verbose "ignoring non-domain user $username" 64 } 65} 66 67# 68# @(#) Test each group in the output of wbinfo is also in the output of 69# @(#) getent. 70# 71 72set wbinfo_output [util_start "bin/wbinfo" "-g"] 73set getent_output [util_start "getent" "group" ""] 74 75if { ![regexp "$domain/" $getent_output] } { 76 fail "no domain groups in getent passwd" 77 return 78} 79 80if { [regexp "Error" $wbinfo_output] } { 81 fail "wbinfo -g failed" 82 return 83} 84 85# Test wbinfo group names are in getent group names 86 87foreach { group } [split $wbinfo_output "\n"] { 88 89 verbose "looking for $group" 90 91 set test_desc "getent group does not contain $group" 92 93 if { ![regexp "$group" $getent_output] } { 94 fail $test_desc 95 } else { 96 pass $test_desc 97 } 98} 99 100# Test getent group names are in wbinfo group names 101 102foreach { group } [split $getent_output "\n"] { 103 104 set group_info [split $group ":"] 105 set groupname [lindex $group_info 0] 106 107 if { [regexp {^[^/]+/} $groupname] } { 108 109 set test_desc "wbinfo -g does not contain $groupname" 110 111 if { ![regexp "$groupname" $wbinfo_output] } { 112 fail $test_desc 113 } else { 114 pass $test_desc 115 } 116 } else { 117 verbose "ignoring non-domain group $groupname" 118 } 119} 120 121# 122# @(#) Test out of order and repeat calls of pwent functions 123# @(#) Test out of order and repeat calls of grent functions 124# 125 126set getent_tests [list \ 127 { "out of order pwent operations" "getent_pwent" } \ 128 { "out of order grent operations" "getent_grent" } \ 129 ] 130 131# Compile and run each test 132 133foreach { test } $getent_tests { 134 set test_desc [lindex $test 0] 135 set test_file [lindex $test 1] 136 137 simple_compile $test_file 138 set output [util_start "$srcdir/$subdir/$test_file" ] 139 140 if { [regexp "PASS" $output] } { 141 pass $test_desc 142 file delete "$srcdir/$subdir/$test_file" "$srcdir/$subdir/$test_file.o" 143 } else { 144 fail $test_desc 145 puts $output 146 } 147 148} 149