freeipa/ipatests/test_ipaserver/test_adtrust_mockup.py
Stanislav Levin fec66942d4 pytest: Migrate unittest/nose to Pytest fixtures
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>
2020-02-12 18:08:32 +02:00

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]