~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to testsuite/nsswitch/envvar.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 operation of WINBINDD_DOMAIN environment variable
 
3
#
 
4
 
 
5
load_lib "util-defs.exp"
 
6
load_lib "$srcdir/lib/nsswitch-config.exp"
 
7
 
 
8
#
 
9
#   @(#) Test that there is at least one domain user and domain group
 
10
#   @(#) in the output of getent passwd and getent group.
 
11
#
 
12
 
 
13
# Get list of users and groups
 
14
 
 
15
set user_list [util_start "getent passwd"]
 
16
set group_list [util_start "getent group"]
 
17
 
 
18
verbose "user list is:\n$user_list"
 
19
verbose "group list is:\n$group_list"
 
20
 
 
21
# Check for domain users
 
22
 
 
23
set no_dom 0
 
24
 
 
25
if { ![regexp "$domain/" $user_list] } {
 
26
    fail "no domain users in getent"
 
27
    set no_dom 1
 
28
}
 
29
 
 
30
# Check for domain groups
 
31
 
 
32
if { ![regexp "$domain/" $group_list] } {
 
33
    fail "no domain groups in getent group"
 
34
    set no_dom 1
 
35
}
 
36
 
 
37
if { $no_dom } {
 
38
    return
 
39
}
 
40
 
 
41
#
 
42
#   @(#) Check for "leakage" between different domains using the
 
43
#   @(#) WINBINDD_DOMAIN environment variable.
 
44
#
 
45
 
 
46
verbose "Domain is $domain"
 
47
 
 
48
set output [util_start "bin/wbinfo" "-m"]
 
49
verbose "Trusted domains are $output"
 
50
set trusted_domain_list [split $output "\n"]
 
51
 
 
52
# Test simple inclusion by setting $WINBINDD_DOMAIN to each trusted domain
 
53
# in turn and checking there are no users/groups from other domains in the
 
54
# output of getent.
 
55
 
 
56
set domain_list $trusted_domain_list
 
57
lappend domain_list $domain
 
58
 
 
59
foreach { the_domain } $domain_list {
 
60
 
 
61
    set env(WINBINDD_DOMAIN) $the_domain
 
62
 
 
63
    set user_out [util_start "getent passwd"]
 
64
    set group_out [util_start "getent group"]
 
65
 
 
66
    verbose "users in $the_domain:\n$user_out\n"
 
67
    verbose "groups in $the_domain:\n$group_out\n"
 
68
 
 
69
    # Users
 
70
 
 
71
    set test_desc "users in WINBINDD_DOMAIN $the_domain"
 
72
    set failed 0
 
73
 
 
74
    foreach { user } [split $user_out "\n"] {
 
75
        set user_name [lindex [split $user ":"] 0]
 
76
        if { [regexp "/" $user_name] && ![regexp $the_domain $user_name]} {
 
77
            set failed 1
 
78
        }
 
79
    }
 
80
    
 
81
    if { $failed } {
 
82
        fail $test_desc
 
83
    } else {
 
84
        pass $test_desc
 
85
    }
 
86
 
 
87
    # Groups
 
88
 
 
89
    set test_desc "groups in WINBINDD_DOMAIN $the_domain"
 
90
    set failed 0
 
91
    
 
92
    foreach { group } [split $group_out "\n"] {
 
93
        set group_name [lindex [split $group ":"] 0]
 
94
        if { [regexp "/" $group_name] && ![regexp $the_domain $group_name]} {
 
95
            set failed 1
 
96
        }
 
97
    }
 
98
 
 
99
    if { $failed } {
 
100
        fail $test_desc
 
101
    } else {
 
102
        pass $test_desc
 
103
    }
 
104
}
 
105
 
 
106
#
 
107
#   @(#) Test inclusion of a dummy domain doesn't generate users/groups
 
108
#   @(#) from that domain.
 
109
#
 
110
 
 
111
set env(WINBINDD_DOMAIN) "asmithee"
 
112
set user_out [util_start "getent passwd"]
 
113
set group_out [util_start "getent group"]
 
114
 
 
115
# Users
 
116
 
 
117
set test_desc "users in different WINBINDD_DOMAIN"
 
118
if { [regexp $domain $user_out] } {
 
119
    fail $test_desc
 
120
} else {
 
121
    pass $test_desc
 
122
}
 
123
 
 
124
# Groups
 
125
 
 
126
set test_desc "groups in different WINBINDD_DOMAIN"
 
127
if { [regexp $domain $group_out] } {
 
128
    fail $test_desc
 
129
} else {
 
130
    pass $test_desc
 
131
}
 
132
 
 
133
#
 
134
#   @(#) Test comma separated inclusion of dummy domain doesn't generate
 
135
#   @(#) users/groups in the dummy domain.
 
136
#
 
