Files @ c8d4251a6ea5
Branch filter:

Location: majic-ansible-roles/roles/wsgi_website/molecule/default/tests/test_parameters_optional.py - annotation

branko
MAR-131: Added support for specifying Python version in wsgi_website role:

- Introduced additional role parameter for specifying the Python
version.
- Updated tests to verify new functionality.
- Fixed existing tests to account for differences between Python 2 and
Python 3 - including changes to WSGI test applications.
- Updated documentation, documenting new parameter and fixing one
minor typo.
- Updated release notes.
- Bumped default version of Gunicorn/futures used.
b5ed796b566a
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
b5ed796b566a
998aab91d6b4
998aab91d6b4
a1e0221d24e7
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
a1e0221d24e7
a1e0221d24e7
998aab91d6b4
998aab91d6b4
a1e0221d24e7
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
a1e0221d24e7
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
a1e0221d24e7
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
a1e0221d24e7
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
a1e0221d24e7
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
a1e0221d24e7
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
a1e0221d24e7
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
c8d4251a6ea5
998aab91d6b4
998aab91d6b4
a1e0221d24e7
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
a1e0221d24e7
998aab91d6b4
998aab91d6b4
998aab91d6b4
a1e0221d24e7
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
a1e0221d24e7
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
a1e0221d24e7
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
a1e0221d24e7
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
a1e0221d24e7
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
a1e0221d24e7
998aab91d6b4
998aab91d6b4
998aab91d6b4
998aab91d6b4
a1e0221d24e7
998aab91d6b4
998aab91d6b4
998aab91d6b4
a1e0221d24e7
998aab91d6b4
998aab91d6b4
import os
import re
import time

import testinfra.utils.ansible_runner


testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
    os.environ['MOLECULE_INVENTORY_FILE']).get_hosts(['all'])


def test_installed_packages(host):
    """
    Tests if additional packages are installed.
    """

    assert host.package('libmariadb-client-lgpl-dev-compat').is_installed
    assert host.package('global').is_installed


def test_mariadb_compat_symlink(host):
    """
    Tests if compatibility symlink is set-up for mysql_config binary if
    libmariadb-client-lgpl-dev-compat is installed.
    """

    link = host.file('/usr/bin/mysql_config')
    assert link.is_symlink
    assert link.linked_to == "/usr/bin/mariadb_config"


def test_https_enforcement(host):
    """
    Tests if HTTPS is (not) being enforced.
    """

    https_enforcement = host.run('curl -I http://parameters-optional.local/')

    assert https_enforcement.rc == 0
    assert 'HTTP/1.1 200 OK' in https_enforcement.stdout
    assert 'HTTP/1.1 301 Moved Permanently' not in https_enforcement.stdout
    assert 'Location: https://parameters-optional/' not in https_enforcement.stdout

    https_enforcement = host.run('curl -I https://parameters-optional.local/')

    assert https_enforcement.rc == 0
    assert 'Strict-Transport-Security' not in https_enforcement.stdout


def test_index_page(host):
    """
    Tests if index page is served correctly. This covers:

    - Basic WSGI application operation.
    - Handling of environment variables.
    - Handling of proxy headers.
    """

    page = host.run('curl -H "Accept-Encoding: plain" https://parameters-optional.local/')

    assert page.rc == 0
    assert "This is the WSGI application at parameters-optional.local." in page.stdout
    assert "Requested URL was: https://parameters-optional.local/" in page.stdout
    assert "MY_ENV_VAR: My environment variable" in page.stdout
    assert "Accept-Encoding: None" in page.stdout
    assert "Python version: 3." in page.stdout


def test_static_file_serving(host):
    """
    Tests serving of static files.
    """

    page = host.run('curl https://parameters-optional.local/static/static_file.txt')
    assert page.rc == 0
    assert page.stdout == open("tests/data/static_file.txt", 'r').read().rstrip()

    page = host.run('curl https://parameters-optional.local/media/media_file.txt')
    assert page.rc == 0
    assert page.stdout == open("tests/data/media_file.txt", 'r').read().rstrip()


def test_additional_nginx_config(host):
    """
    Tests if additional Nginx configuration directives are properly deployed.
    """

    page = host.run('curl https://parameters-optional.local/static/missing_static_file.txt')
    assert page.rc == 0
    assert "Requested URL was: https://parameters-optional.local/my/own/error/page"


def test_environment_indicator(host):
    """
    Tests if environment indicator is applied correctly.
    """

    page = host.run('curl https://parameters-optional.local/')

    assert page.rc == 0
    assert "<div id='website-environment' style='background-color: #ff0000; width: 100%; text-align: center; position: fixed; bottom: 5px; color: #00ff00; " \
        "font-weight: bold; z-index: 999999;'>parameters-optional</div></body>" in page.stdout


def test_nginx_rewrite_config(host):
    """
    Tests if Nginx rewrite configuration is deployed correctly.
    """

    page = host.run('curl https://parameters-optional.local/rewrite1/some/path')
    assert page.rc == 0
    assert "Requested URL was: https://parameters-optional.local/rewritten1/" in page.stdout

    page = host.run('curl https://parameters-optional.local/rewrite2/some/other/path')
    assert page.rc == 0
    assert "Requested URL was: https://parameters-optional.local/rewritten2/some/other/path" in page.stdout