1
0
mirror of https://github.com/samba-team/samba.git synced 2025-11-21 12:23:50 +03:00
Files
samba-mirror/source/scripting/swig/torture/torture_ldb.py
Tim Potter d67e055f86 r15389: Add some better torture tests for LdbMessage.
Fix up behaviour of Ldb.__setitem__() function.  It should overwrite the
element data.

Add wrapper for ldb_msg_sanity_check().
2007-10-10 14:05:31 -05:00

84 lines
1.5 KiB
Python
Executable File

#!/usr/bin/python
#
# A torture test for the Python Ldb bindings. Also a short guide on
# how the API works.
#
from Ldb import *
# Helpers
def t(cond, msg):
"""Test a condition."""
if not cond:
raise RuntimeError('FAILED: %s' % msg)
#
# Torture LdbMessage
#
m = LdbMessage()
# Empty message
t(m.keys() == [], 'empty msg')
t(m.dn == None, 'empty dn')
t(m.sanity_check() == LDB_ERR_INVALID_DN_SYNTAX, 'sanity check')
# Test invalid dn
try:
m.dn = 'invalid dn'
except LdbError, arg:
if arg[0] != LDB_ERR_INVALID_DN_SYNTAX:
raise
else:
t(False, 'LdbError not raised')
# Test valid dn
m.dn = 'name=spotty'
t(m.dn == 'name=spotty', 'specified dn')
t(m.sanity_check() == LDB_SUCCESS, 'sanity check')
# Test some single-valued attributes
m['animal'] = 'dog'
m['name'] = 'spotty'
t(m.keys() == ['animal', 'name'], 'keys() test failed')
t(m.values() == [['dog'], ['spotty']], 'values() test failed')
t(m.items() == [('animal', ['dog']), ('name', ['spotty'])],
'items() test failed')
t(m.sanity_check() == LDB_SUCCESS, 'sanity check')
m['animal'] = 'canine'
t(m['animal'] == ['canine'], 'replace value failed')
# Test a multi-valued attribute
names = ['spotty', 'foot']
m['name'] = names
t(m['name'] == names, 'multi-valued attr failed')
t(m.sanity_check() == LDB_SUCCESS, 'sanity check')
# Test non-string attributes
try:
m['foo'] = 42
except TypeError:
pass
else:
t(False, 'TypeError not raised')
#
# Torture Ldb
#
l = Ldb('foo.ldb')