From 646c8679a662c56f6c33dc2908c4af6a8902ec81 Mon Sep 17 00:00:00 2001 From: Andrii Landiak Date: Tue, 26 Mar 2024 12:19:21 +0200 Subject: [PATCH] Fix oauth support: send to edge, when propagate to edge is false --- .../service/edge/EdgeEventSourcingListener.java | 3 --- .../oauth2/OAuth2MsgConstructor.java | 1 + .../edge/rpc/fetch/OAuth2EdgeEventFetcher.java | 7 +++---- .../thingsboard/server/edge/OAuth2EdgeTest.java | 17 +++++++++-------- 4 files changed, 13 insertions(+), 15 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/service/edge/EdgeEventSourcingListener.java b/application/src/main/java/org/thingsboard/server/service/edge/EdgeEventSourcingListener.java index b48b4ac3b2..6c2f81a200 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/EdgeEventSourcingListener.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/EdgeEventSourcingListener.java @@ -160,9 +160,6 @@ public class EdgeEventSourcingListener { private boolean isValidSaveEntityEventForEdgeProcessing(SaveEntityEvent event) { Object entity = event.getEntity(); Object oldEntity = event.getOldEntity(); - if (entity instanceof OAuth2Info oAuth2Info) { - return oAuth2Info.isEdgeEnabled(); - } switch (event.getEntityId().getEntityType()) { case RULE_CHAIN: if (entity instanceof RuleChain ruleChain) { diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/oauth2/OAuth2MsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/oauth2/OAuth2MsgConstructor.java index a141e618f4..c628b042a2 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/oauth2/OAuth2MsgConstructor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/oauth2/OAuth2MsgConstructor.java @@ -28,4 +28,5 @@ public class OAuth2MsgConstructor { public OAuth2UpdateMsg constructOAuth2UpdateMsg(OAuth2Info oAuth2Info) { return OAuth2UpdateMsg.newBuilder().setEntity(JacksonUtil.toString(oAuth2Info)).build(); } + } diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/fetch/OAuth2EdgeEventFetcher.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/fetch/OAuth2EdgeEventFetcher.java index e4ef6cfdb6..4412f91183 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/fetch/OAuth2EdgeEventFetcher.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/fetch/OAuth2EdgeEventFetcher.java @@ -47,11 +47,10 @@ public class OAuth2EdgeEventFetcher implements EdgeEventFetcher { public PageData fetchEdgeEvents(TenantId tenantId, Edge edge, PageLink pageLink) { List result = new ArrayList<>(); OAuth2Info oAuth2Info = oAuth2Service.findOAuth2Info(); - if (oAuth2Info.isEdgeEnabled()) { - result.add(EdgeUtils.constructEdgeEvent(tenantId, edge.getId(), EdgeEventType.OAUTH2, - EdgeEventActionType.ADDED, null, JacksonUtil.valueToTree(oAuth2Info))); - } + result.add(EdgeUtils.constructEdgeEvent(tenantId, edge.getId(), EdgeEventType.OAUTH2, + EdgeEventActionType.ADDED, null, JacksonUtil.valueToTree(oAuth2Info))); // returns PageData object to be in sync with other fetchers return new PageData<>(result, 1, result.size(), false); } + } diff --git a/application/src/test/java/org/thingsboard/server/edge/OAuth2EdgeTest.java b/application/src/test/java/org/thingsboard/server/edge/OAuth2EdgeTest.java index f10338b37b..b3cc133f4b 100644 --- a/application/src/test/java/org/thingsboard/server/edge/OAuth2EdgeTest.java +++ b/application/src/test/java/org/thingsboard/server/edge/OAuth2EdgeTest.java @@ -46,12 +46,6 @@ public class OAuth2EdgeTest extends AbstractEdgeTest { edgeImitator.expectMessageAmount(1); OAuth2Info oAuth2Info = createDefaultOAuth2Info(); oAuth2Info = doPost("/api/oauth2/config", oAuth2Info, OAuth2Info.class); - Assert.assertFalse(edgeImitator.waitForMessages(10)); - - // enable edge support - edgeImitator.expectMessageAmount(1); - oAuth2Info.setEdgeEnabled(true); - oAuth2Info = doPost("/api/oauth2/config", oAuth2Info, OAuth2Info.class); Assert.assertTrue(edgeImitator.waitForMessages()); AbstractMessage latestMessage = edgeImitator.getLatestMessage(); Assert.assertTrue(latestMessage instanceof OAuth2UpdateMsg); @@ -59,16 +53,23 @@ public class OAuth2EdgeTest extends AbstractEdgeTest { OAuth2Info result = JacksonUtil.fromString(oAuth2UpdateMsg.getEntity(), OAuth2Info.class, true); Assert.assertEquals(oAuth2Info, result); - // disable oauth suppor + // disable oauth support + edgeImitator.expectMessageAmount(1); oAuth2Info.setEnabled(false); oAuth2Info.setEdgeEnabled(false); doPost("/api/oauth2/config", oAuth2Info, OAuth2Info.class); + Assert.assertTrue(edgeImitator.waitForMessages()); + latestMessage = edgeImitator.getLatestMessage(); + Assert.assertTrue(latestMessage instanceof OAuth2UpdateMsg); + oAuth2UpdateMsg = (OAuth2UpdateMsg) latestMessage; + result = JacksonUtil.fromString(oAuth2UpdateMsg.getEntity(), OAuth2Info.class, true); + Assert.assertEquals(oAuth2Info, result); loginTenantAdmin(); } private OAuth2Info createDefaultOAuth2Info() { - return new OAuth2Info(true, false, Lists.newArrayList( + return new OAuth2Info(true, true, Lists.newArrayList( OAuth2ParamsInfo.builder() .domainInfos(Lists.newArrayList( OAuth2DomainInfo.builder().name("domain").scheme(SchemeType.MIXED).build()