Files @ ec01c5579795
Branch filter:

Location: majic-ansible-roles/roles/preseed/molecule/default/tests/test_parameters_optional_with_overrides.py

branko
MAR-191: Refactor preseed test to use dynamic inventory instead of hard-coded release names.
import os

import pytest

import testinfra.utils.ansible_runner


testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
    os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('parameters-optional-with-overrides')

parameters_mandatory_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
    os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('parameters-mandatory')

parameters_optional_with_overrides_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
    os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('parameters-optional-with-overrides')


@pytest.mark.parametrize("hostname", parameters_mandatory_hosts)
def test_preseed_configuration_file_content_host_without_overrides(host, hostname):
    """
    Tests content of generated preseed configuration file.
    """

    with host.sudo():
        preseed_file = host.file(os.path.join("/tmp/preseed_files", "%s.cfg" % hostname))
        preseed_file_content = preseed_file.content_string
        ssh_public_key = "MY_ANSIBLE_KEY"

    assert "d-i debian-installer/language string en" in preseed_file_content
    assert "d-i debian-installer/country string SE" in preseed_file_content
    assert "d-i debian-installer/locale string en_US.UTF-8" in preseed_file_content
    assert "d-i keyboard-configuration/xkb-keymap select us" in preseed_file_content
    assert "d-i netcfg/choose_interface select eth0" in preseed_file_content

    assert """# DHCP network configuration.
d-i netcfg/disable_autoconfig boolean false
d-i netcfg/get_hostname string ignored-value
d-i netcfg/get_domain string ignored-value""" in preseed_file_content

    assert "d-i mirror/http/hostname string ftp.se.debian.org" in preseed_file_content
    assert "d-i mirror/http/directory string /debian" in preseed_file_content
    assert "d-i mirror/http/proxy string " in preseed_file_content
    assert "d-i passwd/root-password password root" in preseed_file_content
    assert "d-i passwd/root-password-again password root" in preseed_file_content
    assert "d-i time/zone string Europe/Stockholm" in preseed_file_content
    assert ssh_public_key in preseed_file_content


@pytest.mark.parametrize("hostname", parameters_optional_with_overrides_hosts)
def test_preseed_configuration_file_content_host_with_overrides(host, hostname):
    """
    Tests content of generated preseed configuration file.
    """

    with host.sudo():
        preseed_file = host.file(os.path.join("/tmp/preseed_files", "%s.cfg" % hostname))
        preseed_file_content = preseed_file.content_string
        ssh_public_key = "MY_ANSIBLE_KEY"

    assert "d-i debian-installer/language string sr" in preseed_file_content
    assert "d-i debian-installer/country string RS" in preseed_file_content
    assert "d-i debian-installer/locale string en_UK.UTF-8" in preseed_file_content
    assert "d-i keyboard-configuration/xkb-keymap select sv" in preseed_file_content
    assert "d-i netcfg/choose_interface select eth1" in preseed_file_content

    assert """# Manual network configuration.
d-i netcfg/disable_autoconfig boolean true
d-i netcfg/get_ipaddress string 3.3.3.3
d-i netcfg/get_netmask string 255.255.0.0
d-i netcfg/get_gateway string 2.2.2.2
d-i netcfg/get_nameservers string 1.1.1.1
d-i netcfg/confirm_static boolean true

# Hostname and domain configuration.
d-i netcfg/get_hostname string testing
d-i netcfg/get_domain string example.com""" in preseed_file_content

    assert "d-i mirror/http/hostname string ftp.de.debian.org" in preseed_file_content
    assert "d-i mirror/http/directory string /" in preseed_file_content
    assert "d-i mirror/http/proxy string http://proxy.local" in preseed_file_content
    assert "d-i passwd/root-password password myrootpassword" in preseed_file_content
    assert "d-i passwd/root-password-again password myrootpassword" in preseed_file_content
    assert "d-i time/zone string Europe/Belgrade" in preseed_file_content
    assert ssh_public_key in preseed_file_content