s3-selftest Add test for smbclient --authentication-file
[nivanova/samba-autobuild/.git] / source3 / 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 3 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 3, 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/samba4-knownfail. This makes it 
12 # very easy to see what functionality is still missing in Samba 3 and makes 
13 # it possible to run the testsuite against other servers, such as Samba 4 or 
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, sys
22 sys.path.insert(0, os.path.normpath(os.path.join(os.path.dirname(__file__), "../../selftest")))
23 from selftesthelpers import *
24 import subprocess
25
26 smb4torture = binpath("smbtorture4")
27 samba3srcdir = srcdir() + "/source3"
28 configuration = "--configfile=$SMB_CONF_PATH"
29 scriptdir=os.path.join(samba3srcdir, "../script/tests")
30
31 torture_options = [configuration, "--maximum-runtime=$SELFTEST_MAXTIME", 
32                    "--target=samba3", "--basedir=$SELFTEST_TMPDIR",
33                    '--option="torture:winbindd_netbios_name=$SERVER"',
34                    '--option="torture:winbindd_netbios_domain=$DOMAIN"', 
35                    '--option=torture:sharedelay=100000']
36
37 if not os.getenv("SELFTEST_VERBOSE"):
38     torture_options.append("--option=torture:progress=no")
39 torture_options.append("--format=subunit")
40 if os.getenv("SELFTEST_QUICK"):
41     torture_options.append("--option=torture:quick=yes")
42 smb4torture += " " + " ".join(torture_options)
43
44 def plansmbtorturetestsuite(name, env, options, description=''):
45     modname = "samba3.posix_s3.%s %s" % (name, description)
46     cmdline = "%s $LISTOPT %s %s" % (valgrindify(smb4torture), options, name)
47     plantestsuite_loadlist(modname, env, cmdline)
48
49 plantestsuite("samba3.blackbox.success", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_success.sh")])
50 plantestsuite("samba3.blackbox.failure", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_failure.sh")])
51
52 plantestsuite("samba3.local_s3", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_local_s3.sh")])
53
54 tests=[ "FDPASS", "LOCK1", "LOCK2", "LOCK3", "LOCK4", "LOCK5", "LOCK6", "LOCK7", "LOCK9",
55         "UNLINK", "BROWSE", "ATTR", "TRANS2", "TORTURE",
56         "OPLOCK1", "OPLOCK2", "OPLOCK4", "STREAMERROR",
57         "DIR", "DIR1", "DIR-CREATETIME", "TCON", "TCONDEV", "RW1", "RW2", "RW3", "RW-SIGNING",
58         "OPEN", "XCOPY", "RENAME", "DELETE", "DELETE-LN", "PROPERTIES", "W2K",
59         "TCON2", "IOCTL", "CHKPATH", "FDSESS", "LOCAL-SUBSTITUTE", "CHAIN1",
60         "GETADDRINFO", "POSIX", "UID-REGRESSION-TEST", "SHORTNAME-TEST",
61         "LOCAL-BASE64", "LOCAL-GENCACHE", "POSIX-APPEND",
62         "CASE-INSENSITIVE-CREATE",
63         "BAD-NBT-SESSION",
64         "LOCAL-string_to_sid", "LOCAL-CONVERT-STRING" ]
65
66 for t in tests:
67     plantestsuite("samba3.smbtorture_s3.plain(s3dc).%s" % t, "s3dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', binpath('smbtorture3'), "", "-l $LOCAL_PATH"])
68     plantestsuite("samba3.smbtorture_s3.crypt(s3dc).%s" % t, "s3dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', binpath('smbtorture3'), "-e", "-l $LOCAL_PATH"])
69
70 tests=["--ping", "--separator",
71        "--own-domain",
72        "--all-domains",
73        "--trusted-domains",
74        "--domain-info=BUILTIN",
75        "--domain-info=$DOMAIN",
76        "--online-status",
77        "--online-status --domain=BUILTIN",
78        "--online-status --domain=$DOMAIN",
79        "--check-secret --domain=$DOMAIN",
80        "--change-secret --domain=$DOMAIN",
81        "--check-secret --domain=$DOMAIN",
82        "--online-status --domain=$DOMAIN",
83        #Didn't pass yet# "--domain-users",
84        "--domain-groups",
85        "--name-to-sid=$USERNAME",
86        "--name-to-sid=$DOMAIN\\\\$USERNAME",
87      #Didn't pass yet# "--user-info=$USERNAME",
88        "--user-groups=$DOMAIN\\\\$USERNAME",
89        "--allocate-uid",
90        "--allocate-gid"]
91
92 for t in tests:
93     plantestsuite("samba3.wbinfo_s3.(s3dc:local).%s" % t, "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_wbinfo_s3.sh"), t])
94     plantestsuite("samba3.wbinfo_s3.(member:local).%s" % t, "member:local", [os.path.join(samba3srcdir, "script/tests/test_wbinfo_s3.sh"), t])
95
96 plantestsuite(
97     "samba3.wbinfo_sids2xids.(member:local)", "member:local",
98     [os.path.join(samba3srcdir, "script/tests/test_wbinfo_sids2xids.sh")])
99
100 plantestsuite("samba3.ntlm_auth.(s3dc:local)", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_ntlm_auth_s3.sh"), valgrindify(python), samba3srcdir, binpath('ntlm_auth3'), configuration])
101
102 for env in ["s3dc", "member"]:
103     plantestsuite("samba3.blackbox.smbclient_auth.plain (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', binpath('smbclient3'), configuration])
104
105 for env in ["secserver"]:
106     plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) domain creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN\\\\$DC_USERNAME', '$DC_PASSWORD', binpath('smbclient3'), configuration + " --option=clientntlmv2auth=no"])
107
108 for env in ["member"]:
109     plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) member creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$SERVER\\\\$USERNAME', '$PASSWORD', binpath('smbclient3'), configuration])
110
111 for env in ["secshare", "secserver"]:
112     plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) local creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', binpath('smbclient3'), configuration + " --option=clientntlmv2auth=no --option=clientlanmanauth=yes"])
113
114 # plain
115 for env in ["s3dc"]:
116     plantestsuite("samba3.blackbox.smbclient_s3.plain (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', binpath('smbclient3'), configuration])
117
118 for env in ["member"]:
119     plantestsuite("samba3.blackbox.smbclient_s3.plain (%s) member creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$SERVER', '$SERVER\\\\$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', binpath('smbclient3'), configuration])
120
121 for env in ["s3dc"]:
122     plantestsuite("samba3.blackbox.smbclient_s3.sign (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', binpath('smbclient3'), configuration, "--signing=required"])
123
124 for env in ["member"]:
125     plantestsuite("samba3.blackbox.smbclient_s3.sign (%s) member creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$SERVER', '$SERVER\\\\$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', binpath('smbclient3'), configuration, "--signing=required"])
126
127 # encrypted
128 for env in ["s3dc"]:
129     plantestsuite("samba3.blackbox.smbclient_s3.crypt (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', binpath('smbclient3'), configuration, "-e"])
130
131 #TODO encrypted against member, with member creds, and with DC creds
132 plantestsuite("samba3.blackbox.net.misc", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
133                                                        scriptdir, "$SMB_CONF_PATH", configuration])
134 plantestsuite("samba3.blackbox.net.local.registry", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
135                                                        scriptdir, "$SMB_CONF_PATH", configuration])
136 plantestsuite("samba3.blackbox.net.rpc.registry", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
137                                                        scriptdir, "$SMB_CONF_PATH", configuration, 'rpc'])
138
139 plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
140                                                        scriptdir, "$SMB_CONF_PATH", configuration])
141 plantestsuite("samba3.blackbox.testparm", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
142                                                        "$LOCAL_PATH"])
143
144 plantestsuite(
145     "samba3.pthreadpool", "s3dc",
146     [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
147
148 #smbtorture4 tests
149
150 base = ["base.attr", "base.charset", "base.chkpath", "base.defer_open", "base.delaywrite", "base.delete",
151         "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
152         "base.disconnect", "base.fdpass", "base.lock",
153         "base.mangle", "base.negnowait", "base.ntdeny1",
154         "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
155         "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
156         "base.xcopy", "base.samba3error"]
157
158 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
159        "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock"
160        "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
161        "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
162        "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename",
163        "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
164        "raw.samba3rootdirfid", "raw.sfileinfo.end-of-file",
165        "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
166        "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff"]
167
168 smb2 = ["smb2.lock", "smb2.read", "smb2.compound", "smb2.connect", "smb2.scan", "smb2.scanfind",
169         "smb2.bench-oplock"]
170
171 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
172        "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
173        "rpc.samba3.getaliasmembership-0",
174        "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
175        "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
176        "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
177        "rpc.spoolss.driver",
178        "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
179        "rpc.lsa.privileges", 
180        "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
181        "rpc.samr.passwords.pwdlastset", "rpc.samr.large-dc", "rpc.samr.machine.auth",
182        "rpc.netlogon.admin",
183        "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.join", "rpc.bind", "rpc.epmapper"]
184
185 local = ["local.nss-wrapper", "local.ndr"]
186
187 winbind = ["winbind.struct", "winbind.wbclient"]
188
189 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
190
191 unix = ["unix.info2", "unix.whoami"]
192
193 nbt = ["nbt.dgram" ]
194
195 tests= base + raw + smb2 + rpc + unix + local + winbind + rap + nbt
196
197 sub = subprocess.Popen("%s --version 2> /dev/null" % smb4torture, stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
198 sub.communicate("")
199
200 if sub.returncode == 0:
201     for t in tests:
202         if t == "base.delaywrite":
203             plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
204         elif t == "rap.sam":
205             plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
206         elif t == "unix.whoami":
207             plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD')
208         elif t == "raw.samba3posixtimedlock":
209             plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/s3dc/share')
210         elif t == "raw.chkpath":
211             plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
212         else:
213             plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
214
215
216     test = 'rpc.lsa.lookupsids'
217     auth_options = ["", "ntlm", "spnego" ]
218     signseal_options = ["", ",connect", ",sign", ",seal"]
219     smb_options = ["", ",smb2"]
220     endianness_options = ["", ",bigendian"]
221     for z in smb_options:
222         for s in signseal_options:
223             for e in endianness_options:
224                 for a in auth_options:
225                     binding_string = "ncacn_np:$SERVER[%s%s%s%s]" % (a, s, z, e)
226                     options = binding_string + " -U$USERNAME%$PASSWORD"
227                     plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
228
229             # We should try more combinations in future, but this is all
230             # the pre-calculated credentials cache supports at the moment
231             e = ""
232             a = ""
233             binding_string = "ncacn_np:$SERVER[%s%s%s%s]" % (a, s, z, e)
234             options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
235             plansmbtorturetestsuite(test, "ktest", options, 'over kerberos with old ccache ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
236
237             options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
238             plansmbtorturetestsuite(test, "ktest", options, 'over kerberos ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
239
240
241
242     for e in endianness_options:
243         for a in auth_options:
244             for s in signseal_options:
245                 binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
246                 options = binding_string + " -U$USERNAME%$PASSWORD"
247                 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))