1
1
package io .kafbat .ui ;
2
2
3
3
import static io .kafbat .ui .AbstractIntegrationTest .LOCAL ;
4
- import static io .kafbat .ui .container .ActiveDirectoryContainer .DOMAIN ;
5
4
import static io .kafbat .ui .container .ActiveDirectoryContainer .EMPTY_PERMISSIONS_USER ;
6
5
import static io .kafbat .ui .container .ActiveDirectoryContainer .FIRST_USER_WITH_GROUP ;
7
6
import static io .kafbat .ui .container .ActiveDirectoryContainer .PASSWORD ;
12
11
import static org .junit .jupiter .api .Assertions .assertNotNull ;
13
12
import static org .junit .jupiter .api .Assertions .assertTrue ;
14
13
15
- import io .kafbat .ui .container .ActiveDirectoryContainer ;
16
14
import io .kafbat .ui .model .AuthenticationInfoDTO ;
17
15
import io .kafbat .ui .model .ResourceTypeDTO ;
18
16
import io .kafbat .ui .model .UserPermissionDTO ;
19
17
import java .util .List ;
20
18
import 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 ;
26
19
import org .springframework .boot .test .autoconfigure .web .reactive .AutoConfigureWebTestClient ;
27
20
import org .springframework .boot .test .context .SpringBootTest ;
28
- import org .springframework .context .ApplicationContextInitializer ;
29
- import org .springframework .context .ConfigurableApplicationContext ;
30
21
import org .springframework .http .MediaType ;
31
22
import org .springframework .test .context .ActiveProfiles ;
32
- import org .springframework .test .context .ContextConfiguration ;
33
23
import org .springframework .test .web .reactive .server .WebTestClient ;
34
24
import org .springframework .web .reactive .function .BodyInserters ;
35
25
36
26
@ SpringBootTest
37
27
@ ActiveProfiles ("rbac-ad" )
38
28
@ AutoConfigureWebTestClient (timeout = "60000" )
39
- @ ContextConfiguration (initializers = {ActiveDirectoryIntegrationTest .Initializer .class })
40
- public class ActiveDirectoryIntegrationTest {
29
+ public abstract class AbstractActiveDirectoryIntegrationTest {
41
30
private static final String SESSION = "SESSION" ;
42
31
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 );
61
34
62
35
assertNotNull (info );
63
36
assertTrue (info .getRbacEnabled ());
@@ -67,22 +40,21 @@ public void testUserPermissions() {
67
40
assertFalse (permissions .isEmpty ());
68
41
assertTrue (permissions .stream ().anyMatch (permission ->
69
42
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 ());
72
45
}
73
46
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 ))
77
49
.getUserInfo ()
78
50
.getPermissions ()
79
51
.isEmpty ()
80
52
);
81
53
}
82
54
83
- private String session (String name ) {
55
+ protected static String session (WebTestClient client , String name ) {
84
56
return Objects .requireNonNull (
85
- webTestClient
57
+ client
86
58
.post ()
87
59
.uri ("/login" )
88
60
.contentType (MediaType .APPLICATION_FORM_URLENCODED )
@@ -96,25 +68,16 @@ private String session(String name) {
96
68
.getValue ();
97
69
}
98
70
99
- private AuthenticationInfoDTO authenticationInfo (String name ) {
100
- return webTestClient
71
+ protected static AuthenticationInfoDTO authenticationInfo (WebTestClient client , String name ) {
72
+ return client
101
73
.get ()
102
74
.uri ("/api/authorization" )
103
- .cookie (SESSION , session (name ))
75
+ .cookie (SESSION , session (client , name ))
104
76
.exchange ()
105
77
.expectStatus ()
106
78
.isOk ()
107
79
.returnResult (AuthenticationInfoDTO .class )
108
80
.getResponseBody ()
109
81
.blockFirst ();
110
82
}
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
- }
120
83
}
0 commit comments