diff options
-rw-r--r-- | testsuite/nsswitch/login.exp | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/testsuite/nsswitch/login.exp b/testsuite/nsswitch/login.exp new file mode 100644 index 0000000000..c2bb0e5a40 --- /dev/null +++ b/testsuite/nsswitch/login.exp @@ -0,0 +1,102 @@ +# +# @(#) Test logins using pam_winbind.so module using telnet +# + +load_lib util-defs.exp +load_lib nsswitch-config.exp + +# +# @(#) Test user can login +# + +spawn telnet localhost + +set test_desc "telnet localhost (login)" + +expect { + "login:" { } + timeout { fail "timed out in $test_desc"; return } + eof { fail "end of file in $test_desc"; return } +} + +send "$domain/$USER\r" + +set test_desc "telnet localhost (password)" + +expect { + "Password:" { } + timeout { fail "timed out in $test_desc"; return } + eof { fail "end of file in $test_desc"; return } +} + +send "$PASSWORD\r" + +expect { + "$ " { } + "Login incorrect" { fail "login incorrect"; return } + timeout { fail "timed out in $test_desc"; return } + eof { fail "end of file in $test_desc"; return } +} + +pass "login $domain/$USER" + +# +# @(#) Check supplementary group membership +# + +set test_desc "supplementary groups" + +# Get list of groups + +send "id -G\r" + +expect { + -re "((\[0-9]+ )*\[0-9]+\r)" { exp_continue; } + "$ " { } + timeout { fail "timed out in $test_desc"; return } + eof { fail "end of file in $test_desc"; return } +} + +set groups $expect_out(1,string) +set wb_groups [util_start "bin/wbinfo" "-r $domain/$USER"] + +verbose "id groups are $groups" +verbose "wbinfo groups are $wb_groups" + +# Check all groups from id are in wbinfo and vice-versa + +set failed 0 + +foreach { group } $groups { + set got_group 0 + foreach { wb_group } $wb_groups { + if { $wb_group == $group } { + set got_group 1 + break + } + } + + if { !$got_group } { + fail "group $group not in output of wbinfo -r" + set failed 1 + } +} + +foreach { wb_group } $wb_groups { + set got_group 0 + foreach { group } $groups { + if { $group == $wb_group } { + set got_group 1 + break + } + } + + if { !$got_group } { + fail "group $group not in output of id -G" + set failed 1 + } +} + +if { !$failed } { + pass "id/wbinfo groups match" +} |