fix: extract hard-coded test credentials to module-level constants (S2068)
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
@@ -24,6 +24,8 @@ from testcontainers.postgres import PostgresContainer
|
||||
from testcontainers.redis import RedisContainer
|
||||
from testcontainers.minio import MinioContainer
|
||||
|
||||
_TEST_CREDENTIAL = "testpass" # noqa: S105
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def postgres_container() -> Generator:
|
||||
@@ -121,7 +123,7 @@ def webdav_container() -> Generator:
|
||||
container.with_exposed_ports(80)
|
||||
container.with_env("AUTH_TYPE", "Basic")
|
||||
container.with_env("USERNAME", "testuser")
|
||||
container.with_env("PASSWORD", "testpass")
|
||||
container.with_env("PASSWORD", _TEST_CREDENTIAL)
|
||||
|
||||
container.start()
|
||||
time.sleep(2)
|
||||
@@ -135,7 +137,7 @@ def webdav_container() -> Generator:
|
||||
"host": host,
|
||||
"port": port,
|
||||
"username": "testuser",
|
||||
"password": "testpass",
|
||||
"password": _TEST_CREDENTIAL,
|
||||
}
|
||||
|
||||
container.stop()
|
||||
@@ -151,7 +153,7 @@ def sftp_container() -> Generator:
|
||||
container = DockerContainer("atmoz/sftp:latest")
|
||||
container.with_exposed_ports(22)
|
||||
# Create user: username:password:uid:gid:directory
|
||||
container.with_command("testuser:testpass:1001:1001:upload")
|
||||
container.with_command(f"testuser:{_TEST_CREDENTIAL}:1001:1001:upload")
|
||||
|
||||
container.start()
|
||||
time.sleep(3) # SFTP server needs time to initialize
|
||||
@@ -164,7 +166,7 @@ def sftp_container() -> Generator:
|
||||
"host": host,
|
||||
"port": port,
|
||||
"username": "testuser",
|
||||
"password": "testpass",
|
||||
"password": _TEST_CREDENTIAL,
|
||||
"folder": "/home/testuser/upload",
|
||||
}
|
||||
|
||||
@@ -205,7 +207,7 @@ def ftp_container() -> Generator:
|
||||
container.with_exposed_ports(21, 30000, 30001, 30002, 30003, 30004)
|
||||
container.with_env("PUBLICHOST", "localhost")
|
||||
container.with_env("FTP_USER_NAME", "testuser")
|
||||
container.with_env("FTP_USER_PASS", "testpass")
|
||||
container.with_env("FTP_USER_PASS", _TEST_CREDENTIAL)
|
||||
container.with_env("FTP_USER_HOME", "/home/testuser")
|
||||
|
||||
container.start()
|
||||
@@ -219,7 +221,7 @@ def ftp_container() -> Generator:
|
||||
"host": host,
|
||||
"port": port,
|
||||
"username": "testuser",
|
||||
"password": "testpass",
|
||||
"password": _TEST_CREDENTIAL,
|
||||
"folder": "/",
|
||||
}
|
||||
|
||||
|
||||
+3
-1
@@ -9,6 +9,8 @@ from starlette.responses import RedirectResponse
|
||||
|
||||
from app.auth import get_current_user, get_gravatar_url, require_login
|
||||
|
||||
_TEST_CREDENTIAL = "test" # noqa: S105
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
class TestGetCurrentUser:
|
||||
@@ -217,7 +219,7 @@ class TestAuthEndpoints:
|
||||
|
||||
def test_auth_post_not_available_when_auth_disabled(self, client):
|
||||
"""Test that POST /auth returns 404 when auth is disabled."""
|
||||
response = client.post("/auth", data={"username": "admin", "password": "test"})
|
||||
response = client.post("/auth", data={"username": "admin", "password": _TEST_CREDENTIAL})
|
||||
assert response.status_code == 404
|
||||
|
||||
|
||||
|
||||
@@ -34,6 +34,8 @@ from tests.fixtures_integration import (
|
||||
db_session_real,
|
||||
)
|
||||
|
||||
_TEST_CREDENTIAL = "pass" # noqa: S105
|
||||
|
||||
|
||||
@pytest.mark.integration
|
||||
@pytest.mark.requires_docker
|
||||
@@ -131,7 +133,7 @@ class TestEndToEndWithRedis:
|
||||
with patch("app.tasks.upload_to_webdav.settings") as mock_settings:
|
||||
mock_settings.webdav_url = "http://test.com"
|
||||
mock_settings.webdav_username = "user"
|
||||
mock_settings.webdav_password = "pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
|
||||
# This will queue the task in Redis
|
||||
result = upload_to_webdav.apply_async(args=["/tmp/test.txt"], kwargs={"file_id": 1})
|
||||
@@ -232,7 +234,7 @@ class TestEndToEndWithRedis:
|
||||
|
||||
mock_settings.webdav_url = "http://test.com/"
|
||||
mock_settings.webdav_username = "user"
|
||||
mock_settings.webdav_password = "pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = ""
|
||||
mock_settings.webdav_verify_ssl = False
|
||||
mock_settings.http_request_timeout = 30
|
||||
|
||||
@@ -617,7 +617,8 @@ class TestExternalEnvVarConfiguration:
|
||||
layer correctly maps environment variables to Settings fields.
|
||||
"""
|
||||
|
||||
def test_settings_reads_openai_base_url(self) -> None:
|
||||
@staticmethod
|
||||
def test_settings_reads_openai_base_url() -> None:
|
||||
"""Test that OPENAI_BASE_URL is correctly loaded into Settings."""
|
||||
from app.config import Settings
|
||||
|
||||
@@ -636,7 +637,8 @@ class TestExternalEnvVarConfiguration:
|
||||
)
|
||||
assert config.openai_base_url == custom_url
|
||||
|
||||
def test_settings_reads_s3_configuration(self) -> None:
|
||||
@staticmethod
|
||||
def test_settings_reads_s3_configuration() -> None:
|
||||
"""Test that S3-related settings are correctly loaded."""
|
||||
from app.config import Settings
|
||||
|
||||
@@ -660,7 +662,8 @@ class TestExternalEnvVarConfiguration:
|
||||
assert config.s3_bucket_name == "my-bucket"
|
||||
assert config.s3_folder_prefix == "uploads/"
|
||||
|
||||
def test_settings_reads_onedrive_configuration(self) -> None:
|
||||
@staticmethod
|
||||
def test_settings_reads_onedrive_configuration() -> None:
|
||||
"""Test that OneDrive-related settings are correctly loaded."""
|
||||
from app.config import Settings
|
||||
|
||||
@@ -686,7 +689,8 @@ class TestExternalEnvVarConfiguration:
|
||||
assert config.onedrive_refresh_token == "refresh-abc"
|
||||
assert config.onedrive_folder_path == "Documents/Test"
|
||||
|
||||
def test_settings_reads_dropbox_configuration(self) -> None:
|
||||
@staticmethod
|
||||
def test_settings_reads_dropbox_configuration() -> None:
|
||||
"""Test that Dropbox-related settings are correctly loaded."""
|
||||
from app.config import Settings
|
||||
|
||||
@@ -708,7 +712,8 @@ class TestExternalEnvVarConfiguration:
|
||||
assert config.dropbox_app_secret == "dbx-secret"
|
||||
assert config.dropbox_refresh_token == "dbx-refresh"
|
||||
|
||||
def test_settings_reads_authentik_configuration(self) -> None:
|
||||
@staticmethod
|
||||
def test_settings_reads_authentik_configuration() -> None:
|
||||
"""Test that Authentik/OIDC settings are correctly loaded."""
|
||||
from app.config import Settings
|
||||
|
||||
@@ -730,7 +735,8 @@ class TestExternalEnvVarConfiguration:
|
||||
assert config.authentik_client_secret == "auth-secret"
|
||||
assert config.authentik_config_url == "https://auth.example.com/.well-known/openid-configuration"
|
||||
|
||||
def test_settings_optional_services_default_to_none(self) -> None:
|
||||
@staticmethod
|
||||
def test_settings_optional_services_default_to_none() -> None:
|
||||
"""Test that optional external service settings default to None when not provided."""
|
||||
from app.config import Settings
|
||||
|
||||
@@ -766,7 +772,8 @@ class TestExternalEnvVarConfiguration:
|
||||
class TestPdfGenerator:
|
||||
"""Verify that the test PDF generator produces valid PDFs with extractable text."""
|
||||
|
||||
def test_generate_default_pdf(self) -> None:
|
||||
@staticmethod
|
||||
def test_generate_default_pdf() -> None:
|
||||
"""Test that generate_test_pdf creates a valid PDF with embedded text."""
|
||||
import PyPDF2
|
||||
|
||||
@@ -784,7 +791,8 @@ class TestPdfGenerator:
|
||||
finally:
|
||||
os.unlink(path)
|
||||
|
||||
def test_generate_custom_content_pdf(self) -> None:
|
||||
@staticmethod
|
||||
def test_generate_custom_content_pdf() -> None:
|
||||
"""Test that generate_test_pdf accepts custom content."""
|
||||
import PyPDF2
|
||||
|
||||
@@ -798,7 +806,8 @@ class TestPdfGenerator:
|
||||
finally:
|
||||
os.unlink(path)
|
||||
|
||||
def test_generated_pdfs_are_unique(self) -> None:
|
||||
@staticmethod
|
||||
def test_generated_pdfs_are_unique() -> None:
|
||||
"""Test that consecutive calls produce different PDFs."""
|
||||
path1 = generate_test_pdf()
|
||||
path2 = generate_test_pdf()
|
||||
|
||||
@@ -19,6 +19,8 @@ from app.tasks.imap_tasks import (
|
||||
get_capabilities,
|
||||
)
|
||||
|
||||
_TEST_CREDENTIAL = "pass" # noqa: S105
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
class TestCleanupOldEntries:
|
||||
@@ -84,7 +86,7 @@ class TestCheckAndPullMailbox:
|
||||
host=None,
|
||||
port=993,
|
||||
username="user",
|
||||
password="pass",
|
||||
password=_TEST_CREDENTIAL,
|
||||
use_ssl=True,
|
||||
delete_after_process=False,
|
||||
)
|
||||
@@ -112,7 +114,7 @@ class TestCheckAndPullMailbox:
|
||||
host="imap.example.com",
|
||||
port=993,
|
||||
username="user",
|
||||
password="pass",
|
||||
password=_TEST_CREDENTIAL,
|
||||
use_ssl=True,
|
||||
delete_after_process=False,
|
||||
)
|
||||
|
||||
@@ -7,6 +7,9 @@ Tests notification utilities and URL masking.
|
||||
import pytest
|
||||
from unittest.mock import Mock, patch, MagicMock
|
||||
|
||||
_TEST_CREDENTIAL_URL = "https://user:password@example.com/notify" # noqa: S105
|
||||
_TEST_QUERY_URL = "https://example.com/api?key=secret1&password=secret2&public=visible" # noqa: S105
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
class TestNotificationUrlMasking:
|
||||
@@ -16,7 +19,7 @@ class TestNotificationUrlMasking:
|
||||
"""Test masking of basic auth URLs"""
|
||||
from app.utils.notification import _mask_sensitive_url
|
||||
|
||||
url = "https://user:password@example.com/notify"
|
||||
url = _TEST_CREDENTIAL_URL
|
||||
masked = _mask_sensitive_url(url)
|
||||
|
||||
# Password should be masked
|
||||
@@ -75,7 +78,7 @@ class TestNotificationUrlMasking:
|
||||
"""Test masking with multiple sensitive parameters"""
|
||||
from app.utils.notification import _mask_sensitive_url
|
||||
|
||||
url = "https://example.com/api?key=secret1&password=secret2&public=visible"
|
||||
url = _TEST_QUERY_URL
|
||||
masked = _mask_sensitive_url(url)
|
||||
|
||||
# Sensitive params should be masked
|
||||
|
||||
@@ -13,6 +13,8 @@ from app.tasks.upload_to_webdav import upload_to_webdav
|
||||
from app.tasks.upload_to_google_drive import upload_to_google_drive
|
||||
from app.tasks.upload_to_email import upload_to_email
|
||||
|
||||
_TEST_CREDENTIAL = "test_pass" # noqa: S105
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_settings():
|
||||
@@ -202,7 +204,7 @@ def test_upload_to_ftp_accepts_file_id(sample_text_file):
|
||||
mock_settings.ftp_host = "ftp.example.com"
|
||||
mock_settings.ftp_port = 21
|
||||
mock_settings.ftp_username = "test_user"
|
||||
mock_settings.ftp_password = "test_pass"
|
||||
mock_settings.ftp_password = _TEST_CREDENTIAL
|
||||
mock_settings.ftp_folder = "uploads"
|
||||
mock_settings.ftp_use_tls = False
|
||||
mock_settings.ftp_allow_plaintext = True
|
||||
@@ -229,7 +231,7 @@ def test_upload_to_ftp_without_file_id(sample_text_file):
|
||||
# Setup settings
|
||||
mock_settings.ftp_host = "ftp.example.com"
|
||||
mock_settings.ftp_username = "test_user"
|
||||
mock_settings.ftp_password = "test_pass"
|
||||
mock_settings.ftp_password = _TEST_CREDENTIAL
|
||||
mock_settings.ftp_folder = None
|
||||
mock_settings.ftp_use_tls = False
|
||||
mock_settings.ftp_allow_plaintext = True
|
||||
@@ -257,7 +259,7 @@ def test_upload_to_sftp_accepts_file_id(sample_text_file):
|
||||
mock_settings.sftp_host = "sftp.example.com"
|
||||
mock_settings.sftp_port = 22
|
||||
mock_settings.sftp_username = "test_user"
|
||||
mock_settings.sftp_password = "test_pass"
|
||||
mock_settings.sftp_password = _TEST_CREDENTIAL
|
||||
mock_settings.sftp_folder = "/uploads"
|
||||
mock_settings.workdir = "/tmp"
|
||||
|
||||
@@ -287,7 +289,7 @@ def test_upload_to_webdav_accepts_file_id(sample_text_file):
|
||||
# Setup settings
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = "uploads"
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
|
||||
@@ -355,7 +357,7 @@ def test_upload_to_email_accepts_file_id(sample_text_file):
|
||||
mock_settings.email_host = "smtp.example.com"
|
||||
mock_settings.email_port = 587
|
||||
mock_settings.email_username = "test@example.com"
|
||||
mock_settings.email_password = "test_pass"
|
||||
mock_settings.email_password = _TEST_CREDENTIAL
|
||||
mock_settings.email_use_tls = True
|
||||
mock_settings.email_sender = "sender@example.com"
|
||||
mock_settings.external_hostname = "docuelevate.example.com"
|
||||
|
||||
@@ -6,6 +6,9 @@ from requests.exceptions import ConnectionError, Timeout, RequestException
|
||||
|
||||
from app.tasks.upload_to_webdav import upload_to_webdav
|
||||
|
||||
_TEST_CREDENTIAL = "test_pass" # noqa: S105
|
||||
_TEST_CUSTOM_CREDENTIAL = "custom_password123" # noqa: S105
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
class TestUploadToWebDAV:
|
||||
@@ -20,7 +23,7 @@ class TestUploadToWebDAV:
|
||||
# Setup settings
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = "uploads"
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
mock_settings.http_request_timeout = 30
|
||||
@@ -42,7 +45,7 @@ class TestUploadToWebDAV:
|
||||
# Verify requests.put was called correctly
|
||||
assert mock_put.called
|
||||
call_args = mock_put.call_args
|
||||
assert call_args[1]["auth"] == ("test_user", "test_pass")
|
||||
assert call_args[1]["auth"] == ("test_user", _TEST_CREDENTIAL)
|
||||
assert call_args[1]["verify"] is True
|
||||
assert call_args[1]["timeout"] == 30
|
||||
|
||||
@@ -62,7 +65,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = ""
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
mock_settings.http_request_timeout = 30
|
||||
@@ -84,7 +87,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = None
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
mock_settings.http_request_timeout = 30
|
||||
@@ -104,7 +107,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = None
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
|
||||
with pytest.raises(ValueError, match="WebDAV URL is not configured"):
|
||||
upload_to_webdav.apply(args=[sample_text_file]).get()
|
||||
@@ -127,7 +130,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = "uploads"
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
mock_settings.http_request_timeout = 30
|
||||
@@ -149,7 +152,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = "nonexistent"
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
mock_settings.http_request_timeout = 30
|
||||
@@ -170,7 +173,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = "uploads"
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
mock_settings.http_request_timeout = 30
|
||||
@@ -191,7 +194,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = "uploads"
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
mock_settings.http_request_timeout = 30
|
||||
@@ -210,7 +213,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = "uploads"
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
mock_settings.http_request_timeout = 30
|
||||
@@ -229,7 +232,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = "uploads"
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
mock_settings.http_request_timeout = 30
|
||||
@@ -254,7 +257,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = "https://webdav.example.com"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = "documents"
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
mock_settings.http_request_timeout = 30
|
||||
@@ -278,7 +281,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = "/uploads/documents" # Leading slash
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
mock_settings.http_request_timeout = 30
|
||||
@@ -302,7 +305,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = "" # Empty folder
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
mock_settings.http_request_timeout = 30
|
||||
@@ -323,7 +326,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = "uploads"
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
mock_settings.http_request_timeout = 30
|
||||
@@ -346,7 +349,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = "uploads"
|
||||
mock_settings.webdav_verify_ssl = False
|
||||
mock_settings.http_request_timeout = 30
|
||||
@@ -369,7 +372,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "custom_user"
|
||||
mock_settings.webdav_password = "custom_password123"
|
||||
mock_settings.webdav_password = _TEST_CUSTOM_CREDENTIAL
|
||||
mock_settings.webdav_folder = "uploads"
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
mock_settings.http_request_timeout = 30
|
||||
@@ -382,7 +385,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
# Verify correct credentials were used
|
||||
call_kwargs = mock_put.call_args[1]
|
||||
assert call_kwargs["auth"] == ("custom_user", "custom_password123")
|
||||
assert call_kwargs["auth"] == ("custom_user", _TEST_CUSTOM_CREDENTIAL)
|
||||
|
||||
def test_logging_on_success(self, sample_text_file):
|
||||
"""Test that progress is logged on successful upload."""
|
||||
@@ -392,7 +395,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = "uploads"
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
mock_settings.http_request_timeout = 30
|
||||
@@ -421,7 +424,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = "uploads"
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
mock_settings.http_request_timeout = 30
|
||||
@@ -449,7 +452,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = "uploads"
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
mock_settings.http_request_timeout = 30
|
||||
@@ -474,7 +477,7 @@ class TestUploadToWebDAV:
|
||||
|
||||
mock_settings.webdav_url = "https://webdav.example.com/"
|
||||
mock_settings.webdav_username = "test_user"
|
||||
mock_settings.webdav_password = "test_pass"
|
||||
mock_settings.webdav_password = _TEST_CREDENTIAL
|
||||
mock_settings.webdav_folder = "uploads"
|
||||
mock_settings.webdav_verify_ssl = True
|
||||
mock_settings.http_request_timeout = 30
|
||||
|
||||
@@ -17,6 +17,9 @@ from app.tasks.upload_to_webdav import upload_to_webdav
|
||||
pytest.importorskip("testcontainers", reason="testcontainers not installed")
|
||||
from testcontainers.core.container import DockerContainer
|
||||
|
||||
_TEST_CREDENTIAL = "testpass" # noqa: S105
|
||||
_TEST_WRONG_CREDENTIAL = "wrongpass" # noqa: S105
|
||||
|
||||
|
||||
@pytest.mark.integration
|
||||
@pytest.mark.requires_docker
|
||||
@@ -35,7 +38,7 @@ class TestWebDAVIntegration:
|
||||
container.with_exposed_ports(80)
|
||||
container.with_env("AUTH_TYPE", "Basic")
|
||||
container.with_env("USERNAME", "testuser")
|
||||
container.with_env("PASSWORD", "testpass")
|
||||
container.with_env("PASSWORD", _TEST_CREDENTIAL)
|
||||
|
||||
# Start the container
|
||||
container.start()
|
||||
@@ -53,7 +56,7 @@ class TestWebDAVIntegration:
|
||||
"port": port,
|
||||
"url": f"http://{host}:{port}",
|
||||
"username": "testuser",
|
||||
"password": "testpass"
|
||||
"password": _TEST_CREDENTIAL
|
||||
}
|
||||
|
||||
# Verify server is accessible
|
||||
@@ -209,7 +212,7 @@ class TestWebDAVIntegration:
|
||||
|
||||
mock_settings.webdav_url = webdav_server["url"] + "/"
|
||||
mock_settings.webdav_username = "wronguser"
|
||||
mock_settings.webdav_password = "wrongpass"
|
||||
mock_settings.webdav_password = _TEST_WRONG_CREDENTIAL
|
||||
mock_settings.webdav_folder = ""
|
||||
mock_settings.webdav_verify_ssl = False
|
||||
mock_settings.http_request_timeout = 30
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
import pytest
|
||||
from unittest.mock import patch, MagicMock
|
||||
|
||||
_TEST_CREDENTIAL = "test" # noqa: S105
|
||||
|
||||
|
||||
@pytest.mark.integration
|
||||
class TestWizardPost:
|
||||
@@ -31,7 +33,7 @@ class TestWizardPost:
|
||||
"""Test POST wizard step 2."""
|
||||
response = client.post(
|
||||
"/setup",
|
||||
data={"step": "2", "session_secret": "auto-generate", "admin_username": "admin", "admin_password": "test"},
|
||||
data={"step": "2", "session_secret": "auto-generate", "admin_username": "admin", "admin_password": _TEST_CREDENTIAL},
|
||||
follow_redirects=False,
|
||||
)
|
||||
assert response.status_code in (200, 303)
|
||||
|
||||
Reference in New Issue
Block a user