|
16 | 16 |
|
17 | 17 | package org.springframework.security.config;
|
18 | 18 |
|
| 19 | +import ch.qos.logback.classic.Level; |
| 20 | +import ch.qos.logback.classic.Logger; |
| 21 | +import ch.qos.logback.classic.spi.ILoggingEvent; |
| 22 | +import ch.qos.logback.core.Appender; |
19 | 23 | import org.apache.commons.logging.Log;
|
20 | 24 | import org.junit.jupiter.api.Test;
|
21 | 25 | import org.junit.jupiter.api.extension.ExtendWith;
|
22 | 26 | import org.mockito.Answers;
|
| 27 | +import org.mockito.ArgumentCaptor; |
23 | 28 | import org.mockito.Mock;
|
24 | 29 | import org.mockito.MockedStatic;
|
| 30 | +import org.mockito.Mockito; |
25 | 31 | import org.mockito.junit.jupiter.MockitoExtension;
|
| 32 | +import org.slf4j.LoggerFactory; |
26 | 33 |
|
27 | 34 | import org.springframework.beans.factory.parsing.BeanDefinitionParsingException;
|
28 | 35 | import org.springframework.security.config.util.InMemoryXmlApplicationContext;
|
29 | 36 | import org.springframework.security.config.util.SpringSecurityVersions;
|
| 37 | +import org.springframework.security.core.SpringSecurityCoreVersion; |
30 | 38 | import org.springframework.test.util.ReflectionTestUtils;
|
31 | 39 | import org.springframework.util.ClassUtils;
|
32 | 40 |
|
|
35 | 43 | import static org.mockito.ArgumentMatchers.any;
|
36 | 44 | import static org.mockito.ArgumentMatchers.eq;
|
37 | 45 | import static org.mockito.Mockito.mock;
|
| 46 | +import static org.mockito.Mockito.never; |
| 47 | +import static org.mockito.Mockito.verify; |
38 | 48 | import static org.mockito.Mockito.verifyNoMoreInteractions;
|
39 | 49 |
|
40 | 50 | /**
|
@@ -63,8 +73,26 @@ public class SecurityNamespaceHandlerTests {
|
63 | 73 | private MockedStatic<ClassUtils> classUtils;
|
64 | 74 |
|
65 | 75 | @Test
|
66 |
| - public void constructionSucceeds() { |
| 76 | + public void constructionWhenVersionsMatchThenLogsNothing() { |
| 77 | + Appender<ILoggingEvent> appender = mock(Appender.class); |
| 78 | + Logger logger = (Logger) LoggerFactory.getLogger(SecurityNamespaceHandler.class); |
| 79 | + logger.addAppender(appender); |
67 | 80 | assertThat(new SecurityNamespaceHandler()).isNotNull();
|
| 81 | + verify(appender, never()).doAppend(any(ILoggingEvent.class)); |
| 82 | + } |
| 83 | + |
| 84 | + @Test |
| 85 | + public void constructorWhenDetectsMismatchingVersionsThenLogsError() { |
| 86 | + Appender<ILoggingEvent> appender = mock(Appender.class); |
| 87 | + Logger logger = (Logger) LoggerFactory.getLogger(SecurityNamespaceHandler.class); |
| 88 | + logger.addAppender(appender); |
| 89 | + try (MockedStatic<SpringSecurityCoreVersion> core = Mockito.mockStatic(SpringSecurityCoreVersion.class)) { |
| 90 | + core.when(SpringSecurityCoreVersion::getVersion).thenReturn("mismatching"); |
| 91 | + assertThat(new SecurityNamespaceHandler()).isNotNull(); |
| 92 | + ArgumentCaptor<ILoggingEvent> captor = ArgumentCaptor.forClass(ILoggingEvent.class); |
| 93 | + verify(appender).doAppend(captor.capture()); |
| 94 | + assertThat(captor.getValue().getLevel()).isEqualTo(Level.ERROR); |
| 95 | + } |
68 | 96 | }
|
69 | 97 |
|
70 | 98 | @Test
|
|
0 commit comments