mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2024-12-26 08:51:50 -06:00
fec66942d4
Even though Pytest supports xunit style setups, unittest and nose tests, this support is limited and may be dropped in the future releases. Worst of all is that the mixing of various test frameworks results in weird conflicts and of course, is not widely tested. This is a part of work to remove the mixing of test idioms in the IPA's test suite: 1) replace unittest.TestCase subclasses 2) replace unittest test controls (SkipTest, fail, etc.) 3) replace unittest assertions Related: https://pagure.io/freeipa/issue/7989 Signed-off-by: Stanislav Levin <slev@altlinux.org> Reviewed-By: Christian Heimes <cheimes@redhat.com>
60 lines
2.1 KiB
Python
60 lines
2.1 KiB
Python
# Copyright (C) 2018 FreeIPA Project Contributors - see LICENSE file
|
|
|
|
from __future__ import print_function
|
|
import ipaserver.install.adtrust as adtr
|
|
from ipaserver.install.adtrust import set_and_check_netbios_name
|
|
from collections import namedtuple
|
|
from unittest import mock
|
|
from io import StringIO
|
|
|
|
import pytest
|
|
|
|
|
|
class ApiMockup:
|
|
Backend = namedtuple('Backend', 'ldap2')
|
|
Calls = namedtuple('Callbacks', 'retrieve_netbios_name')
|
|
env = namedtuple('Environment', 'domain')
|
|
|
|
|
|
class TestNetbiosName:
|
|
api = None
|
|
|
|
@pytest.fixture(autouse=True, scope="class")
|
|
def netbiosname_setup(self, request):
|
|
cls = request.cls
|
|
api = ApiMockup()
|
|
ldap2 = namedtuple('LDAP', 'isconnected')
|
|
ldap2.isconnected = mock.MagicMock(return_value=True)
|
|
api.Backend.ldap2 = ldap2
|
|
api.Calls.retrieve_netbios_name = adtr.retrieve_netbios_name
|
|
adtr.retrieve_netbios_name = mock.MagicMock(return_value=None)
|
|
cls.api = api
|
|
|
|
def fin():
|
|
adtr.retrieve_netbios_name = cls.api.Calls.retrieve_netbios_name
|
|
request.addfinalizer(fin)
|
|
|
|
def test_NetbiosName(self):
|
|
"""
|
|
Test set_and_check_netbios_name() using permutation of two inputs:
|
|
- predefined and not defined NetBIOS name
|
|
- unattended and interactive run
|
|
As result, the function has to return expected NetBIOS name in
|
|
all cases. For interactive run we override input to force what
|
|
we expect.
|
|
"""
|
|
self.api.env.domain = 'example.com'
|
|
expected_nname = 'EXAMPLE'
|
|
# NetBIOS name, unattended, should set the name?
|
|
tests = ((expected_nname, True, False),
|
|
(None, True, True),
|
|
(None, False, True),
|
|
(expected_nname, False, False))
|
|
with mock.patch('sys.stdin', new_callable=StringIO) as stdin:
|
|
stdin.write(expected_nname + '\r')
|
|
for test in tests:
|
|
nname, setname = set_and_check_netbios_name(
|
|
test[0], test[1], self.api)
|
|
assert expected_nname == nname
|
|
assert setname == test[2]
|