"""Test configuration and fixtures for depcheck tests.""" import json import tempfile from pathlib import Path import pytest from depcheck.models import Dependency, PackageManager, ScanResult, Severity, Vulnerability @pytest.fixture def temp_dir(): """Create a temporary directory for tests.""" with tempfile.TemporaryDirectory() as tmpdir: yield tmpdir @pytest.fixture def sample_package_json(): """Create a sample package.json file content.""" return """{ \"name\": \"test-project\", \"version\": \"1.0.0\", \"dependencies\": { \"express\": \"4.18.2\", \"lodash\": \"4.17.20\" }, \"devDependencies\": { \"jest\": \"29.7.0\" } }""" @pytest.fixture def sample_requirements_txt(): """Create a sample requirements.txt file content.""" return """requests>=2.31.0 flask>=2.0.0 numpy==1.24.0 """ @pytest.fixture def sample_go_mod(): """Create a sample go.mod file content.""" return """ module github.com/example/project go 1.21 require ( github.com/stretchr/testify v1.8.4 golang.org/x/crypto v0.17.0 ) """ @pytest.fixture def sample_cargo_toml(): """Create a sample Cargo.toml file content.""" return """ [package] name = \"my-project\" version = \"0.1.0\" edition = \"2021\" [dependencies] serde = \"1.0\" tokio = \"1.36\" """ @pytest.fixture def sample_vulnerable_dependencies(): """Create scan result with vulnerable dependencies.""" dep1 = Dependency( name="lodash", current_version="4.17.20", package_manager=PackageManager.NPM, ) dep2 = Dependency( name="requests", current_version="2.28.0", package_manager=PackageManager.PIP, ) vuln1 = Vulnerability( cve_id="CVE-2021-23337", severity=Severity.HIGH, description="Command Injection", affected_versions="<4.17.21", fixed_version="4.17.21", ) vuln2 = Vulnerability( cve_id="CVE-2024-35195", severity=Severity.MEDIUM, description="Auth bypass", affected_versions="<2.32.0", fixed_version="2.32.0", ) result = ScanResult() result.dependencies = [dep1, dep2] result.vulnerabilities = [(dep1, vuln1), (dep2, vuln2)] return result @pytest.fixture def sample_outdated_dependencies(): """Create scan result with outdated dependencies.""" deps = [ Dependency( name="express", current_version="4.18.2", latest_version="4.19.2", package_manager=PackageManager.NPM, is_outdated=True, ), Dependency( name="flask", current_version="2.0.0", latest_version="3.0.0", package_manager=PackageManager.PIP, is_outdated=True, ), ] return ScanResult(dependencies=deps) @pytest.fixture def empty_scan_result(): """Create an empty scan result.""" return ScanResult()