1 # Unix SMB/CIFS implementation.
2 # Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007-2008
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 3 of the License, or
7 # (at your option) any later version.
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
18 """Samba Python tests."""
23 from samba
import arcfour_encrypt
, string_to_byte_array
24 from samba
.tests
import TestCase
, TestCaseInTempDir
27 class SubstituteVarTestCase(TestCase
):
30 self
.assertEqual("", samba
.substitute_var("", {}))
32 def test_nothing(self
):
33 self
.assertEqual("foo bar",
34 samba
.substitute_var("foo bar", {"bar": "bla"}))
36 def test_replace(self
):
37 self
.assertEqual("foo bla",
38 samba
.substitute_var("foo ${bar}", {"bar": "bla"}))
40 def test_broken(self
):
41 self
.assertEqual("foo ${bdkjfhsdkfh sdkfh ",
42 samba
.substitute_var("foo ${bdkjfhsdkfh sdkfh ", {"bar": "bla"}))
44 def test_unknown_var(self
):
45 self
.assertEqual("foo ${bla} gsff",
46 samba
.substitute_var("foo ${bla} gsff", {"bar": "bla"}))
48 def test_check_all_substituted(self
):
49 samba
.check_all_substituted("nothing to see here")
50 self
.assertRaises(Exception, samba
.check_all_substituted
,
51 "Not subsituted: ${FOOBAR}")
54 class ArcfourTestCase(TestCase
):
56 def test_arcfour_direct(self
):
59 crypt_expected
= b
'\xda\x91Z\xb0l\xd7\xb9\xcf\x99'
60 crypt_calculated
= arcfour_encrypt(key
, plain
)
61 self
.assertEqual(crypt_expected
, crypt_calculated
)
64 class StringToByteArrayTestCase(TestCase
):
66 def test_byte_array(self
):
67 expected
= [218, 145, 90, 176, 108, 215, 185, 207, 153]
68 calculated
= string_to_byte_array('\xda\x91Z\xb0l\xd7\xb9\xcf\x99')
69 self
.assertEqual(expected
, calculated
)
72 class LdbExtensionTests(TestCaseInTempDir
):
74 def test_searchone(self
):
75 path
= self
.tempdir
+ "/searchone.ldb"
78 l
.add({"dn": "foo=dc", "bar": "bla"})
79 self
.assertEqual(b
"bla",
80 l
.searchone(basedn
=ldb
.Dn(l
, "foo=dc"), attribute
="bar"))