diff --git a/src/it/java/teammates/it/sqllogic/core/AccountRequestsLogicIT.java b/src/it/java/teammates/it/sqllogic/core/AccountRequestsLogicIT.java index 4156e4f1ca9..bedaec02f36 100644 --- a/src/it/java/teammates/it/sqllogic/core/AccountRequestsLogicIT.java +++ b/src/it/java/teammates/it/sqllogic/core/AccountRequestsLogicIT.java @@ -55,13 +55,14 @@ public void testResetAccountRequest() toReset.setRegisteredAt(Instant.now()); toReset = accountRequestsDb.getAccountRequest(email, institute); + UUID id = toReset.getId(); assertNotNull(toReset); assertNotNull(toReset.getRegisteredAt()); ______TS("success: reset account request that already exists"); - AccountRequest resetted = accountRequestsLogic.resetAccountRequest(email, institute); + AccountRequest resetted = accountRequestsLogic.resetAccountRequest(id); assertNull(resetted.getRegisteredAt()); @@ -74,6 +75,6 @@ public void testResetAccountRequest() ______TS("failure: reset account request that does not exist"); assertThrows(EntityDoesNotExistException.class, - () -> accountRequestsLogic.resetAccountRequest(name, institute)); + () -> accountRequestsLogic.resetAccountRequest(id)); } } diff --git a/src/main/java/teammates/sqllogic/api/Logic.java b/src/main/java/teammates/sqllogic/api/Logic.java index 72712057143..596f0566e4d 100644 --- a/src/main/java/teammates/sqllogic/api/Logic.java +++ b/src/main/java/teammates/sqllogic/api/Logic.java @@ -165,15 +165,15 @@ public AccountRequest updateAccountRequestWithTransaction(AccountRequest account } /** - * Creates/Resets the account request with the given email and institute + * Creates/Resets the account request with the given id * such that it is not registered. * * @return account request that is unregistered with the - * email and institute. + * id. */ - public AccountRequest resetAccountRequest(String email, String institute) + public AccountRequest resetAccountRequest(UUID id) throws EntityDoesNotExistException, InvalidParametersException { - return accountRequestLogic.resetAccountRequest(email, institute); + return accountRequestLogic.resetAccountRequest(id); } /** diff --git a/src/main/java/teammates/sqllogic/core/AccountRequestsLogic.java b/src/main/java/teammates/sqllogic/core/AccountRequestsLogic.java index cff14372bf1..fcde8f217f0 100644 --- a/src/main/java/teammates/sqllogic/core/AccountRequestsLogic.java +++ b/src/main/java/teammates/sqllogic/core/AccountRequestsLogic.java @@ -143,15 +143,15 @@ public List getAllAccountRequests() { } /** - * Creates/resets the account request with the given email and institute such that it is not registered. + * Creates/resets the account request with the given id such that it is not registered. */ - public AccountRequest resetAccountRequest(String email, String institute) + public AccountRequest resetAccountRequest(UUID id) throws EntityDoesNotExistException, InvalidParametersException { - AccountRequest accountRequest = accountRequestDb.getAccountRequest(email, institute); + AccountRequest accountRequest = accountRequestDb.getAccountRequest(id); if (accountRequest == null) { throw new EntityDoesNotExistException("Failed to reset since AccountRequest with " - + "the given email and institute cannot be found."); + + "the given id cannot be found."); } accountRequest.setRegisteredAt(null); diff --git a/src/main/java/teammates/ui/webapi/ResetAccountRequestAction.java b/src/main/java/teammates/ui/webapi/ResetAccountRequestAction.java index 7fcd3a40c6b..f0ff7ff86b3 100644 --- a/src/main/java/teammates/ui/webapi/ResetAccountRequestAction.java +++ b/src/main/java/teammates/ui/webapi/ResetAccountRequestAction.java @@ -1,5 +1,7 @@ package teammates.ui.webapi; +import java.util.UUID; + import org.apache.http.HttpStatus; import teammates.common.exception.EntityDoesNotExistException; @@ -19,21 +21,19 @@ class ResetAccountRequestAction extends AdminOnlyAction { @Override public JsonResult execute() throws InvalidOperationException { - String instructorEmail = getNonNullRequestParamValue(Const.ParamsNames.INSTRUCTOR_EMAIL); - String institute = getNonNullRequestParamValue(Const.ParamsNames.INSTRUCTOR_INSTITUTION); + UUID id = getUuidRequestParamValue(Const.ParamsNames.ACCOUNT_REQUEST_ID); - AccountRequest accountRequest = sqlLogic.getAccountRequest(instructorEmail, institute); + AccountRequest accountRequest = sqlLogic.getAccountRequest(id); if (accountRequest == null) { - throw new EntityNotFoundException("Account request for instructor with email: " + instructorEmail - + " and institute: " + institute + " does not exist."); + throw new EntityNotFoundException("Account request with id: " + id.toString() + " does not exist."); } if (accountRequest.getRegisteredAt() == null) { throw new InvalidOperationException("Unable to reset account request as instructor is still unregistered."); } try { - accountRequest = sqlLogic.resetAccountRequest(instructorEmail, institute); + accountRequest = sqlLogic.resetAccountRequest(id); } catch (InvalidParametersException | EntityDoesNotExistException ue) { // InvalidParametersException and EntityDoesNotExistException should not be thrown as // validity of params has been verified when fetching entity. diff --git a/src/web/app/components/account-requests-table/account-request-table.component.ts b/src/web/app/components/account-requests-table/account-request-table.component.ts index eab1fc95d7a..54a22cffeb9 100755 --- a/src/web/app/components/account-requests-table/account-request-table.component.ts +++ b/src/web/app/components/account-requests-table/account-request-table.component.ts @@ -107,7 +107,7 @@ export class AccountRequestTableComponent { `Reset account request for ${accountRequest.name}?`, SimpleModalType.WARNING, modalContent); modalRef.result.then(() => { - this.accountService.resetAccountRequest(accountRequest.email, accountRequest.instituteAndCountry) + this.accountService.resetAccountRequest(accountRequest.id) .subscribe({ next: () => { this.statusMessageService diff --git a/src/web/services/account.service.spec.ts b/src/web/services/account.service.spec.ts index d463b982020..56331550911 100644 --- a/src/web/services/account.service.spec.ts +++ b/src/web/services/account.service.spec.ts @@ -92,10 +92,9 @@ describe('AccountService', () => { }); it('should execute PUT on account request reset endpoint', () => { - service.resetAccountRequest('testEmail', 'testInstitution'); + service.resetAccountRequest('testId'); const paramMap: Record = { - instructoremail: 'testEmail', - instructorinstitution: 'testInstitution', + id: 'testId', }; expect(spyHttpRequestService.put).toHaveBeenCalledWith(ResourceEndpoints.ACCOUNT_REQUEST_RESET, paramMap); }); diff --git a/src/web/services/account.service.ts b/src/web/services/account.service.ts index a99397a1a64..6f2161935ef 100644 --- a/src/web/services/account.service.ts +++ b/src/web/services/account.service.ts @@ -68,10 +68,9 @@ export class AccountService { /** * Resets an account request by calling API. */ - resetAccountRequest(email: string, institute: string): Observable { + resetAccountRequest(id: string): Observable { const paramMap: Record = { - instructoremail: email, - instructorinstitution: institute, + id, }; return this.httpRequestService.put(ResourceEndpoints.ACCOUNT_REQUEST_RESET, paramMap); }