Skip to content
Snippets Groups Projects
test_default.py 3.46 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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