77 lines
2.2 KiB
Python
77 lines
2.2 KiB
Python
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
|