71 lines
3.1 KiB
Java
71 lines
3.1 KiB
Java
package ru.pdguard;
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
import ru.pdguard.config.SystemPolicy;
|
|
import ru.pdguard.core.PayloadStore;
|
|
import ru.pdguard.core.Pipeline;
|
|
import ru.pdguard.detect.RuleRegistry;
|
|
import ru.pdguard.mask.Masker;
|
|
|
|
import java.util.UUID;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
|
|
|
/** Документы, удостоверяющие личность, помимо паспорта РФ. */
|
|
class IdentityDocumentTest {
|
|
|
|
private final Pipeline pipeline =
|
|
new Pipeline(new RuleRegistry(), new Masker(), new PayloadStore(1_000_000L, 30));
|
|
|
|
private void assertHidden(String text, String secret) {
|
|
String masked = pipeline.process(text, UUID.randomUUID().toString(), SystemPolicy.DEFAULT);
|
|
assertFalse(masked.contains(secret), "не замаскировано: «" + secret + "» в ответе «" + masked + "»");
|
|
}
|
|
|
|
private void assertMasked(String text, String payloadId, String expected) {
|
|
assertEquals(expected, pipeline.process(text, payloadId, SystemPolicy.DEFAULT));
|
|
}
|
|
|
|
@Test
|
|
void masksForeignPassport() {
|
|
assertHidden("Загранпаспорт 75 1234567 действителен до 2030 года", "75 1234567");
|
|
}
|
|
|
|
@Test
|
|
void masksMilitaryId() {
|
|
assertHidden("Военный билет АБ 1234567 предъявлен", "АБ 1234567");
|
|
}
|
|
|
|
@Test
|
|
void masksBirthCertificate() {
|
|
assertHidden("Свидетельство о рождении II-МЮ № 123456", "II-МЮ № 123456");
|
|
}
|
|
|
|
@Test
|
|
void masksMedicalPolicy() {
|
|
assertHidden("Полис ОМС 1234567890123456 оформлен", "1234567890123456");
|
|
}
|
|
|
|
/**
|
|
* У загранпаспорта, военного билета и свидетельства о рождении серия короткая —
|
|
* две цифры или две буквы. Открой маска первые два знака, серия была бы видна
|
|
* целиком, поэтому у этих документов открыты только последние знаки номера.
|
|
*/
|
|
@Test
|
|
void hidesShortDocumentSeriesCompletely() {
|
|
assertMasked("Загранпаспорт 75 1234567", "fp-1", "Загранпаспорт ** *****67");
|
|
assertMasked("Военный билет АБ 1234567", "mil-1", "Военный билет ** *****67");
|
|
assertMasked("Свидетельство о рождении II-МЮ № 123456", "bc-1",
|
|
"Свидетельство о рождении **-** № ****56");
|
|
}
|
|
|
|
/** У паспорта РФ и водительского удостоверения серия из четырёх знаков — открыта половина. */
|
|
@Test
|
|
void keepsHalfOfFourCharacterSeries() {
|
|
assertMasked("Паспорт 4509 123456", "rf-1", "Паспорт 45** ****56");
|
|
assertMasked("Водительское удостоверение 9902 123456", "dl-1",
|
|
"Водительское удостоверение 99** ****56");
|
|
}
|
|
}
|