Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit d9a8e5e

Browse files
author
FredrikSchäferVitagroup
committed
SORMAS-Foundation#3195 fix to match latest state of development
1 parent de81472 commit d9a8e5e

4 files changed

Lines changed: 29 additions & 28 deletions

File tree

sormas-backend/src/main/java/de/symeda/sormas/backend/externaljournal/ExternalJournalFacadeEjb.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ public PatientDiaryRegisterResult registerPatientDiaryPerson(PersonDto person) {
3737

3838
@Override
3939
public PatientDiaryPersonValidation validatePatientDiaryPerson(PersonDto person) {
40-
return externalJournalService.validatePatientDiaryPerson(person);
40+
return externalJournalService.validatePatientDiaryPerson(person, false);
4141
}
4242

43-
4443
}

sormas-backend/src/main/java/de/symeda/sormas/backend/externaljournal/ExternalJournalService.java

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -312,19 +312,20 @@ public PatientDiaryRegisterResult registerPatientDiaryPerson(PersonDto person) {
312312
private Invocation.Builder getExternalDataPersonInvocationBuilder(String personUuid) {
313313
String externalDataUrl = configFacade.getPatientDiaryConfig().getProbandsUrl() + "/external-data/" + personUuid;
314314
Client client = ClientBuilder.newClient();
315-
return client.target(externalDataUrl)
316-
.request(MediaType.APPLICATION_JSON)
317-
.header("x-access-token", getPatientDiaryAuthToken());
315+
return client.target(externalDataUrl).request(MediaType.APPLICATION_JSON).header("x-access-token", getPatientDiaryAuthToken());
318316
}
319317

320318
/**
321-
* Check whether a person has valid data in order to be registered in the patient diary
322319
*
323320
* @param person
324321
* the person to validate
322+
* @param calledForTest
323+
* defines if method makes a call to a patient diary to check for availability of phone and mail addresses.
324+
* In tests, this call is not made.
325+
* This boolean should be false unless it's called from tests.
325326
* @return the result of the validation
326327
*/
327-
public PatientDiaryPersonValidation validatePatientDiaryPerson(PersonDto person) {
328+
public PatientDiaryPersonValidation validatePatientDiaryPerson(PersonDto person, boolean calledForTest) {
328329
String email = person.getEmailAddress();
329330
String phone = person.getPhone();
330331
boolean validEmail = true;
@@ -335,7 +336,9 @@ public PatientDiaryPersonValidation validatePatientDiaryPerson(PersonDto person)
335336
if (StringUtils.isNotEmpty(email)) {
336337
EmailValidator validator = EmailValidator.getInstance();
337338
validEmail = validator.isValid(email);
338-
emailAvailable = isEmailAvailable(person.getEmailAddress());
339+
if (!calledForTest) {
340+
emailAvailable = isEmailAvailable(person.getEmailAddress());
341+
}
339342
}
340343
if (StringUtils.isNotEmpty(phone)) {
341344
validPhone = false;
@@ -344,7 +347,9 @@ public PatientDiaryPersonValidation validatePatientDiaryPerson(PersonDto person)
344347
Phonenumber.PhoneNumber germanNumberProto = phoneUtil.parse(phone, "DE");
345348
validPhone = phoneUtil.isValidNumber(germanNumberProto);
346349
String internationalPhone = phoneUtil.format(germanNumberProto, PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL);
347-
phoneAvailable = isPhoneAvailable(internationalPhone);
350+
if (!calledForTest) {
351+
phoneAvailable = isPhoneAvailable(internationalPhone);
352+
}
348353
} catch (NumberParseException e) {
349354
logger.warn("NumberParseException was thrown: " + e.toString());
350355
}
@@ -361,14 +366,14 @@ public PatientDiaryPersonValidation validatePatientDiaryPerson(PersonDto person)
361366

362367
private boolean isEmailAvailable(String emailAddress) {
363368
return queryPatientDiary(EMAIL_QUERY_PARAM, emailAddress)
364-
.orElseThrow(() -> new RuntimeException("Could not query patient diary for Email address availability"))
365-
.getCount() == 0;
369+
.orElseThrow(() -> new RuntimeException("Could not query patient diary for Email address availability"))
370+
.getCount() == 0;
366371
}
367372

368373
private boolean isPhoneAvailable(String phone) {
369374
return queryPatientDiary(MOBILE_PHONE_QUERY_PARAM, phone)
370-
.orElseThrow(() -> new RuntimeException("Could not query patient diary for phone number availability"))
371-
.getCount() == 0;
375+
.orElseThrow(() -> new RuntimeException("Could not query patient diary for phone number availability"))
376+
.getCount() == 0;
372377
}
373378

374379
/**
@@ -387,10 +392,7 @@ public Optional<PatientDiaryPersonQueryResponse> queryPatientDiary(String key, S
387392
String encodedParams = URLEncoder.encode(queryParam, StandardCharsets.UTF_8.toString());
388393
String fullUrl = probandsUrl + "?q=" + encodedParams;
389394
Client client = ClientBuilder.newClient();
390-
Response response = client.target(fullUrl)
391-
.request(MediaType.APPLICATION_JSON)
392-
.header("x-access-token", getPatientDiaryAuthToken())
393-
.get();
395+
Response response = client.target(fullUrl).request(MediaType.APPLICATION_JSON).header("x-access-token", getPatientDiaryAuthToken()).get();
394396
if (response.getStatus() == NOT_FOUND_STATUS) {
395397
return Optional.empty();
396398
}

sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonFacadeEjb.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ public PersonDto savePerson(PersonDto source) throws ValidationRuntimeException
320320
private void handleExternalJournalPerson(PersonDto existingPerson, PersonDto updatedPerson) {
321321
SymptomJournalStatus status = existingPerson.getSymptomJournalStatus();
322322
if (SymptomJournalStatus.REGISTERED.equals(status) || SymptomJournalStatus.ACCEPTED.equals(status)) {
323-
PatientDiaryPersonValidation validationResult = externalJournalService.validatePatientDiaryPerson(updatedPerson);
323+
PatientDiaryPersonValidation validationResult = externalJournalService.validatePatientDiaryPerson(updatedPerson, false);
324324
if (!validationResult.isValid()) {
325325
throw new ValidationRuntimeException(validationResult.getMessage());
326326
}

sormas-backend/src/test/java/de/symeda/sormas/backend/externaljournal/ExternalJournalServiceTest.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public void givenValidEmailIsExportable() {
3030

3131
PersonDto person = new PersonDto();
3232
person.setEmailAddress("[email protected]");
33-
assertTrue(getExternalJournalService().validatePatientDiaryPerson(person).isValid());
33+
assertTrue(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
3434
}
3535

3636
@Test
@@ -43,9 +43,9 @@ public void givenValidEmailIsExportable() {
4343
public void givenInvalidEmailIsNotExportable() {
4444
PersonDto person = new PersonDto();
4545
person.setEmailAddress("test@test");
46-
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person).isValid());
46+
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
4747
person.setPhone("+496211218490");
48-
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person).isValid());
48+
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
4949
}
5050

5151
@Test
@@ -59,7 +59,7 @@ public void givenValidPhoneIsExportable() {
5959

6060
PersonDto person = new PersonDto();
6161
person.setPhone("+496211218490");
62-
assertTrue(getExternalJournalService().validatePatientDiaryPerson(person).isValid());
62+
assertTrue(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
6363
}
6464

6565
@Test
@@ -73,9 +73,9 @@ public void givenInvalidPhoneIsNotExportable() {
7373

7474
PersonDto person = new PersonDto();
7575
person.setPhone("0");
76-
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person).isValid());
76+
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
7777
person.setEmailAddress("[email protected]");
78-
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person).isValid());
78+
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
7979
}
8080

8181
@Test
@@ -91,7 +91,7 @@ public void givenNeitherEmailNorPhoneIsNotExportable() {
9191
person.setBirthdateYYYY(2000);
9292
person.setBirthdateMM(6);
9393
person.setBirthdateDD(1);
94-
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person).isValid());
94+
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
9595
}
9696

9797
@Test
@@ -106,12 +106,12 @@ public void givenIncompleteBirthdateIsNotExportable() {
106106
person.setEmailAddress("[email protected]");
107107
person.setPhone("+496211218490");
108108
person.setBirthdateYYYY(2000);
109-
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person).isValid());
109+
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
110110
person.setBirthdateMM(6);
111-
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person).isValid());
111+
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
112112
person.setBirthdateYYYY(null);
113113
person.setBirthdateDD(1);
114-
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person).isValid());
114+
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
115115
}
116116

117117
@Test

0 commit comments

Comments
 (0)