@@ -198,6 +198,51 @@ public void testDeleteTask_ThreadContextError() {
198
198
assertEquals ("thread context error" , argumentCaptor .getValue ().getMessage ());
199
199
}
200
200
201
+ public void testDeleteTask_NullTenantValidation () {
202
+ when (mlFeatureEnabledSetting .isMultiTenancyEnabled ()).thenReturn (true );
203
+ MLTaskDeleteRequest request = MLTaskDeleteRequest .builder ()
204
+ .taskId ("test_id" )
205
+ .tenantId (null )
206
+ .build ();
207
+
208
+ deleteTaskTransportAction .doExecute (null , request , actionListener );
209
+
210
+ ArgumentCaptor <Exception > argumentCaptor = ArgumentCaptor .forClass (Exception .class );
211
+ verify (actionListener ).onFailure (argumentCaptor .capture ());
212
+ assertEquals ("You don't have permission to access this resource" , argumentCaptor .getValue ().getMessage ());
213
+ }
214
+
215
+ public void testDeleteTask_TenantMismatch () throws IOException {
216
+ when (mlFeatureEnabledSetting .isMultiTenancyEnabled ()).thenReturn (true );
217
+ MLTaskDeleteRequest request = MLTaskDeleteRequest .builder ()
218
+ .taskId ("test_id" )
219
+ .tenantId ("tenant1" )
220
+ .build ();
221
+
222
+ MLTask mlTask = MLTask .builder ()
223
+ .taskId ("taskID" )
224
+ .state (MLTaskState .COMPLETED )
225
+ .tenantId ("tenant2" )
226
+ .build ();
227
+
228
+ XContentBuilder content = mlTask .toXContent (XContentFactory .jsonBuilder (), ToXContent .EMPTY_PARAMS );
229
+ BytesReference bytesReference = BytesReference .bytes (content );
230
+ GetResult getResult = new GetResult ("indexName" , "111" , 111L , 111L , 111L , true , bytesReference , null , null );
231
+ GetResponse getResponse = new GetResponse (getResult );
232
+
233
+ doAnswer (invocation -> {
234
+ ActionListener <GetResponse > actionListener = invocation .getArgument (1 );
235
+ actionListener .onResponse (getResponse );
236
+ return null ;
237
+ }).when (client ).get (any (), any ());
238
+
239
+ deleteTaskTransportAction .doExecute (null , request , actionListener );
240
+
241
+ ArgumentCaptor <Exception > argumentCaptor = ArgumentCaptor .forClass (Exception .class );
242
+ verify (actionListener ).onFailure (argumentCaptor .capture ());
243
+ assertEquals ("You don't have permission to access this resource" , argumentCaptor .getValue ().getMessage ());
244
+ }
245
+
201
246
public GetResponse prepareMLTask (MLTaskState mlTaskState ) throws IOException {
202
247
MLTask mlTask = MLTask .builder ().taskId ("taskID" ).state (mlTaskState ).build ();
203
248
XContentBuilder content = mlTask .toXContent (XContentFactory .jsonBuilder (), ToXContent .EMPTY_PARAMS );
0 commit comments