1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-24 21:34:56 +03:00
samba-mirror/python/samba/tests/dcerpc/string_tests.py
Andreas Schneider d4798967c0 python:samba:tests: Fix code spelling
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
2023-06-23 13:44:31 +00:00

133 lines
4.3 KiB
Python

# Unix SMB/CIFS implementation.
# Copyright (C) Andrew Bartlett <abartlet@samba.org> 2016
#
# 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/>.
#
"""Tests for string and unicode handling in PIDL generated bindings
samba.dcerpc.*"""
from samba.dcerpc import drsblobs
import samba.tests
from samba.ndr import ndr_unpack, ndr_pack
import talloc
import gc
class TestException(Exception):
pass
class StringTests(samba.tests.TestCase):
def setUp(self):
super(StringTests, self).setUp()
talloc.enable_null_tracking()
self.startup_blocks = talloc.total_blocks()
def tearDown(self):
super(StringTests, self).tearDown()
gc.collect()
if talloc.total_blocks() != self.startup_blocks:
talloc.report_full()
self.fail("it appears we are leaking memory")
def test_string_from_python(self):
info = drsblobs.repsFromTo2OtherInfo()
info.dns_name1 = "hello.example.com"
info.dns_name2 = "goodbye.example.com"
gc.collect()
self.assertIsNotNone(info)
self.assertEqual(info.dns_name1, "hello.example.com")
self.assertEqual(info.dns_name2, "goodbye.example.com")
info.dns_name1 = ""
info.dns_name2 = "goodbye.example.com"
self.assertEqual(info.dns_name1, "")
self.assertEqual(info.dns_name2, "goodbye.example.com")
info.dns_name2 = None
self.assertEqual(info.dns_name1, "")
self.assertIsNone(info.dns_name2)
def test_string_with_exception(self):
try:
self.test_string_from_python()
raise TestException()
except TestException:
pass
def test_string_from_python_function(self):
def get_info():
info = drsblobs.repsFromTo2OtherInfo()
info.dns_name1 = "1.example.com"
info.dns_name2 = "2.example.com"
return info
info = get_info()
gc.collect()
self.assertIsNotNone(info)
self.assertEqual(info.dns_name1, "1.example.com")
self.assertEqual(info.dns_name2, "2.example.com")
def test_string_modify_in_place(self):
info = drsblobs.repsFromTo2OtherInfo()
info.dns_name1 = "1.example.com"
info.dns_name2 = "%s.example.com"
gc.collect()
self.assertIsNotNone(info)
self.assertEqual(info.dns_name1, "1.example.com")
self.assertEqual(info.dns_name2, "%s.example.com")
info.dns_name1 += ".co.nz"
info.dns_name2 %= 2
self.assertEqual(info.dns_name1, "1.example.com.co.nz")
self.assertEqual(info.dns_name2, "2.example.com")
del info
def test_string_delete(self):
gc.collect()
info = drsblobs.repsFromTo2OtherInfo()
info.dns_name1 = "1.example.com"
info.dns_name2 = "2.example.com"
info.dns_name1 = None
try:
del info.dns_name2
except AttributeError:
pass
self.assertIsNotNone(info)
self.assertIsNone(info.dns_name1)
self.assertIsNotNone(info.dns_name2)
class StringTestsWithoutLeakCheck(samba.tests.TestCase):
"""We know that the ndr unpacking test leaves stuff in the
autofree_context, and we don't want to worry about that. So for
this test we don't make memory leak assertions."""
def test_string_from_ndr(self):
info = drsblobs.repsFromTo2OtherInfo()
info.dns_name1 = "1.example.com"
info.dns_name2 = "2.example.com"
packed = ndr_pack(info)
gc.collect()
info_unpacked = ndr_unpack(drsblobs.repsFromTo2OtherInfo, packed)
self.assertIsNotNone(info_unpacked)
self.assertEqual(info_unpacked.dns_name1, "1.example.com")
self.assertEqual(info_unpacked.dns_name2, "2.example.com")