Skip to content

Commit a2cc8f5

Browse files
committed
Test case: ensure SSNs are never logged in plaintext
1 parent dd80756 commit a2cc8f5

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.nacha.paymentsystem;
2+
3+
public class ChildSupportPayment {
4+
private String name;
5+
private String ssn; // exposed in toString()
6+
7+
public ChildSupportPayment(String johnDoe, String ssn, String number, String number1, double v) {}
8+
9+
@Override
10+
public String toString() {
11+
return "Payment: " + name + " SSN: " + ssn; // SSN is visible
12+
13+
}
14+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package org.nacha.paymentsystem.unit;
2+
3+
import static org.junit.jupiter.api.Assertions.assertFalse;
4+
import org.junit.jupiter.api.Test;
5+
import static org.mockito.Mockito.mock;
6+
import static org.mockito.Mockito.verify;
7+
import java.util.logging.Logger;
8+
9+
public class PaymentSecurityTest {
10+
11+
@Test
12+
void testSSNIsNotLoggedInPlaintext() {
13+
//arrange
14+
Logger mockLogger = mock(Logger.class);
15+
String ssn = "123-45-8879";
16+
org.nacha.paymentsystem.ChildSupportPayment payment = new org.nacha.paymentsystem.ChildSupportPayment(
17+
"John Doe", ssn, "987780874", "987654321", 500.00
18+
);
19+
20+
// act: simulate logging the payment object
21+
// assume the system logs payment details internally
22+
mockLogger.info(payment.toString());
23+
24+
// assert: verify the log does not contain raw ssn
25+
String loggedMessage = payment.toString();
26+
assertFalse(loggedMessage.contains(ssn),
27+
"SSN was logged in plaintext!");
28+
}
29+
}

0 commit comments

Comments
 (0)