mirror of
https://github.com/pcvolkmer/onkostar-plugin-dnpm.git
synced 2025-07-04 10:02:55 +00:00
Issue #24: Extrahiere Service mit Datenbankanfragen
This commit is contained in:
@ -0,0 +1,112 @@
|
||||
package DNPM.security;
|
||||
|
||||
import de.itc.onkostar.api.IOnkostarApi;
|
||||
import de.itc.onkostar.api.Patient;
|
||||
import de.itc.onkostar.api.Procedure;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
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 FormBasedPermissionEvaluatorTest {
|
||||
|
||||
private IOnkostarApi onkostarApi;
|
||||
|
||||
private Authentication dummyAuthentication;
|
||||
|
||||
private SecurityService securityService;
|
||||
|
||||
private FormBasedPermissionEvaluator permissionEvaluator;
|
||||
|
||||
@BeforeEach
|
||||
void setup(
|
||||
@Mock IOnkostarApi onkostarApi,
|
||||
@Mock SecurityService securityService,
|
||||
@Mock DummyAuthentication dummyAuthentication
|
||||
) {
|
||||
this.onkostarApi = onkostarApi;
|
||||
this.dummyAuthentication = dummyAuthentication;
|
||||
this.securityService = securityService;
|
||||
|
||||
this.permissionEvaluator = new FormBasedPermissionEvaluator(
|
||||
onkostarApi, securityService
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testShouldGrantPermissionByProcedure() {
|
||||
when(securityService.getFormNamesForPermission(any(Authentication.class), any(PermissionType.class))).thenReturn(List.of("OS.Form2", "OS.Form3", "OS.Form5"));
|
||||
|
||||
var object = new Procedure(onkostarApi);
|
||||
object.setFormName("OS.Form2");
|
||||
|
||||
var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ);
|
||||
assertThat(actual).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testShouldGrantPermissionByProcedureId() {
|
||||
when(securityService.getFormNamesForPermission(any(Authentication.class), any(PermissionType.class))).thenReturn(List.of("OS.Form2", "OS.Form3", "OS.Form5"));
|
||||
|
||||
doAnswer(invocationOnMock -> {
|
||||
var object = new Procedure(onkostarApi);
|
||||
object.setFormName("OS.Form2");
|
||||
return object;
|
||||
}).when(onkostarApi).getProcedure(anyInt());
|
||||
|
||||
var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, 123, PersonPoolBasedPermissionEvaluator.PROCEDURE, PermissionType.READ);
|
||||
assertThat(actual).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testShouldDenyPermissionByProcedure() {
|
||||
when(securityService.getFormNamesForPermission(any(Authentication.class), any(PermissionType.class))).thenReturn(List.of("OS.Form2", "OS.Form3", "OS.Form5"));
|
||||
|
||||
var object = new Procedure(onkostarApi);
|
||||
object.setFormName("OS.Form1");
|
||||
|
||||
var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ);
|
||||
assertThat(actual).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testShouldDenyPermissionByProcedureId() {
|
||||
when(securityService.getFormNamesForPermission(any(Authentication.class), any(PermissionType.class))).thenReturn(List.of("OS.Form2", "OS.Form3", "OS.Form5"));
|
||||
|
||||
doAnswer(invocationOnMock -> {
|
||||
var object = new Procedure(onkostarApi);
|
||||
object.setFormName("OS.Form1");
|
||||
return object;
|
||||
}).when(onkostarApi).getProcedure(anyInt());
|
||||
|
||||
var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, 123, PersonPoolBasedPermissionEvaluator.PROCEDURE, PermissionType.READ);
|
||||
assertThat(actual).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testShouldVoteForPermissionToPatient() {
|
||||
var object = new Patient(onkostarApi);
|
||||
object.setPersonPoolCode("Pool1");
|
||||
|
||||
var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, object, PermissionType.READ);
|
||||
assertThat(actual).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testShouldVoteForPermissionToIdOfTypeProcedure() {
|
||||
var actual = permissionEvaluator.hasPermission(this.dummyAuthentication, 123, FormBasedPermissionEvaluator.PATIENT, PermissionType.READ);
|
||||
assertThat(actual).isTrue();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,156 @@
|
||||
package DNPM.security;
|
||||
|
||||
import de.itc.onkostar.api.IOnkostarApi;
|
||||
import de.itc.onkostar.api.Patient;
|
||||
import de.itc.onkostar.api.Procedure;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
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.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.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.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.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();
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user