You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by we...@apache.org on 2026/08/19 10:28:24 UTC

(cloudstack) 02/02: fixes after forward-merge

This is an automated email from the ASF dual-hosted git repository.

weizhouapache pushed a commit to branch 4.23.0-merge-4.22.1.1
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit dc9438a0cee757756a9e4515b656841b3c765e16
Author: Wei Zhou <we...@apache.org>
AuthorDate: Wed Aug 19 12:26:04 2026 +0200

    fixes after forward-merge
---
 .../acl/DynamicRoleBasedAPIAccessChecker.java        |  5 ++++-
 .../mom/webhook/WebhookServiceImplTest.java          | 20 ++++++++++++--------
 .../mom/webhook/dao/WebhookDeliveryDaoImplTest.java  |  6 +++---
 .../webhook/dao/WebhookDeliveryJoinDaoImplTest.java  |  6 +++---
 4 files changed, 22 insertions(+), 15 deletions(-)

diff --git a/plugins/acl/dynamic-role-based/src/main/java/org/apache/cloudstack/acl/DynamicRoleBasedAPIAccessChecker.java b/plugins/acl/dynamic-role-based/src/main/java/org/apache/cloudstack/acl/DynamicRoleBasedAPIAccessChecker.java
index b9b41722c32..1278adc0b88 100644
--- a/plugins/acl/dynamic-role-based/src/main/java/org/apache/cloudstack/acl/DynamicRoleBasedAPIAccessChecker.java
+++ b/plugins/acl/dynamic-role-based/src/main/java/org/apache/cloudstack/acl/DynamicRoleBasedAPIAccessChecker.java
@@ -101,9 +101,12 @@ public class DynamicRoleBasedAPIAccessChecker extends AdapterBase implements API
             return apiNames;
         }
         List<RolePermission> allPermissions = roleAndPermissions.second();
