Files
gitpulse/tests/conftest.py
7000pctAUTO b0cce65cd8
Some checks failed
CI / test (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / type-check (push) Has been cancelled
fix: resolve CI test failures and update test configuration
2026-02-04 16:21:22 +00:00

238 lines
5.7 KiB
Python

"""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()
@pytest.fixture
def sample_request():
"""Create a sample recorded request."""
from api_snapshot.recorder.recorder import RecordedRequest
return RecordedRequest(
method="GET",
url="https://api.example.com/users",
headers={"Accept": "application/json"},
body=None,
)
@pytest.fixture
def sample_response():
"""Create a sample recorded response."""
from api_snapshot.recorder.recorder import RecordedResponse
return RecordedResponse(
status_code=200,
headers={"Content-Type": "application/json"},
body='{"success": true}',
latency_ms=150,
)
@pytest.fixture
def sample_pair(sample_request, sample_response):
"""Create a sample request-response pair."""
from api_snapshot.recorder.recorder import RequestResponsePair
return RequestResponsePair(
request=sample_request,
response=sample_response,
)
@pytest.fixture
def sample_snapshot(sample_pair):
"""Create a sample snapshot."""
from api_snapshot.snapshot.manager import Snapshot, SnapshotMetadata
meta = SnapshotMetadata(description="Test snapshot")
return Snapshot(metadata=meta, requests=[sample_pair])
@pytest.fixture
def sample_snapshot_dict():
"""Create a sample snapshot dictionary."""
return {
"metadata": {
"version": "1.0",
"timestamp": "2024-01-01T00:00:00",
"description": "Test snapshot",
"source_url": "https://api.example.com",
"latency_mode": "original",
"custom_latency_ms": None,
"tags": []
},
"requests": [
{
"request": {
"method": "GET",
"url": "https://api.example.com/users",
"headers": {"Accept": "application/json"},
"body": None,
"timestamp": "2024-01-01T00:00:00"
},
"response": {
"status_code": 200,
"headers": {"Content-Type": "application/json"},
"body": '{"success": true}',
"latency_ms": 150
}
}
]
}
@pytest.fixture
def snapshot_manager(temp_dir):
"""Create a snapshot manager with a test snapshot."""
from api_snapshot.snapshot.manager import SnapshotManager
manager = SnapshotManager(temp_dir)
return manager
@pytest.fixture
def snapshot_file(temp_dir, sample_pair):
"""Create a snapshot file for testing."""
from api_snapshot.snapshot.manager import SnapshotManager
import json
manager = SnapshotManager(temp_dir)
manager.save_snapshot(
name="test_snapshot",
requests=[sample_pair, sample_pair],
description="Test snapshot"
)
path = manager._get_path("test_snapshot")
return path