2007-12-17 05:25:28 +03:00
#!/usr/bin/python
# Unix SMB/CIFS implementation.
2008-01-25 03:02:13 +03:00
# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007-2008
2007-12-17 05:25:28 +03:00
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
2007-12-30 03:14:15 +03:00
""" Samba Python tests. """
2007-12-17 05:25:28 +03:00
import os
import ldb
import samba
2007-12-20 01:27:31 +03:00
import tempfile
2007-12-17 05:25:28 +03:00
import unittest
class LdbTestCase ( unittest . TestCase ) :
2009-04-06 01:03:13 +04:00
2007-12-30 03:14:15 +03:00
""" Trivial test case for running tests against a LDB. """
2007-12-17 05:25:28 +03:00
def setUp ( self ) :
self . filename = os . tempnam ( )
self . ldb = samba . Ldb ( self . filename )
2007-12-17 13:12:36 +03:00
def set_modules ( self , modules = [ ] ) :
2007-12-30 03:14:15 +03:00
""" Change the modules for this Ldb. """
2007-12-17 05:25:28 +03:00
m = ldb . Message ( )
m . dn = ldb . Dn ( self . ldb , " @MODULES " )
m [ " @LIST " ] = " , " . join ( modules )
self . ldb . add ( m )
self . ldb = samba . Ldb ( self . filename )
2007-12-20 01:27:31 +03:00
class TestCaseInTempDir ( unittest . TestCase ) :
2009-04-06 01:03:13 +04:00
2007-12-20 01:27:31 +03:00
def setUp ( self ) :
super ( TestCaseInTempDir , self ) . setUp ( )
self . tempdir = tempfile . mkdtemp ( )
def tearDown ( self ) :
super ( TestCaseInTempDir , self ) . tearDown ( )
2008-05-29 19:29:56 +04:00
self . assertEquals ( [ ] , os . listdir ( self . tempdir ) )
2007-12-26 01:36:31 +03:00
os . rmdir ( self . tempdir )
2007-12-20 01:27:31 +03:00
2007-12-18 20:54:19 +03:00
class SubstituteVarTestCase ( unittest . TestCase ) :
2009-04-06 01:03:13 +04:00
2007-12-18 20:54:19 +03:00
def test_empty ( self ) :
self . assertEquals ( " " , samba . substitute_var ( " " , { } ) )
def test_nothing ( self ) :
self . assertEquals ( " foo bar " , samba . substitute_var ( " foo bar " , { " bar " : " bla " } ) )
def test_replace ( self ) :
self . assertEquals ( " foo bla " , samba . substitute_var ( " foo $ {bar} " , { " bar " : " bla " } ) )
def test_broken ( self ) :
self . assertEquals ( " foo $ { bdkjfhsdkfh sdkfh " ,
samba . substitute_var ( " foo $ { bdkjfhsdkfh sdkfh " , { " bar " : " bla " } ) )
def test_unknown_var ( self ) :
self . assertEquals ( " foo $ {bla} gsff " ,
samba . substitute_var ( " foo $ {bla} gsff " , { " bar " : " bla " } ) )
2008-01-25 00:18:27 +03:00
def test_check_all_substituted ( self ) :
2009-02-24 03:02:26 +03:00
samba . check_all_substituted ( " nothing to see here " )
self . assertRaises ( Exception , samba . check_all_substituted , " Not subsituted: $ {FOOBAR} " )
2007-12-20 01:27:31 +03:00
class LdbExtensionTests ( TestCaseInTempDir ) :
2009-04-06 01:03:13 +04:00
2007-12-20 01:27:31 +03:00
def test_searchone ( self ) :
2007-12-26 01:36:44 +03:00
path = self . tempdir + " /searchone.ldb "
l = samba . Ldb ( path )
try :
l . add ( { " dn " : " foo=dc " , " bar " : " bla " } )
2008-01-25 05:54:33 +03:00
self . assertEquals ( " bla " , l . searchone ( basedn = ldb . Dn ( l , " foo=dc " ) , attribute = " bar " ) )
2007-12-26 01:36:44 +03:00
finally :
del l
os . unlink ( path )
2007-12-20 01:27:31 +03:00
2008-02-11 15:20:24 +03:00
2008-04-14 21:13:41 +04:00
cmdline_loadparm = None
cmdline_credentials = None
2008-04-14 20:30:07 +04:00
class RpcInterfaceTestCase ( unittest . TestCase ) :
2009-04-06 01:03:13 +04:00
2008-04-14 20:30:07 +04:00
def get_loadparm ( self ) :
2008-04-14 21:13:41 +04:00
assert cmdline_loadparm is not None
return cmdline_loadparm
2008-04-14 20:30:07 +04:00
def get_credentials ( self ) :
2008-04-14 21:13:41 +04:00
return cmdline_credentials
2009-04-06 01:17:43 +04:00
class ValidNetbiosNameTests ( unittest . TestCase ) :
def test_valid ( self ) :
self . assertTrue ( valid_netbios_name ( " FOO " ) )
def test_too_long ( self ) :
self . assertFalse ( valid_netbios_name ( " FOO " * 10 ) )
def test_invalid_characters ( self ) :
self . assertFalse ( valid_netbios_name ( " ()BLA " ) )