89 lines
2.6 KiB
Java
89 lines
2.6 KiB
Java
package dev.lions.user.manager.security;
|
|
|
|
import jakarta.ws.rs.container.ContainerRequestContext;
|
|
import jakarta.ws.rs.core.SecurityContext;
|
|
import jakarta.ws.rs.core.UriInfo;
|
|
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 java.lang.reflect.Field;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
import static org.mockito.Mockito.*;
|
|
|
|
/**
|
|
* Tests unitaires pour DevSecurityContextProducer
|
|
*/
|
|
@ExtendWith(MockitoExtension.class)
|
|
class DevSecurityContextProducerTest {
|
|
|
|
@Mock
|
|
private ContainerRequestContext requestContext;
|
|
|
|
@Mock
|
|
private UriInfo uriInfo;
|
|
|
|
@Mock
|
|
private SecurityContext originalSecurityContext;
|
|
|
|
private DevSecurityContextProducer producer;
|
|
|
|
@BeforeEach
|
|
void setUp() throws Exception {
|
|
producer = new DevSecurityContextProducer();
|
|
|
|
// Injecter les propriétés via reflection
|
|
setField("profile", "dev");
|
|
setField("oidcEnabled", false);
|
|
}
|
|
|
|
private void setField(String fieldName, Object value) throws Exception {
|
|
Field field = DevSecurityContextProducer.class.getDeclaredField(fieldName);
|
|
field.setAccessible(true);
|
|
field.set(producer, value);
|
|
}
|
|
|
|
@Test
|
|
void testFilter_DevMode() throws Exception {
|
|
setField("profile", "dev");
|
|
setField("oidcEnabled", true);
|
|
|
|
when(requestContext.getUriInfo()).thenReturn(uriInfo);
|
|
when(uriInfo.getPath()).thenReturn("/api/users");
|
|
when(requestContext.getSecurityContext()).thenReturn(originalSecurityContext);
|
|
|
|
producer.filter(requestContext);
|
|
|
|
verify(requestContext, times(1)).setSecurityContext(any(SecurityContext.class));
|
|
}
|
|
|
|
@Test
|
|
void testFilter_ProdMode() throws Exception {
|
|
setField("profile", "prod");
|
|
setField("oidcEnabled", true);
|
|
|
|
// En mode prod, on n'a pas besoin de mocker getUriInfo car le code ne l'utilise pas
|
|
producer.filter(requestContext);
|
|
|
|
verify(requestContext, never()).setSecurityContext(any(SecurityContext.class));
|
|
}
|
|
|
|
@Test
|
|
void testFilter_OidcDisabled() throws Exception {
|
|
setField("profile", "prod");
|
|
setField("oidcEnabled", false);
|
|
|
|
when(requestContext.getUriInfo()).thenReturn(uriInfo);
|
|
when(uriInfo.getPath()).thenReturn("/api/users");
|
|
when(requestContext.getSecurityContext()).thenReturn(originalSecurityContext);
|
|
|
|
producer.filter(requestContext);
|
|
|
|
verify(requestContext, times(1)).setSecurityContext(any(SecurityContext.class));
|
|
}
|
|
}
|
|
|