Skip to content
Snippets Groups Projects
test_default.py 3.46 KiB
Newer Older
Eliot Berriot's avatar
Eliot Berriot committed
import os
Eliot Berriot's avatar
Eliot Berriot committed

import testinfra.utils.ansible_runner

testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
    os.environ["MOLECULE_INVENTORY_FILE"]
).get_hosts("all")
Eliot Berriot's avatar
Eliot Berriot committed


@pytest.mark.parametrize("service", ["redis-server", "postgresql", "nginx"])
def test_installed_services(host, service):
    service = host.service(service)
    assert service.is_running
    assert service.is_enabled


def test_database_created(host):
    cmd = """
        sudo -u postgres psql -A -t -c \
            "SELECT 1 FROM pg_catalog.pg_user u WHERE u.usename =  'funkwhale';"
    """
    result = host.run(cmd)
    assert result.stdout == "1"


def test_database_user_created(host):
    cmd = """
        sudo -u postgres psql -A -t -c "SELECT 1 FROM pg_database WHERE datname = 'funkwhale';"
    """
    result = host.run(cmd)
    assert result.stdout == "1"


def test_funkwhale_user_creation(host):
    user = host.user("funkwhale")
    assert user.home == "/srv/funkwhale"
    assert user.shell == "/bin/false"


@pytest.mark.parametrize(
    "path",
    [
        "/srv/funkwhale/",
        "/srv/funkwhale/data/media",
        "/srv/funkwhale/data/static",
        "/srv/funkwhale/data/music",
    ],
)
def test_funkwhale_directories_creation(path, host):
    dir = host.file(path)

    assert dir.exists is True
    assert dir.is_directory is True


def test_funkwhale_env_file(host):
    f = host.file("/srv/funkwhale/config/.env")

    assert f.contains("MEDIA_ROOT=/srv/funkwhale/data/media") is True
    assert f.contains("STATIC_ROOT=/srv/funkwhale/data/static") is True
    assert f.contains("MUSIC_DIRECTORY_PATH=/srv/funkwhale/data/music") is True
    assert f.contains("MUSIC_DIRECTORY_SERVE_PATH=/srv/funkwhale/data/music") is True
    assert f.contains("FUNKWHALE_HOSTNAME=yourdomain.funkwhale") is True
    assert f.contains("FUNKWHALE_PROTOCOL=https") is True
    assert f.contains("DJANGO_SECRET_KEY=") is True
    assert f.contains("FUNKWHALE_API_IP=127.0.0.1") is True
    assert f.contains("FUNKWHALE_API_PORT=5000") is True
    assert f.contains("REVERSE_PROXY_TYPE=nginx") is True
    assert f.contains("DATABASE_URL=postgresql://funkwhale@:5432/funkwhale") is True
    assert f.contains("CACHE_URL=redis://127.0.0.1:6379/0") is True
    assert (
        f.contains("EMAIL_CONFIG=smtp+tls://user@:password@youremail.host:587") is True
    )
    assert f.contains("DEFAULT_FROM_EMAIL=noreply@yourdomain") is True
    assert f.contains("FUNKWHALE_FRONTEND_PATH=/srv/funkwhale/front/dist") is True
        f.contains("FUNKWHALE_SPA_HTML_ROOT=/srv/funkwhale/front/dist/index.html")
        is True
    )
    assert f.contains("NGINX_MAX_BODY_SIZE=100M") is True
    assert f.contains("DJANGO_SETTINGS_MODULE=config.settings.production") is True

    # additional vars
    assert f.contains("ADDITIONAL_VAR=1") is True
    assert f.contains("ADDITIONAL_VAR=2") is True


def test_frontend_download(host):
    f = host.file("/srv/funkwhale/front/dist/index.html")

    assert f.exists is True


def test_api_download(host):
    f = host.file("/srv/funkwhale/api/funkwhale_api/__init__.py")

    assert f.exists is True
    assert f.contains('__version__ = "0.19.0-rc2"') is True
Eliot Berriot's avatar
Eliot Berriot committed


def test_virtualenv(host):
    expected_packages = {"Django", "djangorestframework", "celery"}
    packages = host.pip_package.get_packages(
        pip_path="/srv/funkwhale/virtualenv/bin/pip"
    )
    names = set(packages.keys())

    intersection = expected_packages & names
    assert intersection == expected_packages