From 6400f926031acd8fd501d13455e6a2d1b49809b8 Mon Sep 17 00:00:00 2001 From: Hiroyuki Wada Date: Mon, 10 Jun 2024 19:31:31 +0900 Subject: [PATCH 1/2] Fix GroupsHandler - Fixed issue where the name attribute could not be renamed - Corrected the schema for several attributes, such as description, which are not fetched by default --- .../connid/box/GroupsHandler.java | 11 ++++++-- .../connid/box/GroupUpdateTests.java | 26 +++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/exclamationlabs/connid/box/GroupsHandler.java b/src/main/java/com/exclamationlabs/connid/box/GroupsHandler.java index 732b53e..9028fdc 100644 --- a/src/main/java/com/exclamationlabs/connid/box/GroupsHandler.java +++ b/src/main/java/com/exclamationlabs/connid/box/GroupsHandler.java @@ -160,22 +160,27 @@ public ObjectClassInfo getGroupSchema() { // description builder.addAttributeInfo(AttributeInfoBuilder.define(ATTR_DESCRIPTION) + .setReturnedByDefault(STANDARD_ATTRS_SET.contains(ATTR_DESCRIPTION)) .build()); // external_sync_identifier builder.addAttributeInfo(AttributeInfoBuilder.define(ATTR_EXTERNAL_SYNC_IDENTIFIER) + .setReturnedByDefault(STANDARD_ATTRS_SET.contains(ATTR_EXTERNAL_SYNC_IDENTIFIER)) .build()); // invitability_level builder.addAttributeInfo(AttributeInfoBuilder.define(ATTR_INVITABILITY_LEVEL) + .setReturnedByDefault(STANDARD_ATTRS_SET.contains(ATTR_INVITABILITY_LEVEL)) .build()); // member_viewability_level builder.addAttributeInfo(AttributeInfoBuilder.define(ATTR_MEMBER_VIEWABILITY_LEVEL) + .setReturnedByDefault(STANDARD_ATTRS_SET.contains(ATTR_MEMBER_VIEWABILITY_LEVEL)) .build()); // provenance builder.addAttributeInfo(AttributeInfoBuilder.define(ATTR_PROVENANCE) + .setReturnedByDefault(STANDARD_ATTRS_SET.contains(ATTR_PROVENANCE)) .build()); // Association @@ -299,7 +304,7 @@ public Set updateGroup(Uid uid, Set modification BoxGroup.Info info = group.new Info(); for (AttributeDelta delta : modifications) { - if (delta.getName().equals(ATTR_NAME)) { + if (delta.getName().equals(Name.NAME)) { info.setName(getStringValue(delta)); } else if (delta.getName().equals(ATTR_PROVENANCE)) { @@ -320,7 +325,9 @@ public Set updateGroup(Uid uid, Set modification } try { - info.getResource().updateInfo(info); + if (info.getPendingChangesAsJsonObject() != null) { + info.getResource().updateInfo(info); + } // Box doesn't support to modify group's id return null; diff --git a/src/test/java/com/exclamationlabs/connid/box/GroupUpdateTests.java b/src/test/java/com/exclamationlabs/connid/box/GroupUpdateTests.java index 1d55adc..d828d86 100644 --- a/src/test/java/com/exclamationlabs/connid/box/GroupUpdateTests.java +++ b/src/test/java/com/exclamationlabs/connid/box/GroupUpdateTests.java @@ -111,4 +111,30 @@ void updateGroup_otherError() { assertNotNull(e); assertEquals(2, count.get()); } + + @Test + void renameGroup() { + // Given + String groupName = "Tech"; + + Set modifications = new HashSet<>(); + modifications.add(AttributeDeltaBuilder.build(Name.NAME, "Support")); + + AtomicReference request = new AtomicReference<>(); + mockAPI.push(req -> { + request.set(req); + + return ok("group-update.json"); + }); + + // When + Set sideEffects = connector.updateDelta(OBJECT_CLASS_GROUP, + new Uid("11446498", new Name(groupName)), + modifications, new OperationOptionsBuilder().build()); + + // Then + assertNotNull(request.get()); + assertEquals("Support", getJsonAttr(request.get(), "name")); + assertNull(sideEffects); + } } From 8032e709b52a0a5eb2f413036285a5b56f07e145 Mon Sep 17 00:00:00 2001 From: Hiroyuki Wada Date: Mon, 10 Jun 2024 19:31:17 +0900 Subject: [PATCH 2/2] Update to version 2.3 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8ad12ea..1e4129b 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ com.exclamationlabs.connid.box connector-box - 2.2 + 2.3 ConnId Box Identity connector jar