From cfcea50d8caacfacd4c658b3c8c0ecf29413f504 Mon Sep 17 00:00:00 2001 From: RuiChen12 <100800368+RuiChen12@users.noreply.github.com> Date: Thu, 26 Sep 2024 21:58:44 -1000 Subject: [PATCH] updated the return type for updateSyncDest --- .../api/controller/ErrorControllerAdvice.java | 6 +- .../GroupingsRestControllerv2_1.java | 29 ++-- ...upingUpdatedAttributesResultException.java | 41 ++++++ .../GroupingsServiceResultException.java | 41 ------ .../GroupingUpdatedAttributesResult.java | 60 +++++++-- .../api/service/GroupingAttributeService.java | 30 ++--- .../controller/ErrorControllerAdviceTest.java | 4 +- .../GroupingsRestControllerv2_1Test.java | 125 +++++------------- .../TestGroupingsRestControllerv2_1.java | 64 ++------- .../GroupingsUpdatedAttributesResultTest.java | 69 ++++++++-- .../service/GroupingAttributeServiceTest.java | 10 +- .../service/TestGroupingAttributeService.java | 34 ++--- .../GroupingServiceResultExceptionTest.java | 35 ----- ...gUpdatedAttributesResultExceptionTest.java | 42 ++++++ 14 files changed, 287 insertions(+), 303 deletions(-) create mode 100644 src/main/java/edu/hawaii/its/api/exception/GroupingUpdatedAttributesResultException.java delete mode 100644 src/main/java/edu/hawaii/its/api/exception/GroupingsServiceResultException.java delete mode 100644 src/test/java/edu/hawaii/its/api/type/GroupingServiceResultExceptionTest.java create mode 100644 src/test/java/edu/hawaii/its/api/type/GroupingUpdatedAttributesResultExceptionTest.java diff --git a/src/main/java/edu/hawaii/its/api/controller/ErrorControllerAdvice.java b/src/main/java/edu/hawaii/its/api/controller/ErrorControllerAdvice.java index 99743490d..2bf42529a 100644 --- a/src/main/java/edu/hawaii/its/api/controller/ErrorControllerAdvice.java +++ b/src/main/java/edu/hawaii/its/api/controller/ErrorControllerAdvice.java @@ -20,7 +20,7 @@ import edu.hawaii.its.api.exception.AccessDeniedException; import edu.hawaii.its.api.exception.ExceptionForTesting; -import edu.hawaii.its.api.exception.GroupingsServiceResultException; +import edu.hawaii.its.api.exception.GroupingUpdatedAttributesResultException ; import edu.hawaii.its.api.exception.UhMemberNotFoundException; import edu.hawaii.its.api.service.EmailService; import edu.hawaii.its.api.type.ApiError; @@ -206,9 +206,9 @@ public ResponseEntity handleGroupingsHTTPException(GroupingsHTTPExcept return buildResponseEntity(apiError); } - @ExceptionHandler(GroupingsServiceResultException.class) + @ExceptionHandler(GroupingUpdatedAttributesResultException .class) public ResponseEntity handleGroupingsServiceResultException( - GroupingsServiceResultException gsre) { + GroupingUpdatedAttributesResultException gsre) { emailService.sendWithStack(gsre, "Groupings ServiceResult Exception"); ApiError.Builder errorBuilder = new ApiError.Builder() .status(HttpStatus.INTERNAL_SERVER_ERROR) diff --git a/src/main/java/edu/hawaii/its/api/controller/GroupingsRestControllerv2_1.java b/src/main/java/edu/hawaii/its/api/controller/GroupingsRestControllerv2_1.java index 85782b29e..922f0e190 100644 --- a/src/main/java/edu/hawaii/its/api/controller/GroupingsRestControllerv2_1.java +++ b/src/main/java/edu/hawaii/its/api/controller/GroupingsRestControllerv2_1.java @@ -21,6 +21,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; +import edu.hawaii.its.api.groupings.GroupingUpdatedAttributesResult; import edu.hawaii.its.api.groupings.GroupingAddResult; import edu.hawaii.its.api.groupings.GroupingAddResults; import edu.hawaii.its.api.groupings.GroupingDescription; @@ -50,7 +51,6 @@ import edu.hawaii.its.api.service.UpdateMemberService; import edu.hawaii.its.api.type.Announcements; import edu.hawaii.its.api.type.AsyncJobResult; -import edu.hawaii.its.api.type.GroupingsServiceResult; import edu.hawaii.its.api.type.OotbActiveProfile; import edu.hawaii.its.api.type.OotbActiveProfileResult; import edu.hawaii.its.api.type.OptRequest; @@ -563,36 +563,27 @@ public ResponseEntity updateDescription( } /** - * Update grouping to enable given preference. + * Update grouping to enable/disable given preference. */ - @PutMapping(value = "/groupings/{path:[\\w-:.]+}/sync-destination/{id:[\\w-:.]+}/enable") - public ResponseEntity enableSyncDest( + @PutMapping(value = "/groupings/{path:[\\w-:.]+}/sync-destination/{id:[\\w-:.]+}/{status:true|false}") + public ResponseEntity updateSyncDest( @RequestHeader(CURRENT_USER_KEY) String currentUser, @PathVariable String path, - @PathVariable String id) { + @PathVariable String id, + @PathVariable boolean status) { + logger.info("API called with path: " + path + ", syncDestId: " + id + ", status: " + status); return ResponseEntity .ok() - .body(groupingAttributeService.changeGroupAttributeStatus(path, currentUser, id, true)); + .body(groupingAttributeService.changeGroupAttributeStatus(path, currentUser, id, status)); } - /** - * Update grouping to disable given preference. - */ - @PutMapping(value = "/groupings/{path:[\\w-:.]+}/sync-destination/{id:[\\w-:.]+}/disable") - public ResponseEntity disableSyncDest( - @RequestHeader(CURRENT_USER_KEY) String currentUser, - @PathVariable String path, - @PathVariable String id) { - return ResponseEntity - .ok() - .body(groupingAttributeService.changeGroupAttributeStatus(path, currentUser, id, false)); - } + /** * Update grouping to toggle given preference. */ @PutMapping(value = "/groupings/{path:[\\w-:.]+}/preference/{id:[\\w-:.]+}/{type:[\\w-:.]+}") - public ResponseEntity> togglePreference( + public ResponseEntity> togglePreference( @RequestHeader(CURRENT_USER_KEY) String currentUser, @PathVariable String path, @PathVariable("id") OptType preferenceId, diff --git a/src/main/java/edu/hawaii/its/api/exception/GroupingUpdatedAttributesResultException.java b/src/main/java/edu/hawaii/its/api/exception/GroupingUpdatedAttributesResultException.java new file mode 100644 index 000000000..f957b7686 --- /dev/null +++ b/src/main/java/edu/hawaii/its/api/exception/GroupingUpdatedAttributesResultException.java @@ -0,0 +1,41 @@ +package edu.hawaii.its.api.exception; + +import edu.hawaii.its.api.groupings.GroupingUpdatedAttributesResult; +import edu.hawaii.its.api.type.ApiSubError; + + +import java.io.Serial; +import java.util.ArrayList; +import java.util.List; + +public class GroupingUpdatedAttributesResultException extends RuntimeException { + private List subErrors; + @Serial + private static final long serialVersionUID = 2561503964867081711L; + private GroupingUpdatedAttributesResult gsr = null; + + public GroupingUpdatedAttributesResultException() { + this.subErrors = new ArrayList<>(); + } + + public GroupingUpdatedAttributesResultException(GroupingUpdatedAttributesResult gsr) { + this.gsr = gsr; + } + + public GroupingUpdatedAttributesResult getGsr() { + return gsr; + } + + public void setGsr(GroupingUpdatedAttributesResult gsr) { + this.gsr = gsr; + } + + public List getSubErrors() { + return subErrors; + } + + public GroupingUpdatedAttributesResultException addSubError(ApiSubError subError) { + this.subErrors.add(subError); + return this; + } +} diff --git a/src/main/java/edu/hawaii/its/api/exception/GroupingsServiceResultException.java b/src/main/java/edu/hawaii/its/api/exception/GroupingsServiceResultException.java deleted file mode 100644 index 0b4b28206..000000000 --- a/src/main/java/edu/hawaii/its/api/exception/GroupingsServiceResultException.java +++ /dev/null @@ -1,41 +0,0 @@ -package edu.hawaii.its.api.exception; - -import edu.hawaii.its.api.type.ApiSubError; -import edu.hawaii.its.api.type.GroupingsServiceResult; - -import java.util.ArrayList; -import java.util.List; - -public class GroupingsServiceResultException extends RuntimeException { - /** - * - */ - private List subErrors; - private static final long serialVersionUID = 2561503964867081711L; - private GroupingsServiceResult gsr = null; - - public GroupingsServiceResultException() { - this.subErrors = new ArrayList<>(); - } - - public GroupingsServiceResultException(GroupingsServiceResult gsr) { - this.gsr = gsr; - } - - public GroupingsServiceResult getGsr() { - return gsr; - } - - public void setGsr(GroupingsServiceResult gsr) { - this.gsr = gsr; - } - - public List getSubErrors() { - return subErrors; - } - - public GroupingsServiceResultException addSubError(ApiSubError subError) { - this.subErrors.add(subError); - return this; - } -} diff --git a/src/main/java/edu/hawaii/its/api/groupings/GroupingUpdatedAttributesResult.java b/src/main/java/edu/hawaii/its/api/groupings/GroupingUpdatedAttributesResult.java index 48e2b1323..20cfbdb80 100644 --- a/src/main/java/edu/hawaii/its/api/groupings/GroupingUpdatedAttributesResult.java +++ b/src/main/java/edu/hawaii/its/api/groupings/GroupingUpdatedAttributesResult.java @@ -1,30 +1,74 @@ package edu.hawaii.its.api.groupings; import edu.hawaii.its.api.wrapper.AssignAttributesResults; +import edu.hawaii.its.api.wrapper.Subject; +import java.util.Objects; /** * GroupingUpdatedAttributesResult contains results of an updated attribute. */ public class GroupingUpdatedAttributesResult implements GroupingResult { private final AssignAttributesResults assignAttributesResults; + private String resultCode; + private String action; + private Subject subject = null; public GroupingUpdatedAttributesResult(AssignAttributesResults assignAttributesResults) { - if (assignAttributesResults == null) { - this.assignAttributesResults = new AssignAttributesResults(); - } else { - this.assignAttributesResults = assignAttributesResults; - } + this.assignAttributesResults = Objects.requireNonNullElseGet(assignAttributesResults, AssignAttributesResults::new); } public GroupingUpdatedAttributesResult() { this.assignAttributesResults = new AssignAttributesResults(); } - @Override public String getResultCode() { - return assignAttributesResults.getResultCode(); + + public GroupingUpdatedAttributesResult(String resultCode, String action) { + this.resultCode = resultCode; + this.action = action; + this.assignAttributesResults = new AssignAttributesResults(); + } + + public GroupingUpdatedAttributesResult(String resultCode, String action, Subject subject) { + this.resultCode = resultCode; + this.action = action; + this.subject = subject; + this.assignAttributesResults = new AssignAttributesResults(); } - @Override public String getGroupPath() { + public String getResultCode() { + return resultCode != null ? resultCode : assignAttributesResults.getResultCode(); + } + + public void setResultCode(String resultCode) { + this.resultCode = resultCode; + } + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + public Subject getSubject() { + return subject; + } + + public void setSubject(Subject subject) { + this.subject = subject; + } + + @Override + public String getGroupPath() { return assignAttributesResults.getGroup().getGroupPath(); } + + public String toString() { + return "GroupingUpdatedAttributesResult{" + + "action='" + action + '\'' + + ", resultCode='" + resultCode + '\'' + + ", subject=" + subject + + '}'; + } } diff --git a/src/main/java/edu/hawaii/its/api/service/GroupingAttributeService.java b/src/main/java/edu/hawaii/its/api/service/GroupingAttributeService.java index b3ee84ed0..68521d493 100644 --- a/src/main/java/edu/hawaii/its/api/service/GroupingAttributeService.java +++ b/src/main/java/edu/hawaii/its/api/service/GroupingAttributeService.java @@ -3,16 +3,15 @@ import java.util.ArrayList; import java.util.List; +import edu.hawaii.its.api.exception.GroupingUpdatedAttributesResultException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import edu.hawaii.its.api.exception.AccessDeniedException; -import edu.hawaii.its.api.exception.GroupingsServiceResultException; import edu.hawaii.its.api.groupings.GroupingUpdateDescriptionResult; import edu.hawaii.its.api.groupings.GroupingUpdatedAttributesResult; -import edu.hawaii.its.api.type.GroupingsServiceResult; import edu.hawaii.its.api.type.OptRequest; import edu.hawaii.its.api.wrapper.AssignAttributesResults; import edu.hawaii.its.api.wrapper.AssignGrouperPrivilegesResult; @@ -72,11 +71,11 @@ public boolean isGroupingPath(String path) { /** * Turn the ability for users to opt-in/opt-out to a grouping on or off. */ - public List changeOptStatus(OptRequest optInRequest, OptRequest optOutRequest) { + public List changeOptStatus(OptRequest optInRequest, OptRequest optOutRequest) { checkPrivileges(optInRequest.getGroupNameRoot(), optInRequest.getUid()); - List results = new ArrayList<>(); + List results = new ArrayList<>(); results.add(assignGrouperPrivilege( optInRequest.getUid(), @@ -102,7 +101,7 @@ public List changeOptStatus(OptRequest optInRequest, Opt * Turns the attribute on or off in a group. * OPT_IN, OPT_OUT, and sync destinations are allowed. */ - public GroupingsServiceResult changeGroupAttributeStatus(String groupPath, String ownerUhIdentifier, + public GroupingUpdatedAttributesResult changeGroupAttributeStatus(String groupPath, String ownerUhIdentifier, String attributeName, boolean turnAttributeOn) { logger.info(String.format("changeGroupAttributeStatus; groupPath: %s; ownerUhIdentifier: %s; attributeName: %s, turnAttributeOn: %s", groupPath, ownerUhIdentifier, attributeName, turnAttributeOn)); @@ -129,7 +128,7 @@ public GroupingsServiceResult changeGroupAttributeStatus(String groupPath, Strin resultCode += ", " + attributeName + " did not exist"; } } - return new GroupingsServiceResult(resultCode, action); + return new GroupingUpdatedAttributesResult(resultCode, action); } // Check if attribute is on. @@ -165,11 +164,11 @@ public GroupingUpdatedAttributesResult updateAttribute(String currentUser, Strin /** * Helper - changeOptStatus */ - public GroupingsServiceResult assignGrouperPrivilege(String currentUser, String privilegeName, String groupName, boolean isSet) { + public GroupingUpdatedAttributesResult assignGrouperPrivilege(String currentUser, String privilegeName, String groupName, boolean isSet) { String action = "set " + privilegeName + " " + isSet + " for " + EVERY_ENTITY + " in " + groupName; AssignGrouperPrivilegesResult assignGrouperPrivilegesResult = grouperService.assignGrouperPrivilegesResult(currentUser, groupName, privilegeName, EVERY_ENTITY, isSet); - return makeGroupingsServiceResult(assignGrouperPrivilegesResult.getResultCode(), action); + return makeGroupingUpdatedAttributesResult(assignGrouperPrivilegesResult.getResultCode(), action); } // Updates a Group's description, then passes the Group object to GrouperFactoryService to be saved in Grouper. @@ -197,15 +196,14 @@ private void checkPrivileges(String groupingPath, String ownerIdentifier) { } } - public GroupingsServiceResult makeGroupingsServiceResult(String resultCode, String action) { - GroupingsServiceResult groupingsServiceResult = new GroupingsServiceResult(); - groupingsServiceResult.setAction(action); - groupingsServiceResult.setResultCode(resultCode); - - if (groupingsServiceResult.getResultCode().startsWith(FAILURE)) { - throw new GroupingsServiceResultException(groupingsServiceResult); + public GroupingUpdatedAttributesResult makeGroupingUpdatedAttributesResult(String resultCode, String action) { + GroupingUpdatedAttributesResult groupingUpdatedAttributesResult = new GroupingUpdatedAttributesResult(); + groupingUpdatedAttributesResult.setAction(action); + groupingUpdatedAttributesResult.setResultCode(resultCode); + if (groupingUpdatedAttributesResult.getResultCode().startsWith(FAILURE)) { + throw new GroupingUpdatedAttributesResultException(groupingUpdatedAttributesResult); } - return groupingsServiceResult; + return groupingUpdatedAttributesResult; } } diff --git a/src/test/java/edu/hawaii/its/api/controller/ErrorControllerAdviceTest.java b/src/test/java/edu/hawaii/its/api/controller/ErrorControllerAdviceTest.java index 2cc74cc23..4eb1bd0ec 100644 --- a/src/test/java/edu/hawaii/its/api/controller/ErrorControllerAdviceTest.java +++ b/src/test/java/edu/hawaii/its/api/controller/ErrorControllerAdviceTest.java @@ -33,7 +33,7 @@ import edu.hawaii.its.api.configuration.SpringBootWebApplication; import edu.hawaii.its.api.exception.AccessDeniedException; -import edu.hawaii.its.api.exception.GroupingsServiceResultException; +import edu.hawaii.its.api.exception.GroupingUpdatedAttributesResultException; import edu.internet2.middleware.grouperClient.ws.GcWebServiceError; import org.springframework.web.context.WebApplicationContext; @@ -116,7 +116,7 @@ public void ErrorControllerTest() { statusCode = errorControllerAdvice.handleGcWebServiceError(gwse).getStatusCode().toString(); assertThat(statusCode, is("404 NOT_FOUND")); - GroupingsServiceResultException gsr = new GroupingsServiceResultException(); + GroupingUpdatedAttributesResultException gsr = new GroupingUpdatedAttributesResultException(); statusCode = errorControllerAdvice.handleGroupingsServiceResultException(gsr).getStatusCode().toString(); assertThat(statusCode, is("500 INTERNAL_SERVER_ERROR")); diff --git a/src/test/java/edu/hawaii/its/api/controller/GroupingsRestControllerv2_1Test.java b/src/test/java/edu/hawaii/its/api/controller/GroupingsRestControllerv2_1Test.java index 08a06e466..46072e84f 100644 --- a/src/test/java/edu/hawaii/its/api/controller/GroupingsRestControllerv2_1Test.java +++ b/src/test/java/edu/hawaii/its/api/controller/GroupingsRestControllerv2_1Test.java @@ -65,6 +65,7 @@ import edu.hawaii.its.api.type.Grouping; import edu.hawaii.its.api.type.GroupingPath; import edu.hawaii.its.api.type.GroupingsServiceResult; +import edu.hawaii.its.api.groupings.GroupingUpdatedAttributesResult; import edu.hawaii.its.api.type.OotbActiveProfile; import edu.hawaii.its.api.type.OotbActiveProfileResult; import edu.hawaii.its.api.type.OptRequest; @@ -216,44 +217,6 @@ private Grouping groupingTwo() { return grouping; } - //Test data (2.1 API). - private List gsrListIn() { - List gsrList = new ArrayList<>(); - gsrList.add(new GroupingsServiceResult(SUCCESS, "member is opted-in")); - return gsrList; - } - - //Test data (2.1 API). - private List gsrListIn2() { - List gsrList = new ArrayList<>(); - gsrList.add(new GroupingsServiceResult(SUCCESS, "member is not opted-in")); - return gsrList; - } - - //Test data (2.1 API). - private List gsrListOut() { - List gsrList = new ArrayList<>(); - gsrList.add(new GroupingsServiceResult(SUCCESS, "member is opted-out")); - return gsrList; - } - - //Test data (2.1 API). - private List gsrListOut2() { - List gsrList = new ArrayList<>(); - gsrList.add(new GroupingsServiceResult(SUCCESS, "member is not opted-out")); - return gsrList; - } - - //Test data (2.1 API). - private GroupingsServiceResult gsrListserv() { - return new GroupingsServiceResult(SUCCESS, "listserv status changed"); - } - - //Test data (2.1 API). - private GroupingsServiceResult gsrReleasedGrouping() { - return new GroupingsServiceResult(SUCCESS, "ldap status changed"); - } - @Test public void helloTest() throws Exception { MvcResult result = mockMvc.perform(get(API_BASE + "/")) @@ -772,77 +735,53 @@ public void updateDescriptionTest() throws Exception { @Test public void enablePreferenceSyncDestTest() throws Exception { - OptRequest optInRequest = new OptRequest.Builder() - .withOptType(OptType.IN) - .withUid(UID) - .withGroupNameRoot("grouping") - .withPrivilegeType(PrivilegeType.IN) - .withOptValue(true) - .build(); - - OptRequest optOutRequest = new OptRequest.Builder() - .withOptType(OptType.IN) - .withUid(UID) - .withGroupNameRoot("grouping") - .withPrivilegeType(PrivilegeType.OUT) - .withOptValue(true) - .build(); - - given(groupingAttributeService.changeOptStatus(optInRequest, optOutRequest)).willReturn(gsrListIn()); - mockMvc.perform(put(API_BASE + "/groupings/grouping/preference/" + OptType.IN.value() + "/enable") + given(groupingAttributeService.changeGroupAttributeStatus(GROUPING, UID, LISTSERV, true)) + .willReturn(new GroupingUpdatedAttributesResult(SUCCESS, "listserv status changed")); + + mockMvc.perform(put(API_BASE + "/groupings/" + GROUPING + "/sync-destination/" + LISTSERV + "/true") .header(CURRENT_USER, UID)) .andExpect(status().isOk()) - .andExpect(jsonPath("$", hasSize(1))) - .andExpect(jsonPath("$[0].resultCode").value(SUCCESS)) - .andExpect(jsonPath("$[0].action").value("member is opted-in")); - verify(groupingAttributeService, times(1)).changeOptStatus(optInRequest, optOutRequest); - - optInRequest = new OptRequest.Builder() - .withOptType(OptType.OUT) - .withUid(UID) - .withGroupNameRoot("grouping") - .withPrivilegeType(PrivilegeType.IN) - .withOptValue(false) - .build(); - - optOutRequest = new OptRequest.Builder() - .withOptType(OptType.OUT) - .withUid(UID) - .withGroupNameRoot("grouping") - .withPrivilegeType(PrivilegeType.OUT) - .withOptValue(false) - .build(); - - given(groupingAttributeService.changeOptStatus(optInRequest, optOutRequest)).willReturn(gsrListOut()); - mockMvc.perform(put(API_BASE + "/groupings/grouping/preference/" + OptType.OUT.value() + "/disable") + .andExpect(jsonPath("$.resultCode").value(SUCCESS)) + .andExpect(jsonPath("$.action").value("listserv status changed")); + + verify(groupingAttributeService, times(1)) + .changeGroupAttributeStatus(GROUPING, UID, LISTSERV, true); + + given(groupingAttributeService.changeGroupAttributeStatus(GROUPING, UID, LISTSERV, false)) + .willReturn(new GroupingUpdatedAttributesResult(SUCCESS, "listserv status changed")); + + mockMvc.perform(put(API_BASE + "/groupings/" + GROUPING + "/sync-destination/" + LISTSERV + "/false") .header(CURRENT_USER, UID)) .andExpect(status().isOk()) - .andExpect(jsonPath("$", hasSize(1))) - .andExpect(jsonPath("$[0].resultCode").value(SUCCESS)) - .andExpect(jsonPath("$[0].action").value("member is opted-out")); - verify(groupingAttributeService, times(1)).changeOptStatus(optInRequest, optOutRequest); - - given(groupingAttributeService.changeGroupAttributeStatus("grouping", UID, LISTSERV, true)) - .willReturn(gsrListserv()); - mockMvc.perform(put(API_BASE + "/groupings/grouping/sync-destination/" + LISTSERV + "/enable") + .andExpect(jsonPath("$.resultCode").value(SUCCESS)) + .andExpect(jsonPath("$.action").value("listserv status changed")); + + verify(groupingAttributeService, times(1)) + .changeGroupAttributeStatus(GROUPING, UID, LISTSERV, false); + + given(groupingAttributeService.changeGroupAttributeStatus(GROUPING, UID, RELEASED_GROUPING, true)) + .willReturn(new GroupingUpdatedAttributesResult(SUCCESS, "ldap status changed")); + + mockMvc.perform(put(API_BASE + "/groupings/" + GROUPING + "/sync-destination/" + RELEASED_GROUPING + "/true") .header(CURRENT_USER, UID)) .andExpect(status().isOk()) .andExpect(jsonPath("$.resultCode").value(SUCCESS)) - .andExpect(jsonPath("$.action").value("listserv status changed")); + .andExpect(jsonPath("$.action").value("ldap status changed")); verify(groupingAttributeService, times(1)) - .changeGroupAttributeStatus("grouping", UID, LISTSERV, true); + .changeGroupAttributeStatus(GROUPING, UID, RELEASED_GROUPING, true); + + given(groupingAttributeService.changeGroupAttributeStatus(GROUPING, UID, RELEASED_GROUPING, false)) + .willReturn(new GroupingUpdatedAttributesResult(SUCCESS, "ldap status changed")); - given(groupingAttributeService.changeGroupAttributeStatus("grouping", UID, RELEASED_GROUPING, true)) - .willReturn(gsrReleasedGrouping()); - mockMvc.perform(put(API_BASE + "/groupings/grouping/sync-destination/" + RELEASED_GROUPING + "/enable") + mockMvc.perform(put(API_BASE + "/groupings/" + GROUPING + "/sync-destination/" + RELEASED_GROUPING + "/false") .header(CURRENT_USER, UID)) .andExpect(status().isOk()) .andExpect(jsonPath("$.resultCode").value(SUCCESS)) .andExpect(jsonPath("$.action").value("ldap status changed")); verify(groupingAttributeService, times(1)) - .changeGroupAttributeStatus("grouping", UID, RELEASED_GROUPING, true); + .changeGroupAttributeStatus(GROUPING, UID, RELEASED_GROUPING, false); } @Test diff --git a/src/test/java/edu/hawaii/its/api/controller/TestGroupingsRestControllerv2_1.java b/src/test/java/edu/hawaii/its/api/controller/TestGroupingsRestControllerv2_1.java index 1ee57aa1d..6b8727f86 100644 --- a/src/test/java/edu/hawaii/its/api/controller/TestGroupingsRestControllerv2_1.java +++ b/src/test/java/edu/hawaii/its/api/controller/TestGroupingsRestControllerv2_1.java @@ -17,6 +17,7 @@ import java.util.List; import java.util.Map; + import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -29,7 +30,6 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.springframework.web.context.WebApplicationContext; - import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; @@ -48,6 +48,7 @@ import edu.hawaii.its.api.groupings.MemberAttributeResults; import edu.hawaii.its.api.groupings.MembershipResults; import edu.hawaii.its.api.groupings.ManageSubjectResults; +import edu.hawaii.its.api.groupings.GroupingUpdatedAttributesResult; import edu.hawaii.its.api.service.GroupingAttributeService; import edu.hawaii.its.api.service.GroupingsService; import edu.hawaii.its.api.service.MemberService; @@ -596,7 +597,6 @@ public void removeOwnersTest() throws Exception { // public void removePathOwnersTest() throws Exception { // // } - @Test public void updateDescriptionTest() throws Exception { String description = groupingsService.getGroupingDescription(GROUPING); @@ -613,66 +613,30 @@ public void updateDescriptionTest() throws Exception { } @Test - public void enableSyncDestTest() throws Exception { - String url = API_BASE_URL + "groupings/" + GROUPING + "/sync-destination/" + OptType.IN.value() + "/enable"; + public void updateSyncDestTest() throws Exception { + String url = API_BASE_URL + "groupings/" + GROUPING + "/sync-destination/" + OptType.IN.value() + "/true"; MvcResult mvcResult = mockMvc.perform(put(url) .header(CURRENT_USER, ADMIN)) .andExpect(status().isOk()) .andReturn(); - assertNotNull(objectMapper.readValue(mvcResult.getResponse().getContentAsByteArray(), - GroupingsServiceResult.class)); - } - @Test - public void disableSyncDestTest() throws Exception { - String url = API_BASE_URL + "groupings/" + GROUPING + "/sync-destination/" + OptType.IN.value() + "/disable"; - MvcResult mvcResult = mockMvc.perform(put(url) - .header(CURRENT_USER, ADMIN)) - .andExpect(status().isOk()) - .andReturn(); - assertNotNull(objectMapper.readValue(mvcResult.getResponse().getContentAsByteArray(), - GroupingsServiceResult.class)); - } + GroupingUpdatedAttributesResult result = objectMapper.readValue(mvcResult.getResponse().getContentAsByteArray(), GroupingUpdatedAttributesResult.class); + assertNotNull(result); + assertNotNull(result.getResultCode()); + assertNotNull(result.getAction()); - @Test - public void enablePreferenceTest() throws Exception { - String url = API_BASE_URL + "groupings/" + GROUPING + "/preference/" + OptType.IN.value() + "/enable"; - MvcResult mvcResult = mockMvc.perform(put(url) - .header(CURRENT_USER, ADMIN)) - .andExpect(status().isOk()) - .andReturn(); - assertNotNull(objectMapper.readValue(mvcResult.getResponse().getContentAsByteArray(), List.class)); - - url = API_BASE_URL + "groupings/" + GROUPING + "/preference/" + OptType.OUT.value() + "/enable"; + url = API_BASE_URL + "groupings/" + GROUPING + "/sync-destination/" + OptType.IN.value() + "/false"; mvcResult = mockMvc.perform(put(url) .header(CURRENT_USER, ADMIN)) .andExpect(status().isOk()) .andReturn(); - assertNotNull(objectMapper.readValue(mvcResult.getResponse().getContentAsByteArray(), List.class)); - - url = API_BASE_URL + "groupings/" + GROUPING + "/preference/" + "badPref" + "/enable"; - mockMvc.perform(put(url) - .header(CURRENT_USER, ADMIN)) - .andExpect(status().is5xxServerError()); - } - - @Test - public void disablePreferenceTest() throws Exception { - String url = API_BASE_URL + "groupings/" + GROUPING + "/preference/" + OptType.IN.value() + "/disable"; - MvcResult mvcResult = mockMvc.perform(put(url) - .header(CURRENT_USER, ADMIN)) - .andExpect(status().isOk()) - .andReturn(); - assertNotNull(objectMapper.readValue(mvcResult.getResponse().getContentAsByteArray(), List.class)); - url = API_BASE_URL + "groupings/" + GROUPING + "/preference/" + OptType.OUT.value() + "/disable"; - mvcResult = mockMvc.perform(put(url) - .header(CURRENT_USER, ADMIN)) - .andExpect(status().isOk()) - .andReturn(); - assertNotNull(objectMapper.readValue(mvcResult.getResponse().getContentAsByteArray(), List.class)); + result = objectMapper.readValue(mvcResult.getResponse().getContentAsByteArray(), GroupingUpdatedAttributesResult.class); + assertNotNull(result); + assertNotNull(result.getResultCode()); + assertNotNull(result.getAction()); - url = API_BASE_URL + "groupings/" + GROUPING + "/preference/" + "badPref" + "/disable"; + url = API_BASE_URL + "groupings/" + GROUPING + "/sync-destination/" + "badSyncDest" + "/enable"; mockMvc.perform(put(url) .header(CURRENT_USER, ADMIN)) .andExpect(status().is5xxServerError()); diff --git a/src/test/java/edu/hawaii/its/api/groupings/GroupingsUpdatedAttributesResultTest.java b/src/test/java/edu/hawaii/its/api/groupings/GroupingsUpdatedAttributesResultTest.java index be16d65ab..03a48faeb 100644 --- a/src/test/java/edu/hawaii/its/api/groupings/GroupingsUpdatedAttributesResultTest.java +++ b/src/test/java/edu/hawaii/its/api/groupings/GroupingsUpdatedAttributesResultTest.java @@ -1,7 +1,6 @@ package edu.hawaii.its.api.groupings; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -10,28 +9,70 @@ import edu.hawaii.its.api.util.PropertyLocator; import edu.hawaii.its.api.wrapper.AssignAttributesResults; +import edu.hawaii.its.api.wrapper.Subject; import edu.internet2.middleware.grouperClient.ws.beans.WsAssignAttributesResults; public class GroupingsUpdatedAttributesResultTest { - private PropertyLocator propertyLocator; + private AssignAttributesResults assignAttributesResults; + private Subject subject; + private final String action = "Action"; + private final String resultCode = "ResultCode"; @BeforeEach - public void beforeEach() { - propertyLocator = new PropertyLocator("src/test/resources", "grouper.test.properties"); + public void setUp() { + PropertyLocator propertyLocator = new PropertyLocator("src/test/resources", "grouper.test.properties"); + String json = propertyLocator.find("ws.assign.attributes.results.turn.off.opt.in.success"); + WsAssignAttributesResults wsAssignAttributesResults = JsonUtil.asObject(json, WsAssignAttributesResults.class); + assignAttributesResults = new AssignAttributesResults(wsAssignAttributesResults); + + subject = new Subject("uid", "name", "uhUuid"); } @Test - public void test() { - assertNotNull(new GroupingUpdatedAttributesResult()); - assertNotNull(new GroupingUpdatedAttributesResult(null)); - String json = propertyLocator.find("ws.assign.attributes.results.turn.off.opt.in.success"); - WsAssignAttributesResults wsAssignAttributesResults = JsonUtil.asObject(json, WsAssignAttributesResults.class); - AssignAttributesResults assignAttributesResults = new AssignAttributesResults(wsAssignAttributesResults); - GroupingUpdatedAttributesResult groupingsUpdatedAttributesResult = new GroupingUpdatedAttributesResult(assignAttributesResults); - assertNotNull(groupingsUpdatedAttributesResult); - assertEquals("SUCCESS", groupingsUpdatedAttributesResult.getResultCode()); - assertEquals("group-path", groupingsUpdatedAttributesResult.getGroupPath()); + public void constructorTest() { + + GroupingUpdatedAttributesResult resultWithCodeAndAction = new GroupingUpdatedAttributesResult(resultCode, action); + assertEquals(resultCode, resultWithCodeAndAction.getResultCode()); + assertEquals(action, resultWithCodeAndAction.getAction()); + + GroupingUpdatedAttributesResult resultWithSubject = new GroupingUpdatedAttributesResult(resultCode, action, subject); + assertEquals(subject, resultWithSubject.getSubject()); } + @Test + public void accessorsTest() { + GroupingUpdatedAttributesResult result = new GroupingUpdatedAttributesResult(); + + result.setResultCode(resultCode); + assertEquals(resultCode, result.getResultCode()); + + result.setAction(action); + assertEquals(action, result.getAction()); + + result.setSubject(subject); + assertEquals(subject, result.getSubject()); + } + + @Test + public void resultCodeTest() { + GroupingUpdatedAttributesResult result = new GroupingUpdatedAttributesResult(assignAttributesResults); + assertEquals(assignAttributesResults.getResultCode(), result.getResultCode()); + } + + @Test + public void groupPathTest() { + + GroupingUpdatedAttributesResult result = new GroupingUpdatedAttributesResult(assignAttributesResults); + assertEquals(assignAttributesResults.getGroup().getGroupPath(), result.getGroupPath()); + } + + @Test + public void toStringTest() { + GroupingUpdatedAttributesResult result = new GroupingUpdatedAttributesResult(resultCode, action, subject); + String expected = "GroupingUpdatedAttributesResult{" + "action='" + action + '\'' + ", resultCode='" + resultCode + '\'' + + ", subject=" + subject + '}'; + assertEquals(expected, result.toString()); + } } + diff --git a/src/test/java/edu/hawaii/its/api/service/GroupingAttributeServiceTest.java b/src/test/java/edu/hawaii/its/api/service/GroupingAttributeServiceTest.java index 76d85b859..aff7cb4fd 100644 --- a/src/test/java/edu/hawaii/its/api/service/GroupingAttributeServiceTest.java +++ b/src/test/java/edu/hawaii/its/api/service/GroupingAttributeServiceTest.java @@ -8,7 +8,7 @@ import org.springframework.boot.test.context.SpringBootTest; import edu.hawaii.its.api.configuration.SpringBootWebApplication; -import edu.hawaii.its.api.type.GroupingsServiceResult; +import edu.hawaii.its.api.groupings.GroupingUpdatedAttributesResult; @SpringBootTest(classes = { SpringBootWebApplication.class }) class GroupingAttributeServiceTest { @@ -25,9 +25,9 @@ public void construction() { public void makeGroupingsServiceResultTest() { String resultCode = "resultCode"; String action = "action"; - GroupingsServiceResult groupingsServiceResult = groupingAttributeService.makeGroupingsServiceResult(resultCode, action); - assertNotNull(groupingsServiceResult); - assertEquals(resultCode, groupingsServiceResult.getResultCode()); - assertEquals(action, groupingsServiceResult.getAction()); + GroupingUpdatedAttributesResult groupingUpdatedAttributesResult = groupingAttributeService.makeGroupingUpdatedAttributesResult(resultCode, action); + assertNotNull(groupingUpdatedAttributesResult); // Corrected reference + assertEquals(resultCode, groupingUpdatedAttributesResult.getResultCode()); // Fixed method reference + assertEquals(action, groupingUpdatedAttributesResult.getAction()); } } diff --git a/src/test/java/edu/hawaii/its/api/service/TestGroupingAttributeService.java b/src/test/java/edu/hawaii/its/api/service/TestGroupingAttributeService.java index bbe9ed4b9..466303e4f 100644 --- a/src/test/java/edu/hawaii/its/api/service/TestGroupingAttributeService.java +++ b/src/test/java/edu/hawaii/its/api/service/TestGroupingAttributeService.java @@ -25,7 +25,7 @@ import edu.hawaii.its.api.configuration.SpringBootWebApplication; import edu.hawaii.its.api.exception.AccessDeniedException; -import edu.hawaii.its.api.type.GroupingsServiceResult; +import edu.hawaii.its.api.groupings.GroupingUpdatedAttributesResult; import edu.hawaii.its.api.type.OptRequest; import edu.hawaii.its.api.type.OptType; import edu.hawaii.its.api.type.PrivilegeType; @@ -201,9 +201,9 @@ public void changeOptInStatusTest() { .withOptValue(false) .build(); - List groupingsServiceResults = + List groupingUpdatedAttributesResults = groupingAttributeService.changeOptStatus(optInRequest, optOutRequest); - GroupingsServiceResult optInResult = groupingsServiceResults.get(0); + GroupingUpdatedAttributesResult optInResult = groupingUpdatedAttributesResults.get(0); assertNotNull(optInResult); assertTrue(optInResult.getAction().contains(GROUPING_INCLUDE)); assertNull(optInResult.getSubject()); @@ -226,16 +226,16 @@ public void changeOptInStatusTest() { .withOptValue(true) .build(); - groupingsServiceResults = groupingAttributeService.changeOptStatus(optInRequest, optOutRequest); - optInResult = groupingsServiceResults.get(0); + groupingUpdatedAttributesResults = groupingAttributeService.changeOptStatus(optInRequest, optOutRequest); + optInResult = groupingUpdatedAttributesResults.get(0); assertNotNull(optInResult); assertTrue(optInResult.getAction().contains(GROUPING_INCLUDE)); assertNull(optInResult.getSubject()); assertEquals(SUCCESS_ALLOWED, optInResult.getResultCode()); // Should return resultCode: SUCCESS_ALLOWED_ALREADY_EXISTED if true was set to true. - groupingsServiceResults = groupingAttributeService.changeOptStatus(optInRequest, optOutRequest); - optInResult = groupingsServiceResults.get(0); + groupingUpdatedAttributesResults = groupingAttributeService.changeOptStatus(optInRequest, optOutRequest); + optInResult = groupingUpdatedAttributesResults.get(0); assertNotNull(optInResult); assertTrue(optInResult.getAction().contains(GROUPING_INCLUDE)); assertNull(optInResult.getSubject()); @@ -258,8 +258,8 @@ public void changeOptInStatusTest() { .withOptValue(false) .build(); - groupingsServiceResults = groupingAttributeService.changeOptStatus(optInRequest, optOutRequest); - optInResult = groupingsServiceResults.get(0); + groupingUpdatedAttributesResults = groupingAttributeService.changeOptStatus(optInRequest, optOutRequest); + optInResult = groupingUpdatedAttributesResults.get(0); assertNotNull(optInResult); assertTrue(optInResult.getAction().contains(GROUPING_INCLUDE)); assertNull(optInResult.getSubject()); @@ -362,9 +362,9 @@ public void changeOptOutStatusTest() { .withOptValue(false) .build(); - List groupingsServiceResults = + List groupingUpdatedAttributesResults = groupingAttributeService.changeOptStatus(optInRequest, optOutRequest); - GroupingsServiceResult optOutResult = groupingsServiceResults.get(1); + GroupingUpdatedAttributesResult optOutResult = groupingUpdatedAttributesResults.get(1); assertNotNull(optOutResult); assertTrue(optOutResult.getAction().contains(GROUPING_INCLUDE)); assertNull(optOutResult.getSubject()); @@ -387,16 +387,16 @@ public void changeOptOutStatusTest() { .withOptValue(true) .build(); - groupingsServiceResults = groupingAttributeService.changeOptStatus(optInRequest, optOutRequest); - optOutResult = groupingsServiceResults.get(1); + groupingUpdatedAttributesResults = groupingAttributeService.changeOptStatus(optInRequest, optOutRequest); + optOutResult = groupingUpdatedAttributesResults.get(1); assertNotNull(optOutResult); assertTrue(optOutResult.getAction().contains(GROUPING_INCLUDE)); assertNull(optOutResult.getSubject()); assertEquals(SUCCESS_ALLOWED, optOutResult.getResultCode()); // Should return resultCode: SUCCESS_ALLOWED_ALREADY_EXISTED if true was set to true. - groupingsServiceResults = groupingAttributeService.changeOptStatus(optInRequest, optOutRequest); - optOutResult = groupingsServiceResults.get(1); + groupingUpdatedAttributesResults = groupingAttributeService.changeOptStatus(optInRequest, optOutRequest); + optOutResult = groupingUpdatedAttributesResults.get(1); assertNotNull(optOutResult); assertTrue(optOutResult.getAction().contains(GROUPING_INCLUDE)); assertNull(optOutResult.getSubject()); @@ -419,8 +419,8 @@ public void changeOptOutStatusTest() { .withOptValue(false) .build(); - groupingsServiceResults = groupingAttributeService.changeOptStatus(optInRequest, optOutRequest); - optOutResult = groupingsServiceResults.get(1); + groupingUpdatedAttributesResults = groupingAttributeService.changeOptStatus(optInRequest, optOutRequest); + optOutResult = groupingUpdatedAttributesResults.get(1); assertNotNull(optOutResult); assertTrue(optOutResult.getAction().contains(GROUPING_INCLUDE)); assertNull(optOutResult.getSubject()); diff --git a/src/test/java/edu/hawaii/its/api/type/GroupingServiceResultExceptionTest.java b/src/test/java/edu/hawaii/its/api/type/GroupingServiceResultExceptionTest.java deleted file mode 100644 index 1ead29f2a..000000000 --- a/src/test/java/edu/hawaii/its/api/type/GroupingServiceResultExceptionTest.java +++ /dev/null @@ -1,35 +0,0 @@ -package edu.hawaii.its.api.type; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import edu.hawaii.its.api.exception.GroupingsServiceResultException; - -public class GroupingServiceResultExceptionTest extends GroupingsServiceResult { - - private GroupingsServiceResult groupingsServiceResult; - private GroupingsServiceResultException groupingsServiceResultException; - - @BeforeEach - public void setup() { - groupingsServiceResult = new GroupingsServiceResult(); - groupingsServiceResultException = new GroupingsServiceResultException(); - } - - @Test - public void constructor() { - assertNotNull(groupingsServiceResultException); - assertNotNull(new GroupingsServiceResultException(groupingsServiceResult)); - } - - @Test - public void accessors() { - GroupingsServiceResultException exception = new GroupingsServiceResultException(); - exception.setGsr(groupingsServiceResult); - assertEquals(groupingsServiceResult, exception.getGsr()); - } - -} diff --git a/src/test/java/edu/hawaii/its/api/type/GroupingUpdatedAttributesResultExceptionTest.java b/src/test/java/edu/hawaii/its/api/type/GroupingUpdatedAttributesResultExceptionTest.java new file mode 100644 index 000000000..aea018621 --- /dev/null +++ b/src/test/java/edu/hawaii/its/api/type/GroupingUpdatedAttributesResultExceptionTest.java @@ -0,0 +1,42 @@ +package edu.hawaii.its.api.type; + +import static org.junit.Assert.assertThrows; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import edu.hawaii.its.api.groupings.GroupingUpdatedAttributesResult; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import edu.hawaii.its.api.exception.GroupingUpdatedAttributesResultException ; + +public class GroupingUpdatedAttributesResultExceptionTest extends GroupingUpdatedAttributesResult { + + private GroupingUpdatedAttributesResult groupingUpdatedAttributesResult; + private GroupingUpdatedAttributesResultException groupingUpdatedAttributesResultException; + @BeforeEach + public void setup() { + groupingUpdatedAttributesResult = new GroupingUpdatedAttributesResult(); + groupingUpdatedAttributesResultException = new GroupingUpdatedAttributesResultException (); + } + + @Test + public void constructor() { + assertNotNull(groupingUpdatedAttributesResultException); + GroupingUpdatedAttributesResultException thrownException = assertThrows( + GroupingUpdatedAttributesResultException.class, + () -> { + throw new GroupingUpdatedAttributesResultException(groupingUpdatedAttributesResult); + } + ); + assertNotNull(thrownException.getGsr()); + } + + @Test + public void accessors() { + GroupingUpdatedAttributesResultException exception = new GroupingUpdatedAttributesResultException(); + exception.setGsr(groupingUpdatedAttributesResult); + assertEquals(groupingUpdatedAttributesResult, exception.getGsr()); + } + +}