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.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   * The ldaptive authentication autoconfiguration test.
24   */
25  @ExtendWith(SoftAssertionsExtension.class)
26  class LdaptiveAuthenticationAutoConfigurationTest {
27  
28    /**
29     * The Properties.
30     */
31    final AuthenticationProperties properties = new AuthenticationProperties();
32  
33    /**
34     * The Target.
35     */
36    LdaptiveAuthenticationAutoConfiguration target;
37  
38    /**
39     * Init.
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     * The ldaptive password encoder provider.
49     */
50    @Test
51    void ldaptivePasswordEncoderProvider() {
52      assertThat(target.ldaptivePasswordEncoderProvider())
53          .isNotNull();
54    }
55  
56    /**
57     * The ldaptive authentication manager.
58     */
59    @Test
60    void ldaptiveAuthenticationManager() {
61      ConnectionConfig connectionConfig = ConnectionConfig.builder().build();
62      //ObjectProvider<>
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     * Reactive ldaptive authentication manager.
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    * Ldaptive remember me token provider.
111    *
112    * @param softly the softly
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 }