Changeset - 6790c3bb01ce
[Not reviewed]
0 3 0
Branko Majic (branko) - 4 years ago 2020-01-07 01:43:02
branko@majic.rs
MAR-148: Fixed the tests for wsgi_website role:

- Fix issues related to newlines in outputs.
- Refactor Python version check to make it more robust.
3 files changed with 22 insertions and 25 deletions:
0 comments (0 inline, 0 general)
roles/wsgi_website/molecule/default/tests/test_default.py
Show inline comments
 
@@ -102,9 +102,9 @@ def test_virtualenv_profile_configuration(host, profile_file, expected_group):
 

	
 

	
 
@pytest.mark.parametrize("profile_file, expected_group, expected_content", [
 
    ('/var/www/parameters-mandatory/.profile.d/environment.sh', 'web-parameters-mandatory', ''),
 
    ('/var/www/parameters-optional.local/.profile.d/environment.sh', 'web-parameters-optional_local', "export MY_ENV_VAR='My environment variable'"),
 
    ('/var/www/parameters-paste-req/.profile.d/environment.sh', 'web-parameters-paste-req', ''),
 
    ('/var/www/parameters-mandatory/.profile.d/environment.sh', 'web-parameters-mandatory', '\n'),
 
    ('/var/www/parameters-optional.local/.profile.d/environment.sh', 'web-parameters-optional_local', "export MY_ENV_VAR='My environment variable'\n"),
 
    ('/var/www/parameters-paste-req/.profile.d/environment.sh', 'web-parameters-paste-req', '\n'),
 
])
 
def test_environment_profile_configuration(host, profile_file, expected_group, expected_content):
 
    """
 
@@ -123,9 +123,9 @@ def test_environment_profile_configuration(host, profile_file, expected_group, e
 

	
 

	
 
@pytest.mark.parametrize("admin_user, expected_virtualenv_path", [
 
    ('admin-parameters-mandatory', '/var/www/parameters-mandatory/virtualenv'),
 
    ('admin-parameters-optional_local', '/var/www/parameters-optional.local/virtualenv\nMy environment variable'),
 
    ('admin-parameters-paste-req', '/var/www/parameters-paste-req/virtualenv'),
 
    ('admin-parameters-mandatory', '/var/www/parameters-mandatory/virtualenv\n'),
 
    ('admin-parameters-optional_local', '/var/www/parameters-optional.local/virtualenv\nMy environment variable\n'),
 
    ('admin-parameters-paste-req', '/var/www/parameters-paste-req/virtualenv\n'),
 
])
 
def test_profile_configuration(host, admin_user, expected_virtualenv_path):
 
    """
 
