11package io .kafbat .ui ;
22
33import static io .kafbat .ui .AbstractIntegrationTest .LOCAL ;
4- import static io .kafbat .ui .container .ActiveDirectoryContainer .DOMAIN ;
54import static io .kafbat .ui .container .ActiveDirectoryContainer .EMPTY_PERMISSIONS_USER ;
65import static io .kafbat .ui .container .ActiveDirectoryContainer .FIRST_USER_WITH_GROUP ;
76import static io .kafbat .ui .container .ActiveDirectoryContainer .PASSWORD ;
1211import static org .junit .jupiter .api .Assertions .assertNotNull ;
1312import static org .junit .jupiter .api .Assertions .assertTrue ;
1413
15- import io .kafbat .ui .container .ActiveDirectoryContainer ;
1614import io .kafbat .ui .model .AuthenticationInfoDTO ;
1715import io .kafbat .ui .model .ResourceTypeDTO ;
1816import io .kafbat .ui .model .UserPermissionDTO ;
1917import java .util .List ;
2018import java .util .Objects ;
21- import org .jetbrains .annotations .NotNull ;
22- import org .junit .jupiter .api .AfterAll ;
23- import org .junit .jupiter .api .BeforeAll ;
24- import org .junit .jupiter .api .Test ;
25- import org .springframework .beans .factory .annotation .Autowired ;
2619import org .springframework .boot .test .autoconfigure .web .reactive .AutoConfigureWebTestClient ;
2720import org .springframework .boot .test .context .SpringBootTest ;
28- import org .springframework .context .ApplicationContextInitializer ;
29- import org .springframework .context .ConfigurableApplicationContext ;
3021import org .springframework .http .MediaType ;
3122import org .springframework .test .context .ActiveProfiles ;
32- import org .springframework .test .context .ContextConfiguration ;
3323import org .springframework .test .web .reactive .server .WebTestClient ;
3424import org .springframework .web .reactive .function .BodyInserters ;
3525
3626@ SpringBootTest
3727@ ActiveProfiles ("rbac-ad" )
3828@ AutoConfigureWebTestClient (timeout = "60000" )
39- @ ContextConfiguration (initializers = {ActiveDirectoryIntegrationTest .Initializer .class })
40- public class ActiveDirectoryIntegrationTest {
29+ public abstract class AbstractActiveDirectoryIntegrationTest {
4130 private static final String SESSION = "SESSION" ;
4231
43- private static final ActiveDirectoryContainer ACTIVE_DIRECTORY = new ActiveDirectoryContainer ();
44-
45- @ Autowired
46- private WebTestClient webTestClient ;
47-
48- @ BeforeAll
49- public static void setup () {
50- ACTIVE_DIRECTORY .start ();
51- }
52-
53- @ AfterAll
54- public static void shutdown () {
55- ACTIVE_DIRECTORY .stop ();
56- }
57-
58- @ Test
59- public void testUserPermissions () {
60- AuthenticationInfoDTO info = authenticationInfo (FIRST_USER_WITH_GROUP );
32+ protected static void checkUserPermissions (WebTestClient client ) {
33+ AuthenticationInfoDTO info = authenticationInfo (client , FIRST_USER_WITH_GROUP );
6134
6235 assertNotNull (info );
6336 assertTrue (info .getRbacEnabled ());
@@ -67,22 +40,21 @@ public void testUserPermissions() {
6740 assertFalse (permissions .isEmpty ());
6841 assertTrue (permissions .stream ().anyMatch (permission ->
6942 permission .getClusters ().contains (LOCAL ) && permission .getResource () == ResourceTypeDTO .TOPIC ));
70- assertEquals (permissions , authenticationInfo (SECOND_USER_WITH_GROUP ).getUserInfo ().getPermissions ());
71- assertEquals (permissions , authenticationInfo (USER_WITHOUT_GROUP ).getUserInfo ().getPermissions ());
43+ assertEquals (permissions , authenticationInfo (client , SECOND_USER_WITH_GROUP ).getUserInfo ().getPermissions ());
44+ assertEquals (permissions , authenticationInfo (client , USER_WITHOUT_GROUP ).getUserInfo ().getPermissions ());
7245 }
7346
74- @ Test
75- public void testEmptyPermissions () {
76- assertTrue (Objects .requireNonNull (authenticationInfo (EMPTY_PERMISSIONS_USER ))
47+ protected static void checkEmptyPermissions (WebTestClient client ) {
48+ assertTrue (Objects .requireNonNull (authenticationInfo (client , EMPTY_PERMISSIONS_USER ))
7749 .getUserInfo ()
7850 .getPermissions ()
7951 .isEmpty ()
8052 );
8153 }
8254
83- private String session (String name ) {
55+ protected static String session (WebTestClient client , String name ) {
8456 return Objects .requireNonNull (
85- webTestClient
57+ client
8658 .post ()
8759 .uri ("/login" )
8860 .contentType (MediaType .APPLICATION_FORM_URLENCODED )
@@ -96,25 +68,16 @@ private String session(String name) {
9668 .getValue ();
9769 }
9870
99- private AuthenticationInfoDTO authenticationInfo (String name ) {
100- return webTestClient
71+ protected static AuthenticationInfoDTO authenticationInfo (WebTestClient client , String name ) {
72+ return client
10173 .get ()
10274 .uri ("/api/authorization" )
103- .cookie (SESSION , session (name ))
75+ .cookie (SESSION , session (client , name ))
10476 .exchange ()
10577 .expectStatus ()
10678 .isOk ()
10779 .returnResult (AuthenticationInfoDTO .class )
10880 .getResponseBody ()
10981 .blockFirst ();
11082 }
111-
112- public static class Initializer implements ApplicationContextInitializer <ConfigurableApplicationContext > {
113- @ Override
114- public void initialize (@ NotNull ConfigurableApplicationContext context ) {
115- System .setProperty ("spring.ldap.urls" , ACTIVE_DIRECTORY .getLdapUrl ());
116- System .setProperty ("oauth2.ldap.activeDirectory" , "true" );
117- System .setProperty ("oauth2.ldap.activeDirectory.domain" , DOMAIN );
118- }
119- }
12083}
0 commit comments