+        List<RolePermissionEntity> allPermissionEntities = allPermissions.stream().map(permission -> (RolePermissionEntity) permission)
+                .collect(Collectors.toList());
+
         List<String> allowedApis = new ArrayList<>();
         for (String api : apiNames) {
-            if (checkApiPermissionByRole(accountRole, api, allPermissions)) {
+            if (checkApiPermissionByRole(accountRole, api, allPermissionEntities, false)) {
                 allowedApis.add(api);
             }
         }
diff --git a/plugins/event-bus/webhook/src/test/java/org/apache/cloudstack/mom/webhook/WebhookServiceImplTest.java b/plugins/event-bus/webhook/src/test/java/org/apache/cloudstack/mom/webhook/WebhookServiceImplTest.java
index 90c0c323d0d..e945b990c80 100644
--- a/plugins/event-bus/webhook/src/test/java/org/apache/cloudstack/mom/webhook/WebhookServiceImplTest.java
+++ b/plugins/event-bus/webhook/src/test/java/org/apache/cloudstack/mom/webhook/WebhookServiceImplTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.cloudstack.mom.webhook;
 
+import java.net.URI;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -28,6 +29,7 @@ import org.apache.cloudstack.acl.ControlledEntity;
 import org.apache.cloudstack.framework.async.AsyncCallbackDispatcher;
 import org.apache.cloudstack.framework.events.Event;
 import org.apache.cloudstack.framework.events.EventBusException;
+import org.apache.cloudstack.mom.webhook.WebhookServiceImpl.DeliveryConfig;
 import org.apache.cloudstack.mom.webhook.dao.WebhookDao;
 import org.apache.cloudstack.mom.webhook.dao.WebhookDeliveryDao;
 import org.apache.cloudstack.mom.webhook.dao.WebhookFilterDao;
@@ -98,7 +100,7 @@ public class WebhookServiceImplTest {
     public void getDeliveryJobReturnsProperlyConfiguredJob() {
         Event event = Mockito.mock(Event.class);
         Webhook webhook = Mockito.mock(Webhook.class);
-        Pair<Integer, Integer> configs = new Pair<>(4, 5000);
+        DeliveryConfig configs = new DeliveryConfig(4, 5000, null, false, true, true);
 
         Mockito.when(event.getEventId()).thenReturn(123L);
         Mockito.when(webhook.getId()).thenReturn(456L);
@@ -114,7 +116,7 @@ public class WebhookServiceImplTest {
     public void getDeliveryJobInjectsDependencies() {
         Event event = Mockito.mock(Event.class);
         Webhook webhook = Mockito.mock(Webhook.class);
-        Pair<Integer, Integer> configs = new Pair<>(1, 1000);
+        DeliveryConfig configs = new DeliveryConfig(1, 1000, null, false, true, true);
 
         WebhookDeliveryThread job = webhookServiceImpl.getDeliveryJob(event, webhook, configs);
 
@@ -413,9 +415,11 @@ public class WebhookServiceImplTest {
         Account account = Mockito.mock(Account.class);
 
         Mockito.when(webhook.getAccountId()).thenReturn(2L);
+        Mockito.when(webhook.getPayloadUrl()).thenReturn("https://example.com");
         Mockito.when(accountManager.getAccount(Mockito.anyLong())).thenReturn(account);
 
-        Runnable job = webhookServiceImpl.getManualDeliveryJob(null, webhook, "   ", future);
+        URI uri = WebhookUrlValidator.validateWebhookDestinationUrl(webhook.getPayloadUrl(), false, null, true);
+        Runnable job = webhookServiceImpl.getManualDeliveryJob(null, webhook, "   ", uri, future);
 
         Assert.assertNotNull(job);
         Event event = (Event) ReflectionTestUtils.getField(job, "event");
@@ -438,7 +442,7 @@ public class WebhookServiceImplTest {
         Mockito.when(existingDelivery.getPayload()).thenReturn("test-payload");
         Mockito.when(eventJoinVO.getAccountUuid()).thenReturn("account-uuid");
 
-        Runnable job = webhookServiceImpl.getManualDeliveryJob(existingDelivery, webhook, null, future);
+        Runnable job = webhookServiceImpl.getManualDeliveryJob(existingDelivery, webhook, null, null, future);
 
         Assert.assertNotNull(job);
         Mockito.verify(eventJoinDao, Mockito.times(1)).findById(123L);
@@ -454,7 +458,7 @@ public class WebhookServiceImplTest {
         Mockito.when(accountManager.getAccount(1L)).thenReturn(account);
         Mockito.when(account.getUuid()).thenReturn("account-uuid");
 
-        Runnable job = webhookServiceImpl.getManualDeliveryJob(null, webhook, "test-payload", future);
+        Runnable job = webhookServiceImpl.getManualDeliveryJob(null, webhook, "test-payload", null, future);
 
         Assert.assertNotNull(job);
         Mockito.verify(accountManager, Mockito.times(1)).getAccount(1L);
@@ -470,7 +474,7 @@ public class WebhookServiceImplTest {
         Mockito.when(webhook.getAccountId()).thenReturn(2L);
         Mockito.when(accountManager.getAccount(Mockito.anyLong())).thenReturn(account);
 
-        WebhookDeliveryThread job = (WebhookDeliveryThread) webhookServiceImpl.getManualDeliveryJob(null, webhook, "test-payload", future);
+        WebhookDeliveryThread job = (WebhookDeliveryThread) webhookServiceImpl.getManualDeliveryJob(null, webhook, "test-payload", null, future);
 
         Assert.assertEquals(3, ReflectionTestUtils.getField(job, "deliveryTries"));
         Assert.assertEquals(10, ReflectionTestUtils.getField(job, "deliveryTimeout"));
@@ -607,7 +611,7 @@ public class WebhookServiceImplTest {
         WebhookDeliveryVO persistedDelivery = Mockito.mock(WebhookDeliveryVO.class);
         Mockito.when(webhookDeliveryDao.persist(Mockito.any(WebhookDeliveryVO.class))).thenReturn(persistedDelivery);
 
-        WebhookDelivery returnedDelivery = webhookServiceImpl.executeWebhookDelivery(delivery, webhook, "payload");
+        WebhookDelivery returnedDelivery = webhookServiceImpl.executeWebhookDelivery(delivery, webhook, "payload", null);
 
         Assert.assertEquals(persistedDelivery, returnedDelivery);
         Mockito.verify(webhookDeliveryDao, Mockito.times(1)).persist(Mockito.any(WebhookDeliveryVO.class));
@@ -638,7 +642,7 @@ public class WebhookServiceImplTest {
         });
         ReflectionTestUtils.setField(webhookServiceImpl, "webhookJobExecutor", executorService);
 
-        WebhookDelivery returnedDelivery = webhookServiceImpl.executeWebhookDelivery(null, webhook, "payload");
+        WebhookDelivery returnedDelivery = webhookServiceImpl.executeWebhookDelivery(null, webhook, "payload", null);
 
         Assert.assertNotNull(returnedDelivery);
         Assert.assertEquals("headers", returnedDelivery.getHeaders());
diff --git a/plugins/event-bus/webhook/src/test/java/org/apache/cloudstack/mom/webhook/dao/WebhookDeliveryDaoImplTest.java b/plugins/event-bus/webhook/src/test/java/org/apache/cloudstack/mom/webhook/dao/WebhookDeliveryDaoImplTest.java
index ff0f222cdcc..bc3fc034720 100644
--- a/plugins/event-bus/webhook/src/test/java/org/apache/cloudstack/mom/webhook/dao/WebhookDeliveryDaoImplTest.java
+++ b/plugins/event-bus/webhook/src/test/java/org/apache/cloudstack/mom/webhook/dao/WebhookDeliveryDaoImplTest.java
@@ -69,11 +69,11 @@ public class WebhookDeliveryDaoImplTest {
 
         doReturn(1).when(webhookDeliveryDao).remove(any(SearchCriteria.class));
 
-        int result = webhookDeliveryDao.deleteByDeleteApiParams(null, webhookId, null, startDate, null);
+        int result = webhookDeliveryDao.deleteByDeleteApiParams(null, List.of(webhookId), null, startDate, null, true);
 
         assertEquals(1, result);
         verify(webhookDeliveryDao).remove(any(SearchCriteria.class));
-        verify(mockSearchBuilder).and(eq("webhookId"), any(), eq(SearchCriteria.Op.EQ));
+        verify(mockSearchBuilder).and(eq("webhookId"), any(), eq(SearchCriteria.Op.IN));
         verify(mockSearchCriteria).setParameters("webhookId", webhookId);
     }
 
@@ -87,7 +87,7 @@ public class WebhookDeliveryDaoImplTest {
 
         doReturn(0).when(webhookDeliveryDao).remove(any(SearchCriteria.class));
 
-        int result = webhookDeliveryDao.deleteByDeleteApiParams(id, webhookId, managementServerId, startDate, endDate);
+        int result = webhookDeliveryDao.deleteByDeleteApiParams(id, List.of(webhookId), managementServerId, startDate, endDate, true);
 
         assertEquals(0, result);
     }
diff --git a/plugins/event-bus/webhook/src/test/java/org/apache/cloudstack/mom/webhook/dao/WebhookDeliveryJoinDaoImplTest.java b/plugins/event-bus/webhook/src/test/java/org/apache/cloudstack/mom/webhook/dao/WebhookDeliveryJoinDaoImplTest.java
index f7561536a3f..c475e1e20db 100644
--- a/plugins/event-bus/webhook/src/test/java/org/apache/cloudstack/mom/webhook/dao/WebhookDeliveryJoinDaoImplTest.java
+++ b/plugins/event-bus/webhook/src/test/java/org/apache/cloudstack/mom/webhook/dao/WebhookDeliveryJoinDaoImplTest.java
@@ -72,7 +72,7 @@ public class WebhookDeliveryJoinDaoImplTest {
 
         Pair<List<WebhookDeliveryJoinVO>, Integer> result =
                 webhookDeliveryJoinDao.searchAndCountByListApiParameters(id, null, null,
-                        null, null, null, null,null);
+                        null, null, null, null, null, true);
 
         assertNotNull(result);
         assertTrue(result.second() > 0);
@@ -90,7 +90,7 @@ public class WebhookDeliveryJoinDaoImplTest {
 
         Pair<List<WebhookDeliveryJoinVO>, Integer> result =
                 webhookDeliveryJoinDao.searchAndCountByListApiParameters(null, List.of(webhookId),
-                        null, null, null, null, null, null);
+                        null, null, null, null, null, null, true);
 
         assertNotNull(result);
         assertTrue(result.second() > 0);
@@ -112,7 +112,7 @@ public class WebhookDeliveryJoinDaoImplTest {
 
         Pair<List<WebhookDeliveryJoinVO>, Integer> result =
                 webhookDeliveryJoinDao.searchAndCountByListApiParameters(null, null,
-                        managementServerId, keyword, start, end, null, searchFilter);
+                        managementServerId, keyword, start, end, null, searchFilter, true);
 
         assertNotNull(result);
         assertTrue(result.second() > 0);