View Javadoc
1   /*
2    * Copyright 2026 the original author or authors.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package org.bremersee.spring.boot.autoconfigure.keycloak;
18  
19  import static org.assertj.core.api.Assertions.assertThat;
20  import static org.mockito.Mockito.doReturn;
21  import static org.mockito.Mockito.mock;
22  
23  import java.util.List;
24  import org.bremersee.exception.RestApiExceptionParserImpl;
25  import org.bremersee.exception.feign.FeignClientExceptionErrorDecoder;
26  import org.bremersee.exception.webclient.DefaultWebClientErrorDecoder;
27  import org.bremersee.keycloak.api.webflux.AdminApi;
28  import org.bremersee.keycloak.api.webflux.KeycloakAdminClient;
29  import org.junit.jupiter.api.BeforeEach;
30  import org.junit.jupiter.api.Test;
31  import org.springframework.beans.factory.ObjectProvider;
32  
33  /**
34   * The reactive keycloak client autoconfiguration test.
35   *
36   * @author Christian Bremer
37   */
38  class ReactiveKeycloakClientAutoConfigurationTest {
39  
40    private ReactiveKeycloakClientAutoConfiguration target;
41  
42    /**
43     * Sets up.
44     */
45    @BeforeEach
46    void setUp() {
47      KeycloakProperties properties = new KeycloakProperties();
48      properties.setBaseUri("https://localhost:8443");
49      properties.setRealm("junit");
50      properties.getAdminClient().setLoginRealm("master");
51      properties.getAdminClient().setClientId("admin-cli");
52      properties.getAdminClient().setUsername("admin");
53      properties.getAdminClient().setPassword("change-it");
54      target = new ReactiveKeycloakClientAutoConfiguration(properties);
55      target.init();
56    }
57  
58    /**
59     * Keycloak admin api.
60     */
61    @Test
62    void keycloakAdminApi() {
63      DefaultWebClientErrorDecoder errorDecoder = new DefaultWebClientErrorDecoder(
64          new RestApiExceptionParserImpl());
65      //noinspection unchecked
66      ObjectProvider<DefaultWebClientErrorDecoder> provider = mock(ObjectProvider.class);
67      doReturn(errorDecoder)
68          .when(provider)
69          .getIfAvailable();
70      FeignClientExceptionErrorDecoder feignErrorDecoder = new FeignClientExceptionErrorDecoder();
71      //noinspection unchecked
72      ObjectProvider<FeignClientExceptionErrorDecoder> feignProvider = mock(ObjectProvider.class);
73      doReturn(feignErrorDecoder)
74          .when(feignProvider)
75          .getIfAvailable();
76      AdminApi actual = target.keycloakAdminApi(List.of(), List.of(), provider, feignProvider);
77      assertThat(actual).isNotNull();
78    }
79  
80    /**
81     * Keycloak admin client.
82     */
83    @Test
84    void keycloakAdminClient() {
85      KeycloakAdminClient actial = target.keycloakAdminClient(mock(AdminApi.class));
86      assertThat(actial).isNotNull();
87    }
88  }