summaryrefslogtreecommitdiff
path: root/tests/unittests/test_distros/test_bsd_utils.py
blob: b38e4af5b874b341f93b9b625be815a0cd940097 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# This file is part of cloud-init. See LICENSE file for license information.

import cloudinit.distros.bsd_utils as bsd_utils

from cloudinit.tests.helpers import (CiTestCase, ExitStack, mock)

RC_FILE = """
if something; then
    do something here
fi
hostname={hostname}
"""


class TestBsdUtils(CiTestCase):

    def setUp(self):
        super().setUp()
        patches = ExitStack()
        self.addCleanup(patches.close)

        self.load_file = patches.enter_context(
            mock.patch.object(bsd_utils.util, 'load_file'))

        self.write_file = patches.enter_context(
            mock.patch.object(bsd_utils.util, 'write_file'))

    def test_get_rc_config_value(self):
        self.load_file.return_value = 'hostname=foo\n'
        self.assertEqual(bsd_utils.get_rc_config_value('hostname'), 'foo')
        self.load_file.assert_called_with('/etc/rc.conf')

        self.load_file.return_value = 'hostname=foo'
        self.assertEqual(bsd_utils.get_rc_config_value('hostname'), 'foo')

        self.load_file.return_value = 'hostname="foo"'
        self.assertEqual(bsd_utils.get_rc_config_value('hostname'), 'foo')

        self.load_file.return_value = "hostname='foo'"
        self.assertEqual(bsd_utils.get_rc_config_value('hostname'), 'foo')

        self.load_file.return_value = 'hostname=\'foo"'
        self.assertEqual(bsd_utils.get_rc_config_value('hostname'), "'foo\"")

        self.load_file.return_value = ''
        self.assertEqual(bsd_utils.get_rc_config_value('hostname'), None)

        self.load_file.return_value = RC_FILE.format(hostname='foo')
        self.assertEqual(bsd_utils.get_rc_config_value('hostname'), "foo")

    def test_set_rc_config_value_unchanged(self):
        # bsd_utils.set_rc_config_value('hostname', 'foo')
        # self.write_file.assert_called_with('/etc/rc.conf', 'hostname=foo\n')

        self.load_file.return_value = RC_FILE.format(hostname='foo')
        self.write_file.assert_not_called()

    def test_set_rc_config_value(self):
        bsd_utils.set_rc_config_value('hostname', 'foo')
        self.write_file.assert_called_with('/etc/rc.conf', 'hostname=foo\n')

        self.load_file.return_value = RC_FILE.format(hostname='foo')
        bsd_utils.set_rc_config_value('hostname', 'bar')
        self.write_file.assert_called_with(
                '/etc/rc.conf',
                RC_FILE.format(hostname='bar'))