krz/octosentry
macOS menu bar app to monitor GitHub security alerts
clone: git clone https://gitbay.org/krz/octosentry.git
1.1.1: octosentryTests/SeverityMappingTests.swift · raw
1//
2// SeverityMappingTests.swift
3// octosentryTests
4//
5
6import Testing
7@testable import octosentry
8
9struct SeverityMappingTests {
10
11 @Test func dependabotMapsGitHubVocabulary() {
12 #expect(SeverityMapping.dependabot("critical") == .critical)
13 #expect(SeverityMapping.dependabot("high") == .high)
14 #expect(SeverityMapping.dependabot("moderate") == .medium)
15 #expect(SeverityMapping.dependabot("medium") == .medium)
16 #expect(SeverityMapping.dependabot("low") == .low)
17 }
18
19 @Test func dependabotIsCaseInsensitive() {
20 #expect(SeverityMapping.dependabot("CRITICAL") == .critical)
21 #expect(SeverityMapping.dependabot("Moderate") == .medium)
22 }
23
24 @Test func dependabotFallsBackToMediumOnUnknownSeverity() {
25 #expect(SeverityMapping.dependabot("") == .medium)
26 #expect(SeverityMapping.dependabot("catastrophic") == .medium)
27 }
28
29 @Test func codeScanningPrefersSecuritySeverityLevel() {
30 // security_severity_level wins even when rule.severity disagrees.
31 #expect(SeverityMapping.codeScanning(securitySeverityLevel: "critical", ruleSeverity: "note") == .critical)
32 #expect(SeverityMapping.codeScanning(securitySeverityLevel: "high", ruleSeverity: "note") == .high)
33 #expect(SeverityMapping.codeScanning(securitySeverityLevel: "medium", ruleSeverity: "error") == .medium)
34 #expect(SeverityMapping.codeScanning(securitySeverityLevel: "low", ruleSeverity: "error") == .low)
35 }
36
37 @Test func codeScanningFallsBackToRuleSeverity() {
38 #expect(SeverityMapping.codeScanning(securitySeverityLevel: nil, ruleSeverity: "error") == .high)
39 #expect(SeverityMapping.codeScanning(securitySeverityLevel: nil, ruleSeverity: "warning") == .medium)
40 #expect(SeverityMapping.codeScanning(securitySeverityLevel: nil, ruleSeverity: "note") == .low)
41 }
42
43 @Test func codeScanningFallsBackToRuleSeverityWhenLevelIsUnrecognized() {
44 #expect(SeverityMapping.codeScanning(securitySeverityLevel: "unknown", ruleSeverity: "error") == .high)
45 }
46
47 @Test func codeScanningDefaultsToMediumWithNothingUsable() {
48 #expect(SeverityMapping.codeScanning(securitySeverityLevel: nil, ruleSeverity: nil) == .medium)
49 #expect(SeverityMapping.codeScanning(securitySeverityLevel: "unknown", ruleSeverity: "unknown") == .medium)
50 }
51
52 @Test func secretScanningTreatsActiveSecretsAsCritical() {
53 #expect(SeverityMapping.secretScanning(validity: "active") == .critical)
54 #expect(SeverityMapping.secretScanning(validity: "ACTIVE") == .critical)
55 }
56
57 @Test func secretScanningTreatsEverythingElseAsHigh() {
58 #expect(SeverityMapping.secretScanning(validity: nil) == .high)
59 #expect(SeverityMapping.secretScanning(validity: "inactive") == .high)
60 #expect(SeverityMapping.secretScanning(validity: "unknown") == .high)
61 }
62}