import os import testinfra.utils.ansible_runner testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('parameters-optional') def test_installed_packages(host): """ Tests if additional packages are installed. """ assert host.package('libmariadbclient-dev-compat').is_installed assert host.package('global').is_installed 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() 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() 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 "