@@ -158,7 +158,7 @@ def test_website_application_user(host, app_user, expected_uid, expected_group,
 

	
 
    with host.sudo():
 
        umask = host.run("su -l " + app_user + " -c 'bash -c umask'")
 
        assert umask.stdout == '0007'
 
        assert umask.stdout == '0007\n'
 

	
 

	
 
@pytest.mark.parametrize("expected_group", [
 
@@ -176,9 +176,9 @@ def test_nginx_user(host, expected_group):
 

	
 

	
 
@pytest.mark.parametrize("forward_file, expected_group, expected_content", [
 
    ('/var/www/parameters-mandatory/.forward', 'web-parameters-mandatory', 'root'),
 
    ('/var/www/parameters-optional.local/.forward', 'web-parameters-optional_local', 'user'),
 
    ('/var/www/parameters-paste-req/.forward', 'web-parameters-paste-req', 'root'),
 
    ('/var/www/parameters-mandatory/.forward', 'web-parameters-mandatory', 'root\n'),
 
    ('/var/www/parameters-optional.local/.forward', 'web-parameters-optional_local', 'user\n'),
 
    ('/var/www/parameters-paste-req/.forward', 'web-parameters-paste-req', 'root\n'),
 
])
 
def test_forward_file(host, forward_file, expected_group, expected_content):
 
    """
 
@@ -206,7 +206,7 @@ def test_mail_forwarding(host, original_destination, expected_destination_user):
 
    Tests if mail forwarding works as expected.
 
    """
 

	
 
    hostname = host.run('hostname').stdout
 
    hostname = host.run('hostname').stdout.strip()
 

	
 
    send = host.run('swaks --suppress-data --to ' + original_destination)
 
    assert send.rc == 0
 
@@ -340,7 +340,7 @@ def test_virtualenv_packages(host, admin_user, pip_path, expected_packages):
 

	
 
    # Normalise package names and order.
 
    expected_packages = sorted([p.lower() for p in expected_packages])
 
    actual_packages = sorted(packages.stdout.lower().split("\n"))
 
    actual_packages = sorted(packages.stdout.lower().strip().split("\n"))
 

	
 
    assert actual_packages == expected_packages
 

	
 
@@ -537,12 +537,12 @@ def test_website_enabled(host, config_file, expected_content):
 
    assert config.linked_to == expected_content
 

	
 

	
 
@pytest.mark.parametrize("python_path, expected_version_startswith", [
 
@pytest.mark.parametrize("python_path, expected_version", [
 
    ("/var/www/parameters-mandatory/virtualenv/bin/python", "Python 2"),
 
    ("/var/www/parameters-optional.local/virtualenv/bin/python", "Python 3"),
 
    ("/var/www/parameters-paste-req/virtualenv/bin/python", "Python 2"),
 
])
 
def test_python_version_in_virtualenv(host, python_path, expected_version_startswith):
 
def test_python_version_in_virtualenv(host, python_path, expected_version):
 
    """
 
    Tests if correct Python version is used inside of virtual
 
    environment.
 
@@ -552,11 +552,8 @@ def test_python_version_in_virtualenv(host, python_path, expected_version_starts
 

	
 
        python_version = host.run(python_path + " --version")
 

	
 
        # Python 2 outputs version to stderr, Python 3 outputs it to
 
        # stdout. Go figure.
 
        python_version_output = python_version.stdout + python_version.stderr
 

	
 
        assert python_version.rc == 0
 

	
 
        # Python binary prints out version to stderr.
 
        assert python_version_output.startswith(expected_version_startswith)
 
        # Python 2 outputs version to stderr, Python 3 outputs it to
 
        # stdout. Go figure.
 
        assert expected_version in python_version.stdout or expected_version in python_version.stderr
roles/wsgi_website/molecule/default/tests/test_parameters_optional.py
Show inline comments
 
@@ -67,11 +67,11 @@ def test_static_file_serving(host):
 

	
 
    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()
 
    assert page.stdout == open("tests/data/static_file.txt", 'r').read()
 

	
 
    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()
 
    assert page.stdout == open("tests/data/media_file.txt", 'r').read()
 

	
 

	
 
def test_additional_nginx_config(host):
roles/wsgi_website/molecule/default/tests/test_parameters_paste_req.py
Show inline comments
 
@@ -24,14 +24,14 @@ def test_wsgi_requirements_upgrade_checks(host):
 
        assert config.user == 'root'
 
        assert config.group == 'pipreqcheck'
 
        assert config.mode == 0o640
 
        assert config.content == "gunicorn\nfutures"
 
        assert config.content == "gunicorn\nfutures\n"
 

	
 
        config = host.file('/etc/pip_check_requirements_upgrades/parameters-paste-req/wsgi_requirements.txt')
 
        assert config.is_file
 
        assert config.user == 'root'
 
        assert config.group == 'pipreqcheck'
 
        assert config.mode == 0o640
 
        assert config.content == "futures==3.1.0\ngunicorn==19.7.0"
 
        assert config.content == "futures==3.1.0\ngunicorn==19.7.0\n"
 

	
 

	
 
def test_gunicorn_requirements_installation_file(host):
 
@@ -47,7 +47,7 @@ def test_gunicorn_requirements_installation_file(host):
 
        assert requirements.user == 'admin-parameters-paste-req'
 
        assert requirements.group == 'web-parameters-paste-req'
 
        assert requirements.mode == 0o640
 
        assert requirements.content == "futures==3.1.0\ngunicorn==19.7.0"
 
        assert requirements.content == "futures==3.1.0\ngunicorn==19.7.0\n"
 

	
 

	
 
def test_index_page(host):
0 comments (0 inline, 0 general)