@@ -1024,6 +1024,36 @@ public void testRevokePartitionedTopic() {
1024
1024
}
1025
1025
}
1026
1026
1027
+ @ Test
1028
+ public void testRevokePartitionedTopicWithReadonlyPolicies () throws Exception {
1029
+ final String partitionedTopicName = "testRevokePartitionedTopicWithReadonlyPolicies-topic" ;
1030
+ final int numPartitions = 5 ;
1031
+ AsyncResponse response = mock (AsyncResponse .class );
1032
+ ArgumentCaptor <Response > responseCaptor = ArgumentCaptor .forClass (Response .class );
1033
+ persistentTopics .createPartitionedTopic (
1034
+ response , testTenant , testNamespace , partitionedTopicName , numPartitions , true );
1035
+ verify (response , timeout (5000 ).times (1 )).resume (responseCaptor .capture ());
1036
+ Assert .assertEquals (responseCaptor .getValue ().getStatus (), Response .Status .NO_CONTENT .getStatusCode ());
1037
+ String role = "role" ;
1038
+ Set <AuthAction > expectActions = new HashSet <>();
1039
+ expectActions .add (AuthAction .produce );
1040
+ response = mock (AsyncResponse .class );
1041
+ responseCaptor = ArgumentCaptor .forClass (Response .class );
1042
+ persistentTopics .grantPermissionsOnTopic (response , testTenant , testNamespace , partitionedTopicName , role ,
1043
+ expectActions );
1044
+ verify (response , timeout (5000 ).times (1 )).resume (responseCaptor .capture ());
1045
+ Assert .assertEquals (responseCaptor .getValue ().getStatus (), Response .Status .NO_CONTENT .getStatusCode ());
1046
+ response = mock (AsyncResponse .class );
1047
+ doReturn (CompletableFuture .failedFuture (
1048
+ new RestException (Response .Status .FORBIDDEN , "Broker is forbidden to do read-write operations" ))
1049
+ ).when (persistentTopics ).validatePoliciesReadOnlyAccessAsync ();
1050
+ persistentTopics .revokePermissionsOnTopic (response , testTenant , testNamespace , partitionedTopicName , role );
1051
+ ArgumentCaptor <RestException > exceptionCaptor = ArgumentCaptor .forClass (RestException .class );
1052
+ verify (response , timeout (5000 ).times (1 )).resume (exceptionCaptor .capture ());
1053
+ Assert .assertEquals (exceptionCaptor .getValue ().getResponse ().getStatus (),
1054
+ Response .Status .FORBIDDEN .getStatusCode ());
1055
+ }
1056
+
1027
1057
@ Test
1028
1058
public void testTriggerCompactionTopic () {
1029
1059
final String partitionTopicName = "test-part" ;
0 commit comments