1 package org.bremersee.spring.boot.autoconfigure.security.authentication;
2
3 import static org.assertj.core.api.Assertions.assertThat;
4 import static org.mockito.Mockito.mock;
5
6 import org.assertj.core.api.SoftAssertions;
7 import org.assertj.core.api.junit.jupiter.SoftAssertionsExtension;
8 import org.bremersee.spring.security.core.EmailToUsernameResolver;
9 import org.bremersee.spring.security.ldaptive.authentication.AccountControlEvaluator;
10 import org.bremersee.spring.security.ldaptive.authentication.LdaptiveAuthentication;
11 import org.bremersee.spring.security.ldaptive.authentication.UsernameToBindDnConverter;
12 import org.bremersee.spring.security.ldaptive.userdetails.LdaptiveRememberMeTokenProvider;
13 import org.bremersee.spring.security.ldaptive.userdetails.LdaptiveUserDetails;
14 import org.junit.jupiter.api.BeforeEach;
15 import org.junit.jupiter.api.Test;
16 import org.junit.jupiter.api.extension.ExtendWith;
17 import org.ldaptive.ConnectionConfig;
18 import org.springframework.beans.factory.ObjectProvider;
19 import org.springframework.core.convert.converter.Converter;
20 import org.springframework.security.core.authority.mapping.GrantedAuthoritiesMapper;
21
22
23
24
25 @ExtendWith(SoftAssertionsExtension.class)
26 class LdaptiveAuthenticationAutoConfigurationTest {
27
28
29
30
31 final AuthenticationProperties properties = new AuthenticationProperties();
32
33
34
35
36 LdaptiveAuthenticationAutoConfiguration target;
37
38
39
40
41 @BeforeEach
42 void init() {
43 properties.getLdaptive().setUserBaseDn("cn=users,dc=example,dc=org");
44 target = new LdaptiveAuthenticationAutoConfiguration(properties);
45 }
46
47
48
49
50 @Test
51 void ldaptivePasswordEncoderProvider() {
52 assertThat(target.ldaptivePasswordEncoderProvider())
53 .isNotNull();
54 }
55
56
57
58
59 @Test
60 void ldaptiveAuthenticationManager() {
61 ConnectionConfig connectionConfig = ConnectionConfig.builder().build();
62
63 ObjectProvider<EmailToUsernameResolver> emailToUsernameResolver = mock();
64 ObjectProvider<UsernameToBindDnConverter> usernameToBindDnConverter = mock();
65 ObjectProvider<AccountControlEvaluator> accountControlEvaluator = mock();
66 ObjectProvider<GrantedAuthoritiesMapper> grantedAuthoritiesMapper = mock();
67 ObjectProvider<Converter<LdaptiveUserDetails, LdaptiveAuthentication>> tokenConverter = mock();
68 assertThat(target
69 .ldaptiveAuthenticationManager(
70 connectionConfig,
71 mock(),
72 mock(),
73 target.ldaptivePasswordEncoderProvider(),
74 LdaptiveRememberMeTokenProvider.invalid(),
75 emailToUsernameResolver,
76 usernameToBindDnConverter,
77 accountControlEvaluator,
78 grantedAuthoritiesMapper,
79 tokenConverter))
80 .isNotNull();
81 }
82
83
84
85
86 @Test
87 void reactiveLdaptiveAuthenticationManager() {
88 ConnectionConfig connectionConfig = ConnectionConfig.builder().build();
89 ObjectProvider<EmailToUsernameResolver> emailToUsernameResolver = mock();
90 ObjectProvider<UsernameToBindDnConverter> usernameToBindDnConverter = mock();
91 ObjectProvider<AccountControlEvaluator> accountControlEvaluator = mock();
92 ObjectProvider<GrantedAuthoritiesMapper> grantedAuthoritiesMapper = mock();
93 ObjectProvider<Converter<LdaptiveUserDetails, LdaptiveAuthentication>> tokenConverter = mock();
94 assertThat(target
95 .reactiveLdaptiveAuthenticationManager(
96 connectionConfig,
97 mock(),
98 mock(),
99 target.ldaptivePasswordEncoderProvider(),
100 LdaptiveRememberMeTokenProvider.invalid(),
101 emailToUsernameResolver,
102 usernameToBindDnConverter,
103 accountControlEvaluator,
104 grantedAuthoritiesMapper,
105 tokenConverter))
106 .isNotNull();
107 }
108
109
110
111
112
113
114 @Test
115 void ldaptiveRememberMeTokenProvider(SoftAssertions softly) {
116 ObjectProvider<AccountControlEvaluator> evaluator = mock();
117 softly
118 .assertThat(target.ldaptiveRememberMeTokenProvider(evaluator))
119 .isNotNull();
120
121 properties.getLdaptive().setPasswordLastSetAttribute("pwdLastSet");
122 softly
123 .assertThat(target.ldaptiveRememberMeTokenProvider(evaluator))
124 .isNotNull();
125 }
126 }