137
 
 
138
foreach { the_domain } $domain_list {
 
139
    set env(WINBINDD_DOMAIN) "$the_domain,asmithee"
 
140
    set user_out [util_start "getent passwd"]
 
141
    set group_out [util_start "getent group"]
 
142
 
 
143
    verbose "users in $the_domain:\n$user_out\n"
 
144
    verbose "groups in $the_domain:\n$group_out\n"
 
145
 
 
146
    # Users
 
147
 
 
148
    set test_desc "users in comma separated WINBINDD_DOMAIN $the_domain"
 
149
    set failed 0
 
150
 
 
151
    foreach { user } [split $user_out "\n"] {
 
152
        set user_name [lindex [split $user ":"] 0]
 
153
        if { [regexp "/" $user_name] && ![regexp $the_domain $user_name]} {
 
154
            set failed 1
 
155
        }
 
156
    }
 
157
 
 
158
    if { $failed } {
 
159
        fail $test_desc
 
160
    } else {
 
161
        pass $test_desc
 
162
    }
 
163
 
 
164
    # Groups
 
165
 
 
166
    set test_desc "groups in comma separated WINBINDD_DOMAIN $the_domain"
 
167
    set failed 0
 
168
    
 
169
    foreach { group } [split $group_out "\n"] {
 
170
        set group_name [lindex [split $group ":"] 0]
 
171
        if { [regexp "/" $group_name] && ![regexp $the_domain $group_name]} {
 
172
            set failed 1
 
173
        }
 
174
    }
 
175
    
 
176
    if { $failed } {
 
177
        fail $test_desc
 
178
    } else {
 
179
        pass $test_desc
 
180
    }
 
181
}
 
182
 
 
183
#
 
184
#   @(#) Test two comma separated dummy domains do not generate any domain
 
185
#   @(#) users or groups.
 
186
#
 
187
 
 
188
foreach { the_domain } $domain_list {
 
189
 
 
190
    set env(WINBINDD_DOMAIN) "moose,asmithee"
 
191
    set user_out [util_start "getent passwd"]
 
192
    set group_out [util_start "getent group"]
 
193
 
 
194
    verbose "users in $the_domain:\n$user_out\n"
 
195
    verbose "groups in $the_domain:\n$group_out\n"
 
196
 
 
197
    # Users
 
198
 
 
199
    set test_desc "users in comma separated invalid WINBINDD_DOMAIN"
 
200
    if { [regexp $the_domain $user_out] } {
 
201
        fail $test_desc
 
202
    } else {
 
203
        pass $test_desc
 
204
    }
 
205
 
 
206
    # Groups
 
207
    
 
208
    set test_desc "groups in comma separated invalid WINBINDD_DOMAIN"
 
209
    if { [regexp $the_domain $group_out] } {
 
210
        fail $test_desc
 
211
    } else {
 
212
        pass $test_desc
 
213
    }
 
214
}
 
215
 
 
216
set env(WINBINDD_DOMAIN) ""
 
217
 
 
218
#
 
219
#   @(#) Test _NO_WINBINDD doesn't return any domain users or groups
 
220
#
 
221
 
 
222
set env(_NO_WINBINDD) "1"
 
223
set user_out [util_start "getent passwd"]
 
224
set group_out [util_start "getent group"]
 
225
 
 
226
verbose "users with _NO_WINBINDD:\n$user_out\n"
 
227
verbose "groups with _NO_WINBINDD:\n$group_out\n"
 
228
 
 
229
foreach { the_domain } $domain_list {
 
230
 
 
231
    # Users
 
232
 
 
233
    set test_desc "users found with _NO_WINBINDD environment variable set"
 
234
    if { [regexp $the_domain $user_out] } {
 
235
        fail $test_desc
 
236
    } else {
 
237
        pass $test_desc
 
238
    }
 
239
 
 
240
    # Groups
 
241
    
 
242
    set test_desc "groups found with _NO_WINBINDD environment variable set"
 
243
    if { [regexp $the_domain $group_out] } {
 
244
        fail $test_desc
 
245
    } else {
 
246
        pass $test_desc
 
247
    }
 
248
}
 
249
 
 
250
# Unset _NO_WINBINDD and make sure everything still works
 
251
 
 
252
unset env(_NO_WINBINDD)
 
253
 
 
254
set user_out [util_start "getent passwd"]
 
255
set group_out [util_start "getent group"]
 
256
 
 
257
verbose "users with _NO_WINBINDD unset:\n$user_out\n"
 
258
verbose "groups with _NO_WINBINDD unset:\n$group_out\n"
 
259
 
 
260
# Users
 
261
 
 
262
set test_desc "no users found with _NO_WINBINDD environment variable set"
 
263
if { $user_out != $user_list } {
 
264
    fail $test_desc
 
265
} else {
 
266
    pass $test_desc
 
267
}
 
268
 
 
269
# Groups
 
270
 
 
271
set test_desc "no groups found with _NO_WINBINDD environment variable set"
 
272
if { $group_out != $group_list } {
 
273
    fail $test_desc
 
274
} else {
 
275
    pass $test_desc
 
276
}
 
277
 
 
278
# Make sure we unset the environment vars so we don't cause subsequent tests
 
279
# any grief.
 
280
 
 
281
catch { unset env(WINBINDD_DOMAIN) } tmp
 
282
catch { unset env(_NO_WINBINDD) } tmp