Files @ 01f4b619cfa6
Branch filter:

Location: majic-ansible-roles/roles/preseed/tests/test_parameters_mandatory.py - annotation

branko
MAR-27: Update mail_forwarder role/tests:

- Install swaks on mail-server instance for testing SMTP.
- Install procmail via mail_forwarder role (needed to be explicit for Debian
Stretch).
- Introduce small sleep when mails are sent to localhost for delivery to remote
hosts before checking the logs in order to allow Postfix to process the
queue.
import os

import testinfra.utils.ansible_runner


testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
    '.molecule/ansible_inventory').get_hosts('parameters-mandatory')


def test_preseed_directory(File, Sudo):
    """
    Tests presence and permissions on created preseed directory.
    """

    with Sudo():

        # Preseed directory created at same level as inventory.
        preseed_directory = File(os.path.join(os.getcwd(), ".molecule", 'preseed_files'))

        assert preseed_directory.is_directory
        assert preseed_directory.mode == 0o750


def test_preseed_configuration_files(File, Sudo):
    """
    Tests presence and permissions on created preseed configuration files.
    """

    with Sudo():

        # Preseed directory created at same level as inventory.
        preseed_directory_path = os.path.join(os.getcwd(), ".molecule", 'preseed_files')

        # Verify that preseed configuration files are created for all hosts.
        for host in testinfra_hosts:

            preseed_file = File(os.path.join(preseed_directory_path, "%s.cfg" % host))

            assert preseed_file.is_file
            assert preseed_file.mode == 0o640


def test_preseed_configuration_file_content(File, Sudo):
    """
    Tests content of generated preseed configuration file.
    """

    with Sudo():
        preseed_file = File(os.path.join(os.getcwd(), ".molecule", "preseed_files", "parameters-mandatory.cfg"))
        preseed_file_content = preseed_file.content_string
        ssh_public_key = open(os.path.join(os.path.expanduser("~"), ".ssh", "id_rsa.pub")).read().strip()

    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