~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to testsuite/nsswitch/getent.exp

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# @(#) Test the getent command returns domain/local users and groups
 
3
#
 
4
 
 
5
load_lib util-defs.exp
 
6
load_lib compile.exp
 
7
load_lib $srcdir/lib/nsswitch-config.exp
 
8
 
 
9
#
 
10
#   @(#) Test getent passwd returns domain users
 
11
#
 
12
 
 
13
set wbinfo_output [util_start "bin/wbinfo" "-u"]
 
14
set getent_output [util_start "getent" "passwd" ""]
 
15
 
 
16
if { ![regexp "$domain/" $getent_output] } {
 
17
    fail "no domain users in getent passwd"
 
18
    return
 
19
}
 
20
 
 
21
if { [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
 
 
33
foreach { 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
 
 
48
foreach { 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
 
 
72
set wbinfo_output [util_start "bin/wbinfo" "-g"]
 
73
set getent_output [util_start "getent" "group" ""]
 
74
 
 
75
if { ![regexp "$domain/" $getent_output] } {
 
76
    fail "no domain groups in getent passwd"
 
77
    return
 
78
}
 
79
 
 
80
if { [regexp "Error" $wbinfo_output] } {
 
81
    fail "wbinfo -g failed"
 
82
    return
 
83
}
 
84
 
 
85
# Test wbinfo group names are in getent group names
 
86
 
 
87
foreach { 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
 
 
102
foreach { 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
 
 
126
set 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
 
 
133
foreach { 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
}