1+ package com .cyberrisk .cyber_risk_platform ;
2+
3+ import com .cyberrisk .cyber_risk_platform .model .Company ;
4+ import com .cyberrisk .cyber_risk_platform .service .RiskScoringService ;
5+ import org .junit .jupiter .api .BeforeEach ;
6+ import org .junit .jupiter .api .Test ;
7+
8+ import static org .junit .jupiter .api .Assertions .assertEquals ;
9+
10+ class RiskScoringServiceTest {
11+
12+ private RiskScoringService riskScoringService ;
13+
14+ @ BeforeEach
15+ void setUp () {
16+ riskScoringService = new RiskScoringService ();
17+ }
18+
19+ @ Test
20+ void perfectScore_whenAllControlsPresent () {
21+ Company company = new Company ();
22+ company .setHasFirewall (true );
23+ company .setHasAntiVirus (true );
24+ company .setEncryptsData (true );
25+ company .setHasIncidentResponsePlan (true );
26+ company .setHasSecurityTraining (true );
27+ company .setPreviousBreaches (0 );
28+
29+ int score = riskScoringService .calculateRiskScore (company );
30+
31+ assertEquals (100 , score );
32+ }
33+
34+ @ Test
35+ void deducts20_whenNoFirewall () {
36+ Company company = new Company ();
37+ company .setHasFirewall (false );
38+ company .setHasAntiVirus (true );
39+ company .setEncryptsData (true );
40+ company .setHasIncidentResponsePlan (true );
41+ company .setHasSecurityTraining (true );
42+ company .setPreviousBreaches (0 );
43+
44+ int score = riskScoringService .calculateRiskScore (company );
45+
46+ assertEquals (80 , score );
47+ }
48+
49+ @ Test
50+ void deducts15_whenNoAntivirus () {
51+ Company company = new Company ();
52+ company .setHasFirewall (true );
53+ company .setHasAntiVirus (false );
54+ company .setEncryptsData (true );
55+ company .setHasIncidentResponsePlan (true );
56+ company .setHasSecurityTraining (true );
57+ company .setPreviousBreaches (0 );
58+
59+ int score = riskScoringService .calculateRiskScore (company );
60+
61+ assertEquals (85 , score );
62+ }
63+
64+ @ Test
65+ void deducts10PerBreach_whenPreviousBreaches () {
66+ Company company = new Company ();
67+ company .setHasFirewall (true );
68+ company .setHasAntiVirus (true );
69+ company .setEncryptsData (true );
70+ company .setHasIncidentResponsePlan (true );
71+ company .setHasSecurityTraining (true );
72+ company .setPreviousBreaches (3 );
73+
74+ int score = riskScoringService .calculateRiskScore (company );
75+
76+ assertEquals (70 , score );
77+ }
78+
79+ @ Test
80+ void scoreNeverGoesBelowZero_whenManyDeductions () {
81+ Company company = new Company ();
82+ company .setHasFirewall (false );
83+ company .setHasAntiVirus (false );
84+ company .setEncryptsData (false );
85+ company .setHasIncidentResponsePlan (false );
86+ company .setHasSecurityTraining (false );
87+ company .setPreviousBreaches (100 );
88+
89+ int score = riskScoringService .calculateRiskScore (company );
90+
91+ assertEquals (0 , score );
92+ }
93+
94+ @ Test
95+ void getRiskLevel_returnsCorrectLevel () {
96+ assertEquals ("LOW" , riskScoringService .getRiskLevel (85 ));
97+ assertEquals ("MEDIUM" , riskScoringService .getRiskLevel (65 ));
98+ assertEquals ("HIGH" , riskScoringService .getRiskLevel (45 ));
99+ assertEquals ("CRITICAL" , riskScoringService .getRiskLevel (20 ));
100+ }
101+ }
0 commit comments