summaryrefslogtreecommitdiffstats
path: root/ipatests/test_install/test_changeconf.py
blob: 2dc2b7dc1e3db0df1e90232fd4a1d1679f38bd52 (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
# Copyright (C) 2018  FreeIPA Contributors see COPYING for license

from __future__ import absolute_import

import pytest
from ipaclient.install.ipachangeconf import IPAChangeConf


@pytest.fixture(scope='function')
def config_filename(tmpdir):
    filename = tmpdir.mkdir('data').join('config_file.conf')
    filename.write('SOME_CONF /some/user/defined/path\n')
    return filename


def test_addifnotset_action(config_filename):
    """Test if addifnotset action adds a comment about the modified conf.

    IPA doesn't want to break existing configuration, if a value already exists
    it adds a comment to the modified setting and a note about that on the line
    above.

    New settings will be added without any note.
    """
    ipa_conf = IPAChangeConf('IPA Installer Test')
    ipa_conf.setOptionAssignment(' ')

    opts = [
        {
            'action': 'addifnotset',
            'name': 'SOME_CONF',
            'type': 'option',
            'value': '/path/defined/by/ipa',
        },
        {
            'action': 'addifnotset',
            'name': 'NEW_CONF',
            'type': 'option',
            'value': '/path/to/somewhere',
        },
    ]

    ipa_conf.changeConf(str(config_filename), opts)

    assert config_filename.readlines() == [
        '# SOME_CONF modified by IPA\n',
        '#SOME_CONF /path/defined/by/ipa\n',
        'SOME_CONF /some/user/defined/path\n',
        'NEW_CONF /path/to/somewhere\n',
    ]