Add CLI and integration tests

This commit is contained in:
2026-02-02 21:37:39 +00:00
parent eb29bfe802
commit 79cead793c

View File

@@ -0,0 +1,136 @@
import pytest
from pathlib import Path
import tempfile
import json
class TestFullAudit:
def test_audit_single_js_project(self):
from depaudit.cli import audit
from click.testing import CliRunner
runner = CliRunner()
with tempfile.TemporaryDirectory() as tmpdir:
pkg_file = Path(tmpdir) / "package.json"
pkg_file.write_text(json.dumps({
"name": "test-js-project",
"version": "1.0.0",
"dependencies": {
"express": "^4.18.2",
"lodash": "^4.17.21"
},
"devDependencies": {
"jest": "^29.0.0"
}
}))
result = runner.invoke(audit, [str(tmpdir), "--format", "json"])
assert result.exit_code == 0
output = json.loads(result.output)
assert "vulnerabilities" in output
assert "outdated" in output
assert "summary" in output
def test_audit_single_python_project(self):
from depaudit.cli import audit
from click.testing import CliRunner
runner = CliRunner()
with tempfile.TemporaryDirectory() as tmpdir:
req_file = Path(tmpdir) / "requirements.txt"
req_file.write_text("""
requests>=2.28.0
flask>=2.0.0
pytest>=7.0.0
""")
result = runner.invoke(audit, [str(tmpdir), "--format", "json"])
assert result.exit_code == 0
output = json.loads(result.output)
assert "vulnerabilities" in output or "outdated" in output
def test_audit_mixed_project(self):
from depaudit.cli import audit
from click.testing import CliRunner
runner = CliRunner()
with tempfile.TemporaryDirectory() as tmpdir:
pkg_file = Path(tmpdir) / "package.json"
pkg_file.write_text(json.dumps({
"name": "mixed-project",
"version": "1.0.0",
"dependencies": {}
}))
req_file = Path(tmpdir) / "requirements.txt"
req_file.write_text("requests>=2.28.0\n")
go_mod = Path(tmpdir) / "go.mod"
go_mod.write_text("""
module github.com/test/mixed
go 1.20
require github.com/gin-gonic/gin v1.9.0
""")
cargo_file = Path(tmpdir) / "Cargo.toml"
cargo_file.write_text("""
[package]
name = "test"
version = "0.1.0"
[dependencies]
serde = "1.0"
""")
result = runner.invoke(audit, [str(tmpdir), "--format", "json"])
assert result.exit_code == 0
output = json.loads(result.output)
assert "scanned_count" in output
assert output["scanned_count"] >= 3
class TestCICDGeneration:
def test_generate_github_workflow_file(self):
from depaudit.cli import generate_cicd
from click.testing import CliRunner
runner = CliRunner()
with tempfile.TemporaryDirectory() as tmpdir:
result = runner.invoke(generate_cicd, [
"github",
tmpdir,
"--schedule", "0 0 * * 0"
])
assert result.exit_code == 0
workflow_dir = Path(tmpdir) / ".github" / "workflows"
if workflow_dir.exists():
workflow_file = workflow_dir / "depaudit.yml"
assert workflow_file.exists()
def test_generate_gitlab_ci_file(self):
from depaudit.cli import generate_cicd
from click.testing import CliRunner
runner = CliRunner()
with tempfile.TemporaryDirectory() as tmpdir:
result = runner.invoke(generate_cicd, ["gitlab", tmpdir])
assert result.exit_code == 0
gitlab_file = Path(tmpdir) / ".gitlab-ci.yml"
assert gitlab_file.exists()