|
22 | 22 | import org.springframework.boot.actuate.audit.AuditEventRepository;
|
23 | 23 | import org.springframework.boot.actuate.audit.InMemoryAuditEventRepository;
|
24 | 24 | import org.springframework.boot.actuate.audit.listener.AbstractAuditListener;
|
| 25 | +import org.springframework.boot.actuate.audit.listener.AuditListener; |
25 | 26 | import org.springframework.boot.actuate.security.AbstractAuthenticationAuditListener;
|
26 | 27 | import org.springframework.boot.actuate.security.AbstractAuthorizationAuditListener;
|
27 | 28 | import org.springframework.boot.actuate.security.AuthenticationAuditListener;
|
28 | 29 | import org.springframework.boot.actuate.security.AuthorizationAuditListener;
|
| 30 | +import org.springframework.boot.autoconfigure.AutoConfigurations; |
| 31 | +import org.springframework.boot.test.context.runner.WebApplicationContextRunner; |
29 | 32 | import org.springframework.context.ApplicationEventPublisher;
|
30 |
| -import org.springframework.context.annotation.AnnotationConfigApplicationContext; |
31 | 33 | import org.springframework.context.annotation.Bean;
|
32 | 34 | import org.springframework.context.annotation.Configuration;
|
33 | 35 | import org.springframework.security.access.event.AbstractAuthorizationEvent;
|
|
40 | 42 | *
|
41 | 43 | * @author Dave Syer
|
42 | 44 | * @author Vedran Pavic
|
| 45 | + * @author Madhura Bhave |
43 | 46 | */
|
44 | 47 | public class AuditAutoConfigurationTests {
|
45 | 48 |
|
46 |
| - private AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); |
| 49 | + private WebApplicationContextRunner contextRunner = new WebApplicationContextRunner() |
| 50 | + .withConfiguration(AutoConfigurations.of(AuditAutoConfiguration.class)); |
47 | 51 |
|
48 | 52 | @Test
|
49 |
| - public void defaultConfiguration() { |
50 |
| - registerAndRefresh(AuditAutoConfiguration.class); |
51 |
| - assertThat(this.context.getBean(AuditEventRepository.class)).isNotNull(); |
52 |
| - assertThat(this.context.getBean(AuthenticationAuditListener.class)).isNotNull(); |
53 |
| - assertThat(this.context.getBean(AuthorizationAuditListener.class)).isNotNull(); |
| 53 | + public void autoConfigurationIsDisabledByDefault() { |
| 54 | + this.contextRunner.run((context) -> assertThat(context) |
| 55 | + .doesNotHaveBean(AuditAutoConfiguration.class)); |
54 | 56 | }
|
55 | 57 |
|
56 | 58 | @Test
|
57 |
| - public void ownAuditEventRepository() { |
58 |
| - registerAndRefresh(CustomAuditEventRepositoryConfiguration.class, |
59 |
| - AuditAutoConfiguration.class); |
60 |
| - assertThat(this.context.getBean(AuditEventRepository.class)) |
61 |
| - .isInstanceOf(TestAuditEventRepository.class); |
| 59 | + public void autoConfigurationIsEnabledWhenAuditEventRepositoryBeanPresent() { |
| 60 | + this.contextRunner |
| 61 | + .withUserConfiguration(CustomAuditEventRepositoryConfiguration.class) |
| 62 | + .run((context) -> { |
| 63 | + assertThat(context.getBean(AuditEventRepository.class)).isNotNull(); |
| 64 | + assertThat(context.getBean(AuthenticationAuditListener.class)) |
| 65 | + .isNotNull(); |
| 66 | + assertThat(context.getBean(AuthorizationAuditListener.class)) |
| 67 | + .isNotNull(); |
| 68 | + }); |
62 | 69 | }
|
63 | 70 |
|
64 | 71 | @Test
|
65 | 72 | public void ownAuthenticationAuditListener() {
|
66 |
| - registerAndRefresh(CustomAuthenticationAuditListenerConfiguration.class, |
67 |
| - AuditAutoConfiguration.class); |
68 |
| - assertThat(this.context.getBean(AbstractAuthenticationAuditListener.class)) |
69 |
| - .isInstanceOf(TestAuthenticationAuditListener.class); |
| 73 | + this.contextRunner |
| 74 | + .withUserConfiguration(CustomAuditEventRepositoryConfiguration.class) |
| 75 | + .withUserConfiguration( |
| 76 | + CustomAuthenticationAuditListenerConfiguration.class) |
| 77 | + .run((context) -> assertThat( |
| 78 | + context.getBean(AbstractAuthenticationAuditListener.class)) |
| 79 | + .isInstanceOf(TestAuthenticationAuditListener.class)); |
70 | 80 | }
|
71 | 81 |
|
72 | 82 | @Test
|
73 | 83 | public void ownAuthorizationAuditListener() {
|
74 |
| - registerAndRefresh(CustomAuthorizationAuditListenerConfiguration.class, |
75 |
| - AuditAutoConfiguration.class); |
76 |
| - assertThat(this.context.getBean(AbstractAuthorizationAuditListener.class)) |
77 |
| - .isInstanceOf(TestAuthorizationAuditListener.class); |
| 84 | + this.contextRunner |
| 85 | + .withUserConfiguration(CustomAuditEventRepositoryConfiguration.class) |
| 86 | + .withUserConfiguration( |
| 87 | + CustomAuthorizationAuditListenerConfiguration.class) |
| 88 | + .run((context) -> assertThat( |
| 89 | + context.getBean(AbstractAuthorizationAuditListener.class)) |
| 90 | + .isInstanceOf(TestAuthorizationAuditListener.class)); |
78 | 91 | }
|
79 | 92 |
|
80 | 93 | @Test
|
81 | 94 | public void ownAuditListener() {
|
82 |
| - registerAndRefresh(CustomAuditListenerConfiguration.class, |
83 |
| - AuditAutoConfiguration.class); |
84 |
| - assertThat(this.context.getBean(AbstractAuditListener.class)) |
85 |
| - .isInstanceOf(TestAuditListener.class); |
| 95 | + this.contextRunner |
| 96 | + .withUserConfiguration(CustomAuditEventRepositoryConfiguration.class) |
| 97 | + .withUserConfiguration(CustomAuditListenerConfiguration.class) |
| 98 | + .run((context) -> assertThat(context.getBean(AbstractAuditListener.class)) |
| 99 | + .isInstanceOf(TestAuditListener.class)); |
86 | 100 | }
|
87 | 101 |
|
88 |
| - private void registerAndRefresh(Class<?>... annotatedClasses) { |
89 |
| - this.context.register(annotatedClasses); |
90 |
| - this.context.refresh(); |
| 102 | + @Test |
| 103 | + public void backsOffWhenDisabled() { |
| 104 | + this.contextRunner |
| 105 | + .withUserConfiguration(CustomAuditEventRepositoryConfiguration.class) |
| 106 | + .withPropertyValues("management.auditevents.enabled=false") |
| 107 | + .run((context) -> assertThat(context).doesNotHaveBean(AuditListener.class) |
| 108 | + .doesNotHaveBean(AuthenticationAuditListener.class) |
| 109 | + .doesNotHaveBean(AuthorizationAuditListener.class)); |
91 | 110 | }
|
92 | 111 |
|
93 | 112 | @Configuration(proxyBeanMethods = false)
|
|
0 commit comments