dbcheck: Add check and test for various invalid userParameters values
[samba.git] / testprogs / blackbox / dbcheck-oldrelease.sh
1 #!/bin/sh
2
3 if [ $# -lt 1 ]; then
4 cat <<EOF
5 Usage: dbcheck.sh PREFIX RELEASE
6 EOF
7 exit 1;
8 fi
9
10 PREFIX_ABS="$1"
11 RELEASE="$2"
12 shift 2
13
14 . `dirname $0`/subunit.sh
15
16 release_dir=`dirname $0`/../../source4/selftest/provisions/$RELEASE
17
18 ldbmodify="ldbmodify"
19 if [ -x "$BINDIR/ldbmodify" ]; then
20     ldbmodify="$BINDIR/ldbmodify"
21 fi
22
23 undump() {
24        if test -x $BINDIR/tdbrestore;
25        then
26         `dirname $0`/../../source4/selftest/provisions/undump.sh $release_dir $PREFIX_ABS/$RELEASE $BINDIR/tdbrestore
27        else
28         `dirname $0`/../../source4/selftest/provisions/undump.sh $release_dir $PREFIX_ABS/$RELEASE
29        fi
30 }
31
32 add_userparameters0() {
33        if [ x$RELEASE = x"release-4-1-0rc3" ]; then
34            $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb <<EOF
35 dn: cn=localdc,cn=domain controllers,dc=release-4-1-0rc3,dc=samba,dc=corp
36 changetype: modify
37 replace: userParameters
38 userParameters:: IAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAC
39  AAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAUAAQABoACAAB
40  AEMAdAB4AEMAZgBnAFAAcgBlAHMAZQBuAHQANTUxZTBiYjAYAAgAAQBDAHQAeABDAGYAZw
41  BGAGwAYQBnAHMAMQAwMGUwMDAxMBYACAABAEMAdAB4AEMAYQBsAGwAYgBhAGMAawAwMDAw
42  MDAwMBIACAABAEMAdAB4AFMAaABhAGQAbwB3ADAxMDAwMDAwKAAIAAEAQwB0AHgATQBhAH
43  gAQwBvAG4AbgBlAGMAdABpAG8AbgBUAGkAbQBlADAwMDAwMDAwLgAIAAEAQwB0AHgATQBh
44  AHgARABpAHMAYwBvAG4AbgBlAGMAdABpAG8AbgBUAGkAbQBlADAwMDAwMDAwHAAIAAEAQw
45  B0AHgATQBhAHgASQBkAGwAZQBUAGkAbQBlADAwMDAwMDAwIgAIAAEAQwB0AHgASwBlAHkA
46  YgBvAGEAcgBkAEwAYQB5AG8AdQB0ADAwMDAwMDAwKgACAAEAQwB0AHgATQBpAG4ARQBuAG
47  MAcgB5AHAAdABpAG8AbgBMAGUAdgBlAGwAMDAgAAIAAQBDAHQAeABXAG8AcgBrAEQAaQBy
48  AGUAYwB0AG8AcgB5ADAwIAACAAEAQwB0AHgATgBXAEwAbwBnAG8AbgBTAGUAcgB2AGUAcg
49  AwMBgAJAABAEMAdAB4AFcARgBIAG8AbQBlAEQAaQByADVjNWM3MzYxNzQ3NTcyNmU2NTVj
50  NzAyZTYyNjk2NDZmNmUwMCIABgABAEMAdAB4AFcARgBIAG8AbQBlAEQAaQByAEQAcgBpAH
51  YAZQA1MDNhMDAgADoAAQBDAHQAeABXAEYAUAByAG8AZgBpAGwAZQBQAGEAdABoADVjNWM3
52  MzYxNzQ3NTcyNmU2NTVjNzA3MjZmNjY2OTZjNjU3NDczNjU1YzcwMmU2MjY5NjQ2ZjZlMD
53  AiAAIAAQBDAHQAeABJAG4AaQB0AGkAYQBsAFAAcgBvAGcAcgBhAG0AMDAiAAIAAQBDAHQA
54  eABDAGEAbABsAGIAYQBjAGsATgB1AG0AYgBlAHIAMDA=
55 -
56 EOF
57        fi
58 }
59 add_userparameters1() {
60        if [ x$RELEASE = x"release-4-1-0rc3" ]; then
61            $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb <<EOF
62 dn: cn=administrator,cn=users,dc=release-4-1-0rc3,dc=samba,dc=corp
63 changetype: modify
64 replace: userParameters
65 userParameters: IAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAC
66  AAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAUAAQABoACAAB
67  AEMAdAB4AEMAZgBnAFAAcgBlAHMAZQBuAHQANTUxZTBiYjAYAAgAAQBDAHQAeABDAGYAZw
68  BGAGwAYQBnAHMAMQAwMGUwMDAxMBYACAABAEMAdAB4AEMAYQBsAGwAYgBhAGMAawAwMDAw
69  MDAwMBIACAABAEMAdAB4AFMAaABhAGQAbwB3ADAxMDAwMDAwKAAIAAEAQwB0AHgATQBhAH
70  gAQwBvAG4AbgBlAGMAdABpAG8AbgBUAGkAbQBlADAwMDAwMDAwLgAIAAEAQwB0AHgATQBh
71  AHgARABpAHMAYwBvAG4AbgBlAGMAdABpAG8AbgBUAGkAbQBlADAwMDAwMDAwHAAIAAEAQw
72  B0AHgATQBhAHgASQBkAGwAZQBUAGkAbQBlADAwMDAwMDAwIgAIAAEAQwB0AHgASwBlAHkA
73  YgBvAGEAcgBkAEwAYQB5AG8AdQB0ADAwMDAwMDAwKgACAAEAQwB0AHgATQBpAG4ARQBuAG
74  MAcgB5AHAAdABpAG8AbgBMAGUAdgBlAGwAMDAgAAIAAQBDAHQAeABXAG8AcgBrAEQAaQBy
75  AGUAYwB0AG8AcgB5ADAwIAACAAEAQwB0AHgATgBXAEwAbwBnAG8AbgBTAGUAcgB2AGUAcg
76  AwMBgAJAABAEMAdAB4AFcARgBIAG8AbQBlAEQAaQByADVjNWM3MzYxNzQ3NTcyNmU2NTVj
77  NzAyZTYyNjk2NDZmNmUwMCIABgABAEMAdAB4AFcARgBIAG8AbQBlAEQAaQByAEQAcgBpAH
78  YAZQA1MDNhMDAgADoAAQBDAHQAeABXAEYAUAByAG8AZgBpAGwAZQBQAGEAdABoADVjNWM3
79  MzYxNzQ3NTcyNmU2NTVjNzA3MjZmNjY2OTZjNjU3NDczNjU1YzcwMmU2MjY5NjQ2ZjZlMD
80  AiAAIAAQBDAHQAeABJAG4AaQB0AGkAYQBsAFAAcgBvAGcAcgBhAG0AMDAiAAIAAQBDAHQA
81  eABDAGEAbABsAGIAYQBjAGsATgB1AG0AYgBlAHIAMDA=
82 -
83 EOF
84        fi
85 }
86 add_userparameters2() {
87        if [ x$RELEASE = x"release-4-1-0rc3" ]; then
88            $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb <<EOF
89 dn: cn=krbtgt,cn=users,dc=release-4-1-0rc3,dc=samba,dc=corp
90 changetype: modify
91 replace: userParameters
92 userParameters:: Q3R4Q2ZnUHJlc2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
93  CAgUAsaCAFDdHhDZmdQcmVzZW5045S15pSx5oiw44GiIAIBQ3R4V0ZQcm9maWxlUGF0aOOAsBgCAU
94  N0eFdGSG9tZURpcuOAsCICAUN0eFdGSG9tZURpckRyaXZl44CwEggBQ3R4U2hhZG9344Sw44Cw44C
95  w44CwLggBQ3R4TWF4RGlzY29ubmVjdGlvblRpbWXjgaXjjLnjkLDjgLAoCAFDdHhNYXhDb25uZWN0
96  aW9uVGltZeOAtOOct+aIseOAsBwIAUN0eE1heElkbGVUaW1l44Gj45yy46Sw44CwIAIBQ3R4V29ya
97  0RpcmVjdG9yeeOAsBgIAUN0eENmZ0ZsYWdzMeOAsOOBpuOYsuOAuCICAUN0eEluaXRpYWxQcm9ncm
98  Ft44Cw
99 -
100 EOF
101        fi
102 }
103
104 add_userparameters3() {
105        if [ x$RELEASE = x"release-4-1-0rc3" ]; then
106            $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb <<EOF
107 dn: cn=guest,cn=users,dc=release-4-1-0rc3,dc=samba,dc=corp
108 changetype: modify
109 replace: userParameters
110 userParameters:: QwAAAHQAAAB4AAAAQwAAAGYAAABnAAAAUAAAAHIAAABlAAAAcwAAAGUAAABuA
111  AAAdAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAA
112  AgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACA
113  AAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAUAAAAAsAAAAaAAAACAAAAAEAAABDAAAAdAAA
114  AHgAAABDAAAAZgAAAGcAAABQAAAAcgAAAGUAAABzAAAAZQAAAG4AAAB0AAAANQA1ADEAZQAwAGIAY
115  gAwACAAAAACAAAAAQAAAEMAAAB0AAAAeAAAAFcAAABGAAAAUAAAAHIAAABvAAAAZgAAAGkAAABsAA
116  AAZQAAAFAAAABhAAAAdAAAAGgAAAAwADAAGAAAAAIAAAABAAAAQwAAAHQAAAB4AAAAVwAAAEYAAAB
117  IAAAAbwAAAG0AAABlAAAARAAAAGkAAAByAAAAMAAwACIAAAACAAAAAQAAAEMAAAB0AAAAeAAAAFcA
118  AABGAAAASAAAAG8AAABtAAAAZQAAAEQAAABpAAAAcgAAAEQAAAByAAAAaQAAAHYAAABlAAAAMAAwA
119  BIAAAAIAAAAAQAAAEMAAAB0AAAAeAAAAFMAAABoAAAAYQAAAGQAAABvAAAAdwAAADAAMQAwADAAMA
120  AwADAAMAAuAAAACAAAAAEAAABDAAAAdAAAAHgAAABNAAAAYQAAAHgAAABEAAAAaQAAAHMAAABjAAA
121  AbwAAAG4AAABuAAAAZQAAAGMAAAB0AAAAaQAAAG8AAABuAAAAVAAAAGkAAABtAAAAZQAAAGUAMAA5
122  ADMAMAA0ADAAMAAoAAAACAAAAAEAAABDAAAAdAAAAHgAAABNAAAAYQAAAHgAAABDAAAAbwAAAG4AA
123  ABuAAAAZQAAAGMAAAB0AAAAaQAAAG8AAABuAAAAVAAAAGkAAABtAAAAZQAAADQAMAA3ADcAMQBiAD
124  AAMAAcAAAACAAAAAEAAABDAAAAdAAAAHgAAABNAAAAYQAAAHgAAABJAAAAZAAAAGwAAABlAAAAVAA
125  AAGkAAABtAAAAZQAAAGMAMAAyADcAMAA5ADAAMAAgAAAAAgAAAAEAAABDAAAAdAAAAHgAAABXAAAA
126  bwAAAHIAAABrAAAARAAAAGkAAAByAAAAZQAAAGMAAAB0AAAAbwAAAHIAAAB5AAAAMAAwABgAAAAIA
127  AAAAQAAAEMAAAB0AAAAeAAAAEMAAABmAAAAZwAAAEYAAABsAAAAYQAAAGcAAABzAAAAMQAAADAAMA
128  BmADAAMgA2ADgAMAAiAAAAAgAAAAEAAABDAAAAdAAAAHgAAABJAAAAbgAAAGkAAAB0AAAAaQAAAGE
129  AAABsAAAAUAAAAHIAAABvAAAAZwAAAHIAAABhAAAAbQAAADAAMAA=
130 -
131 EOF
132        fi
133 }
134
135 reindex() {
136        $PYTHON $BINDIR/samba-tool dbcheck --reindex -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
137 }
138
139 # This should 'fail', because it returns the number of modified records
140 dbcheck() {
141        $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs --fix --yes -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
142 }
143 # But having fixed it all up, this should pass
144 dbcheck_clean() {
145        $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
146 }
147
148 # This should 'fail', because it returns the number of modified records.  
149 # We don't need to run this against 4.1 releases
150 dbcheck_acl_reset() {
151     if [ x$RELEASE = x"release-4-0-0" -o x$RELEASE = x"alpha13" ]; then
152        $PYTHON $BINDIR/samba-tool dbcheck --reset-well-known-acls --cross-ncs --fix --yes -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
153     else 
154         return 1
155     fi
156 }
157 # But having fixed it all up, this should pass.  
158 # We don't need to run this against 4.1.0rc3
159 dbcheck_acl_reset_clean() {
160     if [ x$RELEASE != x"release-4-1-0rc3" ]; then
161        $PYTHON $BINDIR/samba-tool dbcheck --reset-well-known-acls --cross-ncs -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
162     fi
163 }
164
165 # This should 'fail', because it returns the number of modified records
166 dbcheck2() {
167     if [ x$RELEASE = x"release-4-1-0rc3" ]; then
168        $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs --fix --yes -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
169     else
170         exit 1
171     fi
172 }
173 # But having fixed it all up, this should pass
174 dbcheck_clean2() {
175     if [ x$RELEASE = x"release-4-1-0rc3" ]; then
176        $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
177     fi
178 }
179
180 referenceprovision() {
181     if [ x$RELEASE == x"release-4-0-0" ]; then
182         $PYTHON $BINDIR/samba-tool domain provision --server-role="dc" --domain=SAMBA --host-name=ares --realm=${RELEASE}.samba.corp --targetdir=$PREFIX_ABS/${RELEASE}_reference --use-ntvfs --host-ip=127.0.0.1 --host-ip6=::1
183     fi
184 }
185
186 ldapcmp() {
187     if [ x$RELEASE == x"release-4-0-0" ]; then
188          $PYTHON $BINDIR/samba-tool ldapcmp tdb://$PREFIX_ABS/${RELEASE}_reference/private/sam.ldb tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb --two --skip-missing-dn --filter=dnsRecord
189     fi
190 }
191
192 ldapcmp_sd() {
193     if [ x$RELEASE == x"release-4-0-0" ]; then
194         $PYTHON $BINDIR/samba-tool ldapcmp tdb://$PREFIX_ABS/${RELEASE}_reference/private/sam.ldb tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb --two --sd --skip-missing-dn
195     fi
196 }
197
198 if [ -d $release_dir ]; then
199     testit $RELEASE undump
200     testit "reindex" reindex
201     testit_expect_failure "dbcheck" dbcheck
202     testit "dbcheck_clean" dbcheck_clean
203     testit_expect_failure "dbcheck_acl_reset" dbcheck_acl_reset
204     testit "dbcheck_acl_reset_clean" dbcheck_acl_reset_clean
205     testit "add_userparameters0" add_userparameters1
206     testit "add_userparameters1" add_userparameters1
207     testit "add_userparameters2" add_userparameters2
208     testit "add_userparameters3" add_userparameters3
209     testit_expect_failure "dbcheck2" dbcheck2
210     testit "dbcheck_clean2" dbcheck_clean2
211     testit "referenceprovision" referenceprovision
212     testit "ldapcmp" ldapcmp
213     testit "ldapcmp_sd" ldapcmp_sd
214 else
215     subunit_start_test $RELEASE
216     subunit_skip_test $RELEASE <<EOF
217 no test provision
218 EOF
219
220     subunit_start_test "reindex"
221     subunit_skip_test "reindex" <<EOF
222 no test provision
223 EOF
224     subunit_start_test "dbcheck"
225     subunit_skip_test "dbcheck" <<EOF
226 no test provision
227 EOF
228     subunit_start_test "dbcheck_clean"
229     subunit_skip_test "dbcheck_clean" <<EOF
230 no test provision
231 EOF
232     subunit_start_test "dbcheck_acl_reset"
233     subunit_skip_test "dbcheck_acl_reset" <<EOF
234 no test provision
235 EOF
236     subunit_start_test "dbcheck_clean_acl_reset"
237     subunit_skip_test "dbcheck_clean_acl_reset" <<EOF
238 no test provision
239 EOF
240     subunit_start_test add_userparameters0
241     subunit_skip_test add_userparameters0<<EOF
242 no test provision
243 EOF
244
245     subunit_start_test add_userparameters1
246     subunit_skip_test add_userparameters1<<EOF
247 no test provision
248 EOF
249
250     subunit_start_test add_userparameters2
251     subunit_skip_test add_userparameters2<<EOF
252 no test provision
253 EOF
254
255     subunit_start_test add_userparameters3
256     subunit_skip_test add_userparameters3<<EOF
257 no test provision
258 EOF
259
260     subunit_start_test "dbcheck2"
261     subunit_skip_test "dbcheck2" <<EOF
262 no test provision
263 EOF
264
265     subunit_start_test "referenceprovision"
266     subunit_skip_test "referenceprovision" <<EOF
267 no test provision
268 EOF
269     subunit_start_test "ldapcmp"
270     subunit_skip_test "ldapcmp" <<EOF
271 no test provision
272 EOF
273     subunit_start_test "ldapcmp_sd"
274     subunit_skip_test "ldapcmp_sd" <<EOF
275 no test provision
276 EOF
277 fi
278
279 if [ -d $PREFIX_ABS/${RELEASE} ]; then
280   rm -fr $PREFIX_ABS/${RELEASE}
281 fi
282
283 if [ -d $PREFIX_ABS/${RELEASE}_reference ]; then
284   rm -fr $PREFIX_ABS/${RELEASE}_reference
285 fi
286
287 exit $failed