Add unit tests for checks and output
This commit is contained in:
121
tests/unit/test_checks.py
Normal file
121
tests/unit/test_checks.py
Normal file
@@ -0,0 +1,121 @@
|
||||
import pytest
|
||||
from unittest.mock import Mock, patch
|
||||
from depaudit.utils.version import (
|
||||
parse_version,
|
||||
compare_versions,
|
||||
is_version_outdated,
|
||||
extract_version_from_specifier,
|
||||
)
|
||||
|
||||
|
||||
class TestVersionParsing:
|
||||
def test_parse_version_valid(self):
|
||||
v = parse_version("1.2.3")
|
||||
assert v is not None
|
||||
assert str(v) == "1.2.3"
|
||||
|
||||
def test_parse_version_with_prerelease(self):
|
||||
v = parse_version("1.2.3-beta.1")
|
||||
assert v is not None
|
||||
|
||||
def test_parse_version_invalid(self):
|
||||
v = parse_version("not-a-version")
|
||||
assert v is None
|
||||
|
||||
|
||||
class TestVersionComparison:
|
||||
def test_compare_versions_equal(self):
|
||||
assert compare_versions("1.2.3", "1.2.3") == 0
|
||||
|
||||
def test_compare_versions_greater(self):
|
||||
assert compare_versions("2.0.0", "1.2.3") == 1
|
||||
|
||||
def test_compare_versions_less(self):
|
||||
assert compare_versions("1.2.3", "2.0.0") == -1
|
||||
|
||||
|
||||
class TestIsVersionOutdated:
|
||||
def test_outdated_version(self):
|
||||
assert is_version_outdated("1.0.0", "1.1.0") is True
|
||||
|
||||
def test_current_version(self):
|
||||
assert is_version_outdated("1.1.0", "1.1.0") is False
|
||||
|
||||
|
||||
class TestLicenseChecking:
|
||||
def test_normalize_mit_license(self):
|
||||
from depaudit.checks.licenses import normalize_license
|
||||
assert normalize_license("MIT") == "mit"
|
||||
|
||||
def test_normalize_apache_license(self):
|
||||
from depaudit.checks.licenses import normalize_license
|
||||
assert normalize_license("Apache-2.0") == "apache-2.0"
|
||||
|
||||
def test_normalize_gpl_license(self):
|
||||
from depaudit.checks.licenses import normalize_license
|
||||
assert normalize_license("GPL-3.0") == "gpl-3.0"
|
||||
|
||||
def test_check_license_allowlist(self):
|
||||
from depaudit.checks.licenses import check_license
|
||||
license_info = check_license("test-package", "MIT")
|
||||
assert license_info.license_type == "mit"
|
||||
assert license_info.is_spdx_compliant is True
|
||||
|
||||
|
||||
class TestValidateLicenseCompliance:
|
||||
def test_validate_allowed_license(self):
|
||||
from depaudit.checks.licenses import check_license, validate_license_compliance
|
||||
license_info = check_license("test-package", "MIT")
|
||||
is_compliant, message = validate_license_compliance(
|
||||
license_info, ["MIT"], ["GPL-3.0"]
|
||||
)
|
||||
assert is_compliant is True
|
||||
|
||||
def test_validate_blocked_license(self):
|
||||
from depaudit.checks.licenses import check_license, validate_license_compliance
|
||||
license_info = check_license("test-package", "GPL-3.0")
|
||||
is_compliant, message = validate_license_compliance(
|
||||
license_info, ["MIT"], ["GPL-3.0"]
|
||||
)
|
||||
assert is_compliant is False
|
||||
|
||||
|
||||
class TestOutdatedChecking:
|
||||
@patch("depaudit.checks.outdated.NPMClient.get_latest_version")
|
||||
def test_check_outdated_package(self, mock_get_latest):
|
||||
mock_get_latest.return_value = "4.18.0"
|
||||
|
||||
from depaudit.checks.outdated import check_outdated
|
||||
result = check_outdated("express", "4.17.1", "javascript")
|
||||
|
||||
assert result is not None
|
||||
assert result.package_name == "express"
|
||||
assert result.latest_version == "4.18.0"
|
||||
assert result.minor_available is True
|
||||
|
||||
|
||||
class TestVulnerabilityChecker:
|
||||
def test_vulnerability_to_dict(self):
|
||||
from depaudit.checks.vulnerabilities import Vulnerability
|
||||
|
||||
vuln = Vulnerability(
|
||||
id="CVE-2023-0001",
|
||||
package_name="test-package",
|
||||
current_version="1.0.0",
|
||||
severity="high",
|
||||
title="Test Vulnerability",
|
||||
description="A test vulnerability",
|
||||
affected_versions=["<1.1.0"],
|
||||
fixed_version="1.1.0",
|
||||
published="2023-01-01",
|
||||
modified="2023-01-02",
|
||||
cvss_score=7.5,
|
||||
cwe=["CWE-79"],
|
||||
references=["https://example.com"],
|
||||
source="OSV",
|
||||
)
|
||||
|
||||
result = vuln.to_dict()
|
||||
|
||||
assert result["id"] == "CVE-2023-0001"
|
||||
assert result["severity"] == "high"
|
||||
Reference in New Issue
Block a user