diff options
Diffstat (limited to 'src/test/java/dev/dnpm/oshelper/security/PersonPoolBasedPermissionEvaluatorTest.java')
| -rw-r--r-- | src/test/java/dev/dnpm/oshelper/security/PersonPoolBasedPermissionEvaluatorTest.java | 323 |
1 files changed, 178 insertions, 145 deletions
diff --git a/src/test/java/dev/dnpm/oshelper/security/PersonPoolBasedPermissionEvaluatorTest.java b/src/test/java/dev/dnpm/oshelper/security/PersonPoolBasedPermissionEvaluatorTest.java index 1390b76..01e3399 100644 --- a/src/test/java/dev/dnpm/oshelper/security/PersonPoolBasedPermissionEvaluatorTest.java +++ b/src/test/java/dev/dnpm/oshelper/security/PersonPoolBasedPermissionEvaluatorTest.java @@ -19,9 +19,16 @@ package dev.dnpm.oshelper.security; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.when; + import de.itc.onkostar.api.IOnkostarApi; import de.itc.onkostar.api.Patient; import de.itc.onkostar.api.Procedure; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -29,151 +36,177 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.security.core.Authentication; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.when; - @ExtendWith(MockitoExtension.class) class PersonPoolBasedPermissionEvaluatorTest { - private IOnkostarApi onkostarApi; - - private Authentication dummyAuthentication; - - private PersonPoolBasedPermissionEvaluator permissionEvaluator; - - @BeforeEach - void setup( - @Mock IOnkostarApi onkostarApi, - @Mock SecurityService securityService, - @Mock DummyAuthentication dummyAuthentication - ) { - this.onkostarApi = onkostarApi; - this.dummyAuthentication = dummyAuthentication; - - this.permissionEvaluator = new PersonPoolBasedPermissionEvaluator( - onkostarApi, securityService - ); - - when(securityService.getPersonPoolIdsForPermission(any(Authentication.class), any(PermissionType.class))).thenReturn(List.of("Pool2", "Pool3", "Pool5")); - } - - @Test - void testShouldGrantPermissionByPatientObject() { - var object = new Patient(onkostarApi); - object.setPersonPoolCode("Pool2"); - - var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ); - - assertThat(actual).isTrue(); - } - - @Test - void testShouldGrantPermissionByPatientIdAndType() { - doAnswer(invocationOnMock -> { - var object = new Patient(onkostarApi); - object.setPersonPoolCode("Pool2"); - return object; - }).when(onkostarApi).getPatient(anyInt()); - - var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, 123, PersonPoolBasedPermissionEvaluator.PATIENT, PermissionType.READ); - - assertThat(actual).isTrue(); - } - - @Test - void testShouldDenyPermissionByPatientObject() { - var object = new Patient(onkostarApi); - object.setPersonPoolCode("Pool1"); - - var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ); - - assertThat(actual).isFalse(); - } - - @Test - void testShouldDenyPermissionByPatientIdAndType() { - doAnswer(invocationOnMock -> { - var object = new Patient(onkostarApi); - object.setPersonPoolCode("Pool1"); - return object; - }).when(onkostarApi).getPatient(anyInt()); - - var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, 123, PersonPoolBasedPermissionEvaluator.PATIENT, PermissionType.READ); - - assertThat(actual).isFalse(); - } - - @Test - void testShouldGrantPermissionByProcedureObject() { - var patient = new Patient(onkostarApi); - patient.setId(1); - patient.setPersonPoolCode("Pool2"); - - var object = new Procedure(onkostarApi); - object.setFormName("OS.Form1"); - object.setPatient(patient); - - var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ); - - assertThat(actual).isTrue(); - } - - @Test - void testShouldGrantPermissionByProcedureIdAndType() { - doAnswer(invocationOnMock -> { - var patient = new Patient(onkostarApi); - patient.setId(1); - patient.setPersonPoolCode("Pool2"); - - var object = new Procedure(onkostarApi); - object.setFormName("OS.Form1"); - object.setPatient(patient); - - return object; - }).when(onkostarApi).getProcedure(anyInt()); - - var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, 456, PersonPoolBasedPermissionEvaluator.PROCEDURE, PermissionType.READ); - - assertThat(actual).isTrue(); - } - - @Test - void testShouldDenyPermissionByProcedureObject() { - var patient = new Patient(onkostarApi); - patient.setId(1); - patient.setPersonPoolCode("Pool1"); - - var object = new Procedure(onkostarApi); - object.setFormName("OS.Form1"); - object.setPatient(patient); - - var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ); - - assertThat(actual).isFalse(); - } - - @Test - void testShouldDenyPermissionByProcedureIdAndType() { - doAnswer(invocationOnMock -> { - var patient = new Patient(onkostarApi); - patient.setId(1); - patient.setPersonPoolCode("Pool1"); - - var object = new Procedure(onkostarApi); - object.setFormName("OS.Form1"); - object.setPatient(patient); - - return object; - }).when(onkostarApi).getProcedure(anyInt()); - - var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, 123, PersonPoolBasedPermissionEvaluator.PROCEDURE, PermissionType.READ); - - assertThat(actual).isFalse(); - } - -}
\ No newline at end of file + private IOnkostarApi onkostarApi; + + private Authentication dummyAuthentication; + + private PersonPoolBasedPermissionEvaluator permissionEvaluator; + + @BeforeEach + void setup( + @Mock IOnkostarApi onkostarApi, + @Mock SecurityService securityService, + @Mock DummyAuthentication dummyAuthentication) { + this.onkostarApi = onkostarApi; + this.dummyAuthentication = dummyAuthentication; + + this.permissionEvaluator = new PersonPoolBasedPermissionEvaluator(onkostarApi, securityService); + + when(securityService.getPersonPoolIdsForPermission( + any(Authentication.class), any(PermissionType.class))) + .thenReturn(List.of("Pool2", "Pool3", "Pool5")); + } + + @Test + void testShouldGrantPermissionByPatientObject() { + var object = new Patient(onkostarApi); + object.setPersonPoolCode("Pool2"); + + var actual = + permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ); + + assertThat(actual).isTrue(); + } + + @Test + void testShouldGrantPermissionByPatientIdAndType() { + doAnswer( + invocationOnMock -> { + var object = new Patient(onkostarApi); + object.setPersonPoolCode("Pool2"); + return object; + }) + .when(onkostarApi) + .getPatient(anyInt()); + + var actual = + permissionEvaluator.hasPermission( + this.dummyAuthentication, + 123, + PersonPoolBasedPermissionEvaluator.PATIENT, + PermissionType.READ); + + assertThat(actual).isTrue(); + } + + @Test + void testShouldDenyPermissionByPatientObject() { + var object = new Patient(onkostarApi); + object.setPersonPoolCode("Pool1"); + + var actual = + permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ); + + assertThat(actual).isFalse(); + } + + @Test + void testShouldDenyPermissionByPatientIdAndType() { + doAnswer( + invocationOnMock -> { + var object = new Patient(onkostarApi); + object.setPersonPoolCode("Pool1"); + return object; + }) + .when(onkostarApi) + .getPatient(anyInt()); + + var actual = + permissionEvaluator.hasPermission( + this.dummyAuthentication, + 123, + PersonPoolBasedPermissionEvaluator.PATIENT, + PermissionType.READ); + + assertThat(actual).isFalse(); + } + + @Test + void testShouldGrantPermissionByProcedureObject() { + var patient = new Patient(onkostarApi); + patient.setId(1); + patient.setPersonPoolCode("Pool2"); + + var object = new Procedure(onkostarApi); + object.setFormName("OS.Form1"); + object.setPatient(patient); + + var actual = + permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ); + + assertThat(actual).isTrue(); + } + + @Test + void testShouldGrantPermissionByProcedureIdAndType() { + doAnswer( + invocationOnMock -> { + var patient = new Patient(onkostarApi); + patient.setId(1); + patient.setPersonPoolCode("Pool2"); + + var object = new Procedure(onkostarApi); + object.setFormName("OS.Form1"); + object.setPatient(patient); + + return object; + }) + .when(onkostarApi) + .getProcedure(anyInt()); + + var actual = + permissionEvaluator.hasPermission( + this.dummyAuthentication, + 456, + PersonPoolBasedPermissionEvaluator.PROCEDURE, + PermissionType.READ); + + assertThat(actual).isTrue(); + } + + @Test + void testShouldDenyPermissionByProcedureObject() { + var patient = new Patient(onkostarApi); + patient.setId(1); + patient.setPersonPoolCode("Pool1"); + + var object = new Procedure(onkostarApi); + object.setFormName("OS.Form1"); + object.setPatient(patient); + + var actual = + permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ); + + assertThat(actual).isFalse(); + } + + @Test + void testShouldDenyPermissionByProcedureIdAndType() { + doAnswer( + invocationOnMock -> { + var patient = new Patient(onkostarApi); + patient.setId(1); + patient.setPersonPoolCode("Pool1"); + + var object = new Procedure(onkostarApi); + object.setFormName("OS.Form1"); + object.setPatient(patient); + + return object; + }) + .when(onkostarApi) + .getProcedure(anyInt()); + + var actual = + permissionEvaluator.hasPermission( + this.dummyAuthentication, + 123, + PersonPoolBasedPermissionEvaluator.PROCEDURE, + PermissionType.READ); + + assertThat(actual).isFalse(); + } +} |
