Files @ 3dd7f39302f8
Branch filter:

Location: majic-ansible-roles/roles/mail_forwarder/tests/test_mandatory.py - annotation

branko
MAR-29: Implemented tests for php_website role:

- Install some additional tools for testing everything.
- Updated test playbook to change allowed extensions for running PHP scripts on
parameters-optional.
- Updated error page to use correct extension for parameters-optional test
instance.
- Expanded rewrite configuration slightly for parameters-optional.
- Install libmariadb-client-lgpl-dev-compat to test mysql_config symlink
creation.
- Deploy a number of PHP pages used for testing if pages are served correctly.
- Set file permissions on deployed PHP FPM pool configuraiton files.
- Use expanded syntax when deploying TLS keys/certificates in order to avoid
issues with TAB mangling.
- Fixed set-up of Strict-Transport-Security header when HTTPS enforcement is
disabled.
- Added a number of PHP and static test pages.
- Wrote tests covering full functionality of the role.
import re
import time


import testinfra.utils.ansible_runner


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


def test_smtp_relay_truststore_file(File):
    """
    Tests if SMTP relay truststore has correct content.
    """

    truststore = File('/etc/ssl/certs/smtp_relay_truststore.pem')

    assert truststore.content == open("tests/data/x509/truststore.pem", "r").read().rstrip()


def test_smtp_mailname(File):
    """
    Tests if SMTP mailname configuration file has correct content.
    """

    mailname = File('/etc/mailname')

    assert mailname.content == "parameters-mandatory"


def test_postfix_main_cf_file_content(File):
    """
    Tests if the Postfix main configuration file content is correct.
    """

    config = File('/etc/postfix/main.cf')
    config_lines = config.content.split("\n")

    assert "myhostname = parameters-mandatory" in config_lines
    assert "mydestination = parameters-mandatory, parameters-mandatory, localhost.localdomain, localhost" in config_lines
    assert "relayhost = " in config_lines
    assert "mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128" in config_lines
    assert "smtp_tls_security_level" not in config.content
    assert "smtp_tls_CAfile" not in config.content
    assert "smtp_host_lookup = dns, native" in config_lines


def test_direct_mail_sending(Command, File, Sudo):
    """
    Tests if mails are sent correctly directly without relay if relay has not
    been configured.
    """

    send = Command('swaks --suppress-data --to root@domain1 --server localhost')
    assert send.rc == 0
    message_id = re.search('Ok: queued as (.*)', send.stdout).group(1)

    # Wait for a little while for message to be processed.
    time.sleep(5)

    with Sudo():
        mail_log = File('/var/log/mail.log')
        pattern = "%s: to=<root@domain1>, relay=domain1.*status=sent" % message_id

        assert re.search(pattern, mail_log.content) is not None