Coverage for tests / unit / enums / test_bandit_levels.py: 100%

30 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2026-04-03 18:53 +0000

1"""Tests for lintro.enums.bandit_levels module.""" 

2 

3from __future__ import annotations 

4 

5import pytest 

6from assertpy import assert_that 

7 

8from lintro.enums.bandit_levels import ( 

9 BanditConfidenceLevel, 

10 BanditSeverityLevel, 

11 normalize_bandit_confidence_level, 

12 normalize_bandit_severity_level, 

13) 

14 

15 

16@pytest.mark.parametrize( 

17 ("member", "expected"), 

18 [ 

19 (BanditSeverityLevel.LOW, "LOW"), 

20 (BanditSeverityLevel.MEDIUM, "MEDIUM"), 

21 (BanditSeverityLevel.HIGH, "HIGH"), 

22 ], 

23) 

24def test_severity_level_values(member: BanditSeverityLevel, expected: str) -> None: 

25 """BanditSeverityLevel members have correct uppercase string values. 

26 

27 Args: 

28 member: The BanditSeverityLevel enum member to test. 

29 expected: The expected string value. 

30 """ 

31 assert_that(member.value).is_equal_to(expected) 

32 

33 

34@pytest.mark.parametrize( 

35 ("member", "expected"), 

36 [ 

37 (BanditConfidenceLevel.LOW, "LOW"), 

38 (BanditConfidenceLevel.MEDIUM, "MEDIUM"), 

39 (BanditConfidenceLevel.HIGH, "HIGH"), 

40 ], 

41) 

42def test_confidence_level_values(member: BanditConfidenceLevel, expected: str) -> None: 

43 """BanditConfidenceLevel members have correct uppercase string values. 

44 

45 Args: 

46 member: The BanditConfidenceLevel enum member to test. 

47 expected: The expected string value. 

48 """ 

49 assert_that(member.value).is_equal_to(expected) 

50 

51 

52def test_normalize_severity_from_string() -> None: 

53 """normalize_bandit_severity_level converts string to BanditSeverityLevel.""" 

54 assert_that(normalize_bandit_severity_level("high")).is_equal_to( 

55 BanditSeverityLevel.HIGH, 

56 ) 

57 

58 

59def test_normalize_severity_case_insensitive() -> None: 

60 """normalize_bandit_severity_level is case-insensitive.""" 

61 assert_that(normalize_bandit_severity_level("HIGH")).is_equal_to( 

62 BanditSeverityLevel.HIGH, 

63 ) 

64 assert_that(normalize_bandit_severity_level("High")).is_equal_to( 

65 BanditSeverityLevel.HIGH, 

66 ) 

67 

68 

69def test_normalize_severity_passthrough() -> None: 

70 """normalize_bandit_severity_level returns BanditSeverityLevel unchanged.""" 

71 assert_that(normalize_bandit_severity_level(BanditSeverityLevel.HIGH)).is_equal_to( 

72 BanditSeverityLevel.HIGH, 

73 ) 

74 

75 

76def test_normalize_severity_invalid_raises() -> None: 

77 """normalize_bandit_severity_level raises ValueError for unknown level.""" 

78 with pytest.raises(ValueError, match="Unknown bandit severity level"): 

79 normalize_bandit_severity_level("critical") 

80 

81 

82def test_normalize_confidence_from_string() -> None: 

83 """normalize_bandit_confidence_level converts string to BanditConfidenceLevel.""" 

84 assert_that(normalize_bandit_confidence_level("high")).is_equal_to( 

85 BanditConfidenceLevel.HIGH, 

86 ) 

87 

88 

89def test_normalize_confidence_case_insensitive() -> None: 

90 """normalize_bandit_confidence_level is case-insensitive.""" 

91 assert_that(normalize_bandit_confidence_level("HIGH")).is_equal_to( 

92 BanditConfidenceLevel.HIGH, 

93 ) 

94 assert_that(normalize_bandit_confidence_level("High")).is_equal_to( 

95 BanditConfidenceLevel.HIGH, 

96 ) 

97 

98 

99def test_normalize_confidence_passthrough() -> None: 

100 """normalize_bandit_confidence_level returns BanditConfidenceLevel unchanged.""" 

101 assert_that( 

102 normalize_bandit_confidence_level(BanditConfidenceLevel.HIGH), 

103 ).is_equal_to(BanditConfidenceLevel.HIGH) 

104 

105 

106def test_normalize_confidence_invalid_raises() -> None: 

107 """normalize_bandit_confidence_level raises ValueError for unknown level.""" 

108 with pytest.raises(ValueError, match="Unknown bandit confidence level"): 

109 normalize_bandit_confidence_level("critical")