Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[#11878] Update DeleteAccountRequest to reference by ID #12997

Merged
merged 4 commits into from
Apr 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/e2e/java/teammates/e2e/cases/AdminHomePageE2ETest.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ public void testAll() {
"\"invalidemail\" is not acceptable to TEAMMATES as a/an email because it is not in the correct format."));

assertNotNull(BACKDOOR.getAccountRequest(email, institute));
BACKDOOR.deleteAccountRequest(email, institute);
// TODO: delete account request after get
// BACKDOOR.deleteAccountRequest(email, institute);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ private String getExpectedInstructorManageAccountLink(InstructorAttributes instr
@AfterClass
public void classTeardown() {
for (AccountRequest request : sqlTestData.accountRequests.values()) {
BACKDOOR.deleteAccountRequest(request.getEmail(), request.getInstitute());
BACKDOOR.deleteAccountRequest(request.getId());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ public void testResetAccountRequest()

______TS("success: test delete account request");

accountRequestsLogic.deleteAccountRequest(email, institute);
accountRequestsLogic.deleteAccountRequest(toReset.getId());

assertNull(accountRequestsLogic.getAccountRequest(email, institute));
assertNull(accountRequestsLogic.getAccountRequest(toReset.getId()));

______TS("failure: reset account request that does not exist");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ protected void tearDown() {
HibernateUtil.beginTransaction();
List<AccountRequest> accountRequests = logic.getPendingAccountRequests();
for (AccountRequest ar : accountRequests) {
logic.deleteAccountRequest(ar.getEmail(), ar.getInstitute());
logic.deleteAccountRequest(ar.getId());
}
accountRequests = logic.getPendingAccountRequests();
HibernateUtil.commitTransaction();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ protected void tearDown() {
HibernateUtil.beginTransaction();
List<AccountRequest> accountRequests = logic.getAllAccountRequests();
for (AccountRequest ar : accountRequests) {
logic.deleteAccountRequest(ar.getEmail(), ar.getInstitute());
logic.deleteAccountRequest(ar.getId());
}
HibernateUtil.commitTransaction();
}
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/teammates/sqllogic/api/Logic.java
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ public AccountRequest resetAccountRequest(String email, String institute)
}

/**
* Deletes account request by email and institute.
* Deletes account request by id.
*
* <ul>
* <li>Fails silently if no such account request.</li>
Expand All @@ -186,8 +186,8 @@ public AccountRequest resetAccountRequest(String email, String institute)
* <p>Preconditions:</p>
* All parameters are non-null.
*/
public void deleteAccountRequest(String email, String institute) {
accountRequestLogic.deleteAccountRequest(email, institute);
public void deleteAccountRequest(UUID id) {
accountRequestLogic.deleteAccountRequest(id);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,13 +159,13 @@ public AccountRequest resetAccountRequest(String email, String institute)
}

/**
* Deletes account request associated with the {@code email} and {@code institute}.
* Deletes account request associated with the {@code id}.
*
* <p>Fails silently if no account requests with the given email and institute to delete can be found.</p>
* <p>Fails silently if no account requests with the given id to delete can be found.</p>
*
*/
public void deleteAccountRequest(String email, String institute) {
AccountRequest toDelete = accountRequestDb.getAccountRequest(email, institute);
public void deleteAccountRequest(UUID id) {
AccountRequest toDelete = accountRequestDb.getAccountRequest(id);

accountRequestDb.deleteAccountRequest(toDelete);
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/teammates/sqllogic/core/DataBundleLogic.java
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,7 @@ public void removeDataBundle(SqlDataBundle dataBundle) throws InvalidParametersE
accountsLogic.deleteAccount(account.getGoogleId());
});
dataBundle.accountRequests.values().forEach(accountRequest -> {
accountRequestsLogic.deleteAccountRequest(accountRequest.getEmail(), accountRequest.getInstitute());
accountRequestsLogic.deleteAccountRequest(accountRequest.getId());
});
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package teammates.ui.webapi;

import java.util.UUID;

import teammates.common.util.Const;
import teammates.storage.sqlentity.AccountRequest;

Expand All @@ -10,17 +12,16 @@ class DeleteAccountRequestAction extends AdminOnlyAction {

@Override
public JsonResult execute() throws InvalidOperationException {
String email = getNonNullRequestParamValue(Const.ParamsNames.INSTRUCTOR_EMAIL);
String institute = getNonNullRequestParamValue(Const.ParamsNames.INSTRUCTOR_INSTITUTION);
UUID id = getUuidRequestParamValue(Const.ParamsNames.ACCOUNT_REQUEST_ID);

AccountRequest toDelete = sqlLogic.getAccountRequest(email, institute);
AccountRequest toDelete = sqlLogic.getAccountRequest(id);

if (toDelete != null && toDelete.getRegisteredAt() != null) {
// instructor is already registered and cannot be deleted
throw new InvalidOperationException("Account request of a registered instructor cannot be deleted.");
}

sqlLogic.deleteAccountRequest(email, institute);
sqlLogic.deleteAccountRequest(id);

return new JsonResult("Account request successfully deleted.");
}
Expand Down
5 changes: 2 additions & 3 deletions src/test/java/teammates/test/AbstractBackDoor.java
Original file line number Diff line number Diff line change
Expand Up @@ -868,10 +868,9 @@ public String getRegKeyForAccountRequest(String email, String institute) {
/**
* Deletes an account request from the database.
*/
public void deleteAccountRequest(String email, String institute) {
public void deleteAccountRequest(UUID id) {
Map<String, String> params = new HashMap<>();
params.put(Const.ParamsNames.INSTRUCTOR_EMAIL, email);
params.put(Const.ParamsNames.INSTRUCTOR_INSTITUTION, institute);
params.put(Const.ParamsNames.ACCOUNT_REQUEST_ID, id.toString());
executeDeleteRequest(Const.ResourceURIs.ACCOUNT_REQUEST, params);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ export class AccountRequestTableComponent {
`Delete account request for <strong>${accountRequest.name}</strong>?`, SimpleModalType.DANGER, modalContent);

modalRef.result.then(() => {
this.accountService.deleteAccountRequest(accountRequest.email, accountRequest.instituteAndCountry)
this.accountService.deleteAccountRequest(accountRequest.id)
.subscribe({
next: (resp: MessageOutput) => {
this.statusMessageService.showSuccessToast(resp.message);
Expand Down
5 changes: 2 additions & 3 deletions src/web/services/account.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,9 @@ describe('AccountService', () => {
});

it('should execute DELETE on account request endpoint', () => {
service.deleteAccountRequest('testEmail', 'testInstitution');
service.deleteAccountRequest('testId');
const paramMap: Record<string, string> = {
instructoremail: 'testEmail',
instructorinstitution: 'testInstitution',
id: 'testId',
};
expect(spyHttpRequestService.delete).toHaveBeenCalledWith(ResourceEndpoints.ACCOUNT_REQUEST, paramMap);
});
Expand Down
5 changes: 2 additions & 3 deletions src/web/services/account.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,9 @@ export class AccountService {
/**
* Deletes an account request by calling API.
*/
deleteAccountRequest(email: string, institute: string): Observable<MessageOutput> {
deleteAccountRequest(id: string): Observable<MessageOutput> {
const paramMap: Record<string, string> = {
instructoremail: email,
instructorinstitution: institute,
id,
};
return this.httpRequestService.delete(ResourceEndpoints.ACCOUNT_REQUEST, paramMap);
}
Expand Down
Loading