mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2024-12-25 08:21:05 -06:00
82af034023
Fix Coverity finding CID 323644: logically dead code path The code to determine whether NetBIOS name was already set or need to be set after deriving it from a domain or asking a user for an interactive input, was refactored at some point to avoid retrieving the whole LDAP entry. Instead, it was provided with the actual NetBIOS name retrieved. As result, a part of the code got neglected and was never executed. Fix this code and provide a test that tries to test predefined, interactively provided and automatically derived NetBIOS name depending on how the installer is being run. We mock up the actual execution so that no access to LDAP or Samba is needed. Fixes: https://pagure.io/freeipa/issue/7753 Reviewed-By: Christian Heimes <cheimes@redhat.com>
55 lines
2.0 KiB
Python
55 lines
2.0 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 TestCase, mock
|
|
from io import StringIO
|
|
|
|
|
|
class ApiMockup:
|
|
Backend = namedtuple('Backend', 'ldap2')
|
|
Calls = namedtuple('Callbacks', 'retrieve_netbios_name')
|
|
env = namedtuple('Environment', 'domain')
|
|
|
|
|
|
class TestNetbiosName(TestCase):
|
|
@classmethod
|
|
def setUpClass(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
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
adtr.retrieve_netbios_name = cls.api.Calls.retrieve_netbios_name
|
|
|
|
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]
|