s3:auth: Use cli_credentials_init_server()
[metze/samba-autobuild/.git] / selftest / tests.py
1 #!/usr/bin/python
2 # This script generates a list of testsuites that should be run as part of
3 # the Samba test suite.
4
5 # The output of this script is parsed by selftest.pl, which then decides
6 # which of the tests to actually run. It will, for example, skip all tests
7 # listed in selftest/skip or only run a subset during "make quicktest".
8
9 # The idea is that this script outputs all of the tests of Samba, not
10 # just those that are known to pass, and list those that should be skipped
11 # or are known to fail in selftest/skip or selftest/knownfail. This makes it
12 # very easy to see what functionality is still missing in Samba and makes
13 # it possible to run the testsuite against other servers, such as
14 # Windows that have a different set of features.
15
16 # The syntax for a testsuite is "-- TEST --" on a single line, followed
17 # by the name of the test, the environment it needs and the command to run, all
18 # three separated by newlines. All other lines in the output are considered
19 # comments.
20
21 import os
22 from selftesthelpers import bindir, srcdir, python
23 from selftesthelpers import planpythontestsuite, samba4srcdir
24 from selftesthelpers import plantestsuite, bbdir
25 from selftesthelpers import configuration, valgrindify
26 from selftesthelpers import skiptestsuite
27
28 try:
29     config_h = os.environ["CONFIG_H"]
30 except KeyError:
31     samba4bindir = bindir()
32     config_h = os.path.join(samba4bindir, "default/include/config.h")
33
34 # check available features
35 config_hash = dict()
36 f = open(config_h, 'r')
37 try:
38     lines = f.readlines()
39     config_hash = dict((x[0], ' '.join(x[1:]))
40                        for x in map(lambda line: line.strip().split(' ')[1:],
41                                     list(filter(lambda line: (line[0:7] == '#define') and (len(line.split(' ')) > 2), lines))))
42 finally:
43     f.close()
44
45 have_man_pages_support = ("XSLTPROC_MANPAGES" in config_hash)
46 with_pam = ("WITH_PAM" in config_hash)
47 with_elasticsearch_backend = ("HAVE_SPOTLIGHT_BACKEND_ES" in config_hash)
48 pam_wrapper_so_path = config_hash["LIBPAM_WRAPPER_SO_PATH"]
49 pam_set_items_so_path = config_hash["PAM_SET_ITEMS_SO_PATH"]
50
51 planpythontestsuite("none", "samba.tests.source")
52 if have_man_pages_support:
53     planpythontestsuite("none", "samba.tests.docs")
54
55 try:
56     import testscenarios
57 except ImportError:
58     skiptestsuite("subunit", "testscenarios not available")
59 else:
60     planpythontestsuite("none", "subunit.tests.test_suite")
61 planpythontestsuite("none", "samba.tests.blackbox.ndrdump")
62 planpythontestsuite("none", "samba.tests.blackbox.check_output")
63 planpythontestsuite("none", "api", name="ldb.python", extra_path=['lib/ldb/tests/python'])
64 planpythontestsuite("none", "samba.tests.credentials")
65 planpythontestsuite("none", "samba.tests.registry")
66 planpythontestsuite("ad_dc_ntvfs:local", "samba.tests.auth")
67 planpythontestsuite("none", "samba.tests.get_opt")
68 planpythontestsuite("none", "samba.tests.cred_opt")
69 planpythontestsuite("none", "samba.tests.security")
70 planpythontestsuite("none", "samba.tests.dcerpc.misc")
71 planpythontestsuite("none", "samba.tests.dcerpc.integer")
72 planpythontestsuite("none", "samba.tests.param")
73 planpythontestsuite("none", "samba.tests.upgrade")
74 planpythontestsuite("none", "samba.tests.core")
75 planpythontestsuite("none", "samba.tests.common")
76 planpythontestsuite("none", "samba.tests.provision")
77 planpythontestsuite("none", "samba.tests.password_quality")
78 planpythontestsuite("none", "samba.tests.strings")
79 planpythontestsuite("none", "samba.tests.netcmd")
80 planpythontestsuite("none", "samba.tests.dcerpc.rpc_talloc")
81 planpythontestsuite("none", "samba.tests.dcerpc.array")
82 planpythontestsuite("none", "samba.tests.dcerpc.string_tests")
83 planpythontestsuite("none", "samba.tests.hostconfig")
84 planpythontestsuite("ad_dc_ntvfs:local", "samba.tests.messaging")
85 planpythontestsuite("none", "samba.tests.s3param")
86 planpythontestsuite("none", "samba.tests.s3passdb")
87 planpythontestsuite("none", "samba.tests.s3registry")
88 planpythontestsuite("none", "samba.tests.s3windb")
89 planpythontestsuite("none", "samba.tests.s3idmapdb")
90 planpythontestsuite("none", "samba.tests.samba3sam")
91 planpythontestsuite(
92     "none", "wafsamba.tests.test_suite",
93     extra_path=[os.path.join(samba4srcdir, "..", "buildtools"),
94                 os.path.join(samba4srcdir, "..", "third_party", "waf")])
95 planpythontestsuite("fileserver", "samba.tests.smbd_fuzztest")
96 planpythontestsuite("nt4_dc_smb1", "samba.tests.dcerpc.binding")
97 for env in [ 'ad_dc:local', 'ad_dc_fips:local' ]:
98     planpythontestsuite(env, "samba.tests.dcerpc.samr_change_password")
99
100
101 def cmdline(script, *args):
102     """
103     Prefix PYTHON env var and append --configurefile option to abs script path.
104
105     script.sh arg1 arg2
106     -->
107     PYTHON=python /path/to/bbdir/script.sh arg1 arg2 \
108     --configurefile $SMB_CONF_FILE
109     """
110     return [
111         "PYTHON=%s" % python,
112         os.path.join(bbdir, script),
113     ] + list(args) + [configuration]
114
115
116 plantestsuite(
117     "samba4.blackbox.demote-saveddb", "none",
118     cmdline('demote-saveddb.sh', '$PREFIX_ABS/demote'))
119
120 plantestsuite(
121     "samba4.blackbox.dbcheck.alpha13", "none",
122     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
123             'alpha13'))
124
125 # same test as above but skip member link checks
126 plantestsuite(
127     "samba4.blackbox.dbcheck.alpha13.quick", "none",
128     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
129             'alpha13', '--quick-membership-checks'))
130
131 plantestsuite(
132     "samba4.blackbox.dbcheck.release-4-0-0", "none",
133     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
134             'release-4-0-0'))
135
136 # same test as above but skip member link checks
137 plantestsuite(
138     "samba4.blackbox.dbcheck.release-4-0-0.quick", "none",
139     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
140             'release-4-0-0', '--quick-membership-checks'))
141
142 plantestsuite(
143     "samba4.blackbox.dbcheck.release-4-1-0rc3", "none",
144     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
145             'release-4-1-0rc3'))
146
147 # same test as above but skip member link checks
148 plantestsuite(
149     "samba4.blackbox.dbcheck.release-4-1-0rc3.quick", "none",
150     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
151             'release-4-1-0rc3', '--quick-membership-checks'))
152
153 plantestsuite(
154     "samba4.blackbox.dbcheck.release-4-1-6-partial-object", "none",
155     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
156             'release-4-1-6-partial-object'))
157
158 # same test as above but skip member link checks
159 plantestsuite(
160     "samba4.blackbox.dbcheck.release-4-1-6-partial-object.quick", "none",
161     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
162             'release-4-1-6-partial-object', '--quick-membership-checks'))
163
164 plantestsuite(
165     "samba4.blackbox.dbcheck.release-4-5-0-pre1", "none",
166     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
167             'release-4-5-0-pre1'))
168
169 # same test as above but skip member link checks
170 plantestsuite(
171     "samba4.blackbox.dbcheck.release-4-5-0-pre1.quick", "none",
172     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
173             'release-4-5-0-pre1', '--quick-membership-checks'))
174
175 plantestsuite(
176     "samba4.blackbox.upgradeprovision.alpha13", "none",
177     cmdline('upgradeprovision-oldrelease.sh', '$PREFIX_ABS/provision',
178             'alpha13'))
179
180 plantestsuite(
181     "samba4.blackbox.upgradeprovision.release-4-0-0", "none",
182     cmdline('upgradeprovision-oldrelease.sh', '$PREFIX_ABS/provision',
183             'release-4-0-0'))
184
185 plantestsuite(
186     "samba4.blackbox.tombstones-expunge.release-4-5-0-pre1", "none",
187     cmdline('tombstones-expunge.sh', '$PREFIX_ABS/provision',
188             'release-4-5-0-pre1'))
189
190 plantestsuite(
191     "samba4.blackbox.dbcheck-links.release-4-5-0-pre1", "none",
192     cmdline('dbcheck-links.sh', '$PREFIX_ABS/provision',
193             'release-4-5-0-pre1'))
194
195 plantestsuite(
196     "samba4.blackbox.runtime-links.release-4-5-0-pre1", "none",
197     cmdline('runtime-links.sh', '$PREFIX_ABS/provision',
198             'release-4-5-0-pre1'))
199
200 plantestsuite(
201     "samba4.blackbox.schemaupgrade", "none",
202     cmdline('schemaupgrade.sh', '$PREFIX_ABS/provision'))
203
204 plantestsuite(
205     "samba4.blackbox.functionalprep", "none",
206     cmdline('functionalprep.sh', '$PREFIX_ABS/provision'))
207
208 planpythontestsuite("none", "samba.tests.upgradeprovision")
209 planpythontestsuite("none", "samba.tests.xattr")
210 planpythontestsuite("none", "samba.tests.ntacls")
211 planpythontestsuite("none", "samba.tests.policy")
212 planpythontestsuite("none", "samba.tests.kcc.graph")
213 planpythontestsuite("none", "samba.tests.kcc.graph_utils")
214 planpythontestsuite("none", "samba.tests.kcc.ldif_import_export")
215 planpythontestsuite("none", "samba.tests.graph")
216 plantestsuite("wafsamba.duplicate_symbols", "none", [os.path.join(srcdir(), "buildtools/wafsamba/test_duplicate_symbol.sh")])
217 planpythontestsuite("none", "samba.tests.glue")
218 planpythontestsuite("none", "samba.tests.tdb_util")
219 planpythontestsuite("none", "samba.tests.samdb")
220 planpythontestsuite("none", "samba.tests.samdb_api")
221
222 if with_pam:
223     env = "ad_member"
224     options = [
225         {
226             "description": "krb5",
227             "pam_options": "krb5_auth krb5_ccache_type=FILE",
228         },
229         {
230             "description": "default",
231             "pam_options": "",
232         },
233     ]
234     for o in options:
235         description = o["description"]
236         pam_options = "'%s'" % o["pam_options"]
237
238         plantestsuite("samba.tests.pam_winbind(local+%s)" % description, env,
239                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
240                        valgrindify(python), pam_wrapper_so_path,
241                        "$SERVER", "$USERNAME", "$PASSWORD",
242                        pam_options])
243         plantestsuite("samba.tests.pam_winbind(domain1+%s)" % description, env,
244                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
245                        valgrindify(python), pam_wrapper_so_path,
246                        "$DOMAIN", "$DC_USERNAME", "$DC_PASSWORD",
247                        pam_options])
248         plantestsuite("samba.tests.pam_winbind(domain2+%s)" % description, env,
249                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
250                        valgrindify(python), pam_wrapper_so_path,
251                        "$REALM", "$DC_USERNAME", "$DC_PASSWORD",
252                        pam_options])
253         plantestsuite("samba.tests.pam_winbind(domain3+%s)" % description, env,
254                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
255                        valgrindify(python), pam_wrapper_so_path,
256                        "''", "${DC_USERNAME}@${DOMAIN}", "$DC_PASSWORD",
257                        pam_options])
258         plantestsuite("samba.tests.pam_winbind(domain4+%s)" % description, env,
259                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
260                        valgrindify(python), pam_wrapper_so_path,
261                        "''", "${DC_USERNAME}@${REALM}", "$DC_PASSWORD",
262                        pam_options])
263         plantestsuite("samba.tests.pam_winbind(domain5+%s)" % description, env,
264                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
265                        valgrindify(python), pam_wrapper_so_path,
266                        "$REALM", "${DC_USERNAME}@${DOMAIN}", "$DC_PASSWORD",
267                        pam_options])
268         plantestsuite("samba.tests.pam_winbind(domain6+%s)" % description, env,
269                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
270                        valgrindify(python), pam_wrapper_so_path,
271                        "$DOMAIN", "${DC_USERNAME}@${REALM}", "$DC_PASSWORD",
272                        pam_options])
273         plantestsuite("samba.tests.pam_winbind(trust_f_both1+%s)" % description, env,
274                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
275                        valgrindify(python), pam_wrapper_so_path,
276                        "$TRUST_F_BOTH_DOMAIN",
277                        "$TRUST_F_BOTH_USERNAME",
278                        "$TRUST_F_BOTH_PASSWORD",
279                        pam_options])
280         plantestsuite("samba.tests.pam_winbind(trust_f_both2+%s)" % description, env,
281                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
282                        valgrindify(python), pam_wrapper_so_path,
283                        "$TRUST_F_BOTH_REALM",
284                        "$TRUST_F_BOTH_USERNAME",
285                        "$TRUST_F_BOTH_PASSWORD",
286                        pam_options])
287         plantestsuite("samba.tests.pam_winbind(trust_f_both3+%s)" % description, env,
288                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
289                        valgrindify(python), pam_wrapper_so_path,
290                        "''",
291                        "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_DOMAIN}",
292                        "$TRUST_F_BOTH_PASSWORD",
293                        pam_options])
294         plantestsuite("samba.tests.pam_winbind(trust_f_both4+%s)" % description, env,
295                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
296                        valgrindify(python), pam_wrapper_so_path,
297                        "''",
298                        "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_REALM}",
299                        "$TRUST_F_BOTH_PASSWORD",
300                        pam_options])
301         plantestsuite("samba.tests.pam_winbind(trust_f_both5+%s)" % description, env,
302                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
303                        valgrindify(python), pam_wrapper_so_path,
304                        "${TRUST_F_BOTH_REALM}",
305                        "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_DOMAIN}",
306                        "$TRUST_F_BOTH_PASSWORD",
307                        pam_options])
308         plantestsuite("samba.tests.pam_winbind(trust_f_both6+%s)" % description, env,
309                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
310                        valgrindify(python), pam_wrapper_so_path,
311                        "${TRUST_F_BOTH_DOMAIN}",
312                        "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_REALM}",
313                        "$TRUST_F_BOTH_PASSWORD",
314                        pam_options])
315         plantestsuite("samba.tests.pam_winbind(trust_e_both1+%s)" % description, env,
316                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
317                        valgrindify(python), pam_wrapper_so_path,
318                        "$TRUST_E_BOTH_DOMAIN",
319                        "$TRUST_E_BOTH_USERNAME",
320                        "$TRUST_E_BOTH_PASSWORD",
321                        pam_options])
322         plantestsuite("samba.tests.pam_winbind(trust_e_both2+%s)" % description, env,
323                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
324                        valgrindify(python), pam_wrapper_so_path,
325                        "$TRUST_E_BOTH_REALM",
326                        "$TRUST_E_BOTH_USERNAME",
327                        "$TRUST_E_BOTH_PASSWORD",
328                        pam_options])
329         plantestsuite("samba.tests.pam_winbind(trust_e_both3+%s)" % description, env,
330                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
331                        valgrindify(python), pam_wrapper_so_path,
332                        "''",
333                        "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_DOMAIN}",
334                        "$TRUST_E_BOTH_PASSWORD",
335                        pam_options])
336         plantestsuite("samba.tests.pam_winbind(trust_e_both4+%s)" % description, env,
337                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
338                        valgrindify(python), pam_wrapper_so_path,
339                        "''",
340                        "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_REALM}",
341                        "$TRUST_E_BOTH_PASSWORD",
342                        pam_options])
343         plantestsuite("samba.tests.pam_winbind(trust_e_both5+%s)" % description, env,
344                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
345                        valgrindify(python), pam_wrapper_so_path,
346                        "${TRUST_E_BOTH_REALM}",
347                        "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_DOMAIN}",
348                        "$TRUST_E_BOTH_PASSWORD",
349                        pam_options])
350         plantestsuite("samba.tests.pam_winbind(trust_e_both6+%s)" % description, env,
351                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
352                        valgrindify(python), pam_wrapper_so_path,
353                        "${TRUST_E_BOTH_DOMAIN}",
354                        "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_REALM}",
355                        "$TRUST_E_BOTH_PASSWORD",
356                        pam_options])
357
358         for authtok_options in ["", "use_authtok", "try_authtok"]:
359             _pam_options = "'%s %s'" % (o["pam_options"], authtok_options)
360             _description = "%s %s" % (description, authtok_options)
361             plantestsuite("samba.tests.pam_winbind_chauthtok(domain+%s)" % _description, env,
362                           [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind_chauthtok.sh"),
363                            valgrindify(python), pam_wrapper_so_path, pam_set_items_so_path,
364                            "$DOMAIN", "TestPamOptionsUser", "oldp@ssword0", "newp@ssword0",
365                            _pam_options, 'yes',
366                            "$DC_SERVER", "$DC_USERNAME", "$DC_PASSWORD"])
367
368         plantestsuite("samba.tests.pam_winbind_warn_pwd_expire(domain+%s)" % description, env,
369                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind_warn_pwd_expire.sh"),
370                        valgrindify(python), pam_wrapper_so_path,
371                        "$DOMAIN", "alice", "Secret007",
372                        pam_options])
373
374
375 plantestsuite("samba.unittests.krb5samba", "none",
376               [os.path.join(bindir(), "default/testsuite/unittests/test_krb5samba")])
377 plantestsuite("samba.unittests.sambafs_srv_pipe", "none",
378               [os.path.join(bindir(), "default/testsuite/unittests/test_sambafs_srv_pipe")])
379 plantestsuite("samba.unittests.lib_util_modules", "none",
380               [os.path.join(bindir(), "default/testsuite/unittests/test_lib_util_modules")])
381 plantestsuite("samba.unittests.background_send",
382               "none",
383               [os.path.join(
384                   bindir(),
385                   "default/testsuite/unittests/test_background_send"),
386                "$SMB_CONF_PATH"])
387
388 plantestsuite("samba.unittests.smb1cli_session", "none",
389               [os.path.join(bindir(), "default/libcli/smb/test_smb1cli_session")])
390 plantestsuite("samba.unittests.smb_util_translate", "none",
391               [os.path.join(bindir(), "default/libcli/smb/test_util_translate")])
392
393 plantestsuite("samba.unittests.talloc_keep_secret", "none",
394               [os.path.join(bindir(), "default/lib/util/test_talloc_keep_secret")])
395
396 plantestsuite("samba.unittests.tldap", "none",
397               [os.path.join(bindir(), "default/source3/test_tldap")])
398 plantestsuite("samba.unittests.rfc1738", "none",
399               [os.path.join(bindir(), "default/lib/util/test_rfc1738")])
400 plantestsuite("samba.unittests.kerberos", "none",
401               [os.path.join(bindir(), "test_kerberos")])
402 plantestsuite("samba.unittests.ms_fnmatch", "none",
403               [os.path.join(bindir(), "default/lib/util/test_ms_fnmatch")])
404 plantestsuite("samba.unittests.byteorder", "none",
405               [os.path.join(bindir(), "default/lib/util/test_byteorder")])
406 plantestsuite("samba.unittests.bytearray", "none",
407               [os.path.join(bindir(), "default/lib/util/test_bytearray")])
408 plantestsuite("samba.unittests.byteorder_verify", "none",
409               [os.path.join(bindir(), "default/lib/util/test_byteorder_verify")])
410 plantestsuite("samba.unittests.util_paths", "none",
411               [os.path.join(bindir(), "default/lib/util/test_util_paths")])
412 plantestsuite("samba.unittests.util", "none",
413               [os.path.join(bindir(), "default/lib/util/test_util")])
414 plantestsuite("samba.unittests.memcache", "none",
415               [os.path.join(bindir(), "default/lib/util/test_memcache")])
416 plantestsuite("samba.unittests.ntlm_check", "none",
417               [os.path.join(bindir(), "default/libcli/auth/test_ntlm_check")])
418 plantestsuite("samba.unittests.gnutls", "none",
419               [os.path.join(bindir(), "default/libcli/auth/test_gnutls")])
420 plantestsuite("samba.unittests.rc4_passwd_buffer", "none",
421               [os.path.join(bindir(), "default/libcli/auth/test_rc4_passwd_buffer")])
422 plantestsuite("samba.unittests.schannel", "none",
423               [os.path.join(bindir(), "default/libcli/auth/test_schannel")])
424 plantestsuite("samba.unittests.test_registry_regfio", "none",
425               [os.path.join(bindir(), "default/source3/test_registry_regfio")])
426 plantestsuite("samba.unittests.test_oLschema2ldif", "none",
427               [os.path.join(bindir(), "default/source4/utils/oLschema2ldif/test_oLschema2ldif")])
428 if with_elasticsearch_backend:
429     plantestsuite("samba.unittests.mdsparser_es", "none",
430                   [os.path.join(bindir(), "default/source3/test_mdsparser_es")] + [configuration])
431 plantestsuite("samba.unittests.credentials", "none",
432               [os.path.join(bindir(), "default/auth/credentials/test_creds")])