Add CLI and integration tests
This commit is contained in:
76
tests/unit/test_cli.py
Normal file
76
tests/unit/test_cli.py
Normal file
@@ -0,0 +1,76 @@
|
||||
import pytest
|
||||
from unittest.mock import patch, Mock
|
||||
from click.testing import CliRunner
|
||||
from pathlib import Path
|
||||
import tempfile
|
||||
import json
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def runner():
|
||||
return CliRunner()
|
||||
|
||||
|
||||
class TestCLI:
|
||||
def test_version_option(self, runner):
|
||||
from depaudit.cli import main
|
||||
|
||||
result = runner.invoke(main, ["--version"])
|
||||
assert result.exit_code == 0
|
||||
assert "1.0.0" in result.output
|
||||
|
||||
def test_audit_command_exists(self, runner):
|
||||
from depaudit.cli import main
|
||||
|
||||
result = runner.invoke(main, ["--help"])
|
||||
assert result.exit_code == 0
|
||||
assert "audit" in result.output.lower()
|
||||
|
||||
|
||||
class TestAuditCommand:
|
||||
def test_audit_no_path(self, runner):
|
||||
from depaudit.cli import audit
|
||||
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
result = runner.invoke(audit, [tmpdir])
|
||||
assert result.exit_code == 0
|
||||
|
||||
def test_audit_single_file(self, runner):
|
||||
from depaudit.cli import audit
|
||||
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
pkg_file = Path(tmpdir) / "package.json"
|
||||
pkg_file.write_text(json.dumps({
|
||||
"name": "test",
|
||||
"version": "1.0.0",
|
||||
"dependencies": {}
|
||||
}))
|
||||
|
||||
result = runner.invoke(audit, [str(pkg_file)])
|
||||
assert result.exit_code == 0
|
||||
|
||||
|
||||
class TestGenerateCICDCommand:
|
||||
def test_generate_github_workflow(self, runner):
|
||||
from depaudit.cli import generate_cicd
|
||||
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
result = runner.invoke(generate_cicd, ["github", tmpdir])
|
||||
assert result.exit_code == 0
|
||||
|
||||
|
||||
class TestParseCommand:
|
||||
def test_parse_package_json(self, runner):
|
||||
from depaudit.cli import parse
|
||||
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
pkg_file = Path(tmpdir) / "package.json"
|
||||
pkg_file.write_text(json.dumps({
|
||||
"name": "test-project",
|
||||
"version": "1.0.0",
|
||||
"dependencies": {"express": "^4.0.0"}
|
||||
}))
|
||||
|
||||
result = runner.invoke(parse, [str(pkg_file)])
|
||||
assert result.exit_code == 0
|
||||
assert "test-project" in result.output
|
||||
Reference in New Issue
Block a user