View Javadoc
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.userdetails.LdaptiveRememberMeTokenProvider;
12  import org.bremersee.spring.security.ldaptive.userdetails.LdaptiveUserDetails;
13  import org.junit.jupiter.api.BeforeEach;
14  import org.junit.jupiter.api.Test;
15  import org.junit.jupiter.api.extension.ExtendWith;
16  import org.ldaptive.ConnectionConfig;
17  import org.springframework.beans.factory.ObjectProvider;
18  import org.springframework.core.convert.converter.Converter;
19  import org.springframework.security.core.authority.mapping.GrantedAuthoritiesMapper;
20  
21  /**
22   * The ldaptive authentication autoconfiguration test.
23   */
24  @ExtendWith(SoftAssertionsExtension.class)
25  class LdaptiveAuthenticationAutoConfigurationTest {
26  
27    /**
28     * The Properties.
29     */
30    final AuthenticationProperties properties = new AuthenticationProperties();
31  
32    /**
33     * The Target.
34     */
35    LdaptiveAuthenticationAutoConfiguration target;
36  
37    /**
38     * Init.
39     */
40    @BeforeEach
41    void init() {
42      properties.getLdaptive().setUserBaseDn("cn=users,dc=example,dc=org");
43      target = new LdaptiveAuthenticationAutoConfiguration(properties);
44    }
45  
46    /**
47     * The ldaptive password encoder provider.
48     */
49    @Test
50    void ldaptivePasswordEncoderProvider() {
51      assertThat(target.ldaptivePasswordEncoderProvider())
52          .isNotNull();
53    }
54  
55    /**
56     * The ldaptive authentication manager.
57     */
58    @Test
59    void ldaptiveAuthenticationManager() {
60      ConnectionConfig connectionConfig = ConnectionConfig.builder().build();
61      //ObjectProvider<>
62      ObjectProvider<EmailToUsernameResolver> emailToUsernameResolver = mock();
63      ObjectProvider<AccountControlEvaluator> accountControlEvaluator = mock();
64      ObjectProvider<GrantedAuthoritiesMapper> grantedAuthoritiesMapper = mock();
65      ObjectProvider<Converter<LdaptiveUserDetails, LdaptiveAuthentication>> tokenConverter = mock();
66      assertThat(target
67          .ldaptiveAuthenticationManager(
68              connectionConfig,
69              mock(),
70              mock(),
71              target.ldaptivePasswordEncoderProvider(),
72              LdaptiveRememberMeTokenProvider.invalid(),
73              emailToUsernameResolver,
74              accountControlEvaluator,
75              grantedAuthoritiesMapper,
76              tokenConverter))
77          .isNotNull();
78    }
79  
80    /**
81     * Reactive ldaptive authentication manager.
82     */
83    @Test
84    void reactiveLdaptiveAuthenticationManager() {
85      ConnectionConfig connectionConfig = ConnectionConfig.builder().build();
86      ObjectProvider<EmailToUsernameResolver> emailToUsernameResolver = mock();
87      ObjectProvider<AccountControlEvaluator> accountControlEvaluator = mock();
88      ObjectProvider<GrantedAuthoritiesMapper> grantedAuthoritiesMapper = mock();
89      ObjectProvider<Converter<LdaptiveUserDetails, LdaptiveAuthentication>> tokenConverter = mock();
90      assertThat(target
91          .reactiveLdaptiveAuthenticationManager(
92              connectionConfig,
93              mock(),
94              mock(),
95              target.ldaptivePasswordEncoderProvider(),
96              LdaptiveRememberMeTokenProvider.invalid(),
97              emailToUsernameResolver,
98              accountControlEvaluator,
99              grantedAuthoritiesMapper,
100             tokenConverter))
101         .isNotNull();
102   }
103 
104   /**
105    * Ldaptive remember me token provider.
106    *
107    * @param softly the softly
108    */
109   @Test
110   void ldaptiveRememberMeTokenProvider(SoftAssertions softly) {
111     ObjectProvider<AccountControlEvaluator> evaluator = mock();
112     softly
113         .assertThat(target.ldaptiveRememberMeTokenProvider(evaluator))
114         .isNotNull();
115 
116     properties.getLdaptive().setPasswordLastSetAttribute("pwdLastSet");
117     softly
118         .assertThat(target.ldaptiveRememberMeTokenProvider(evaluator))
119         .isNotNull();
120   }
121 }