Currently I am creating a service test where a user login into the application and it will automatically add to the user table of the database and have the admin to delete its userId one time and not affect the other service test created. (So it is a one time thing)
However, when I finish running my service test the other service test afterward are giving errors. I believe it is because I did not create a user beforehand to delete the user, because when I remove the delete API call it errors. Any suggestions
Here is my service test
@Test
void deleteUser() throws IOException {
Mockito.doReturn(Instant.now()).when(timeHelper).getNow();
helpers.setMockToken(mockServer, FixtureLoader.getUserTokenResponse());
helpers.setMockUserInfo(mockServer, FixtureLoader.getUserInfoResponse());
helpers.setMockToken(mockServer, FixtureLoader.getAdminTokenResponse());
helpers.setMockUserInfo(mockServer, FixtureLoader.getAdminUserInfoResponse());
helpers.setMockIntrospect(mockServer, FixtureLoader.getUserIntrospectResponse(), 0, 10);
helpers.setMockIntrospect(mockServer, FixtureLoader.getAdminIntrospectResponse(), 0, 10);
var userSession = helpers.newUserSession(UUID.randomUUID().toString());
var userToken = om.readValue(FixtureLoader.getUserTokenResponse(), TokenResponse.class);
assertThat(userSession.getExpirationTimestamp()).isEqualTo(
timeHelper.getNow().plus(userToken.getExpiresInSeconds(), ChronoUnit.SECONDS)
);
assertThat(userSession.getRoles()).hasSize(1);
var userInfo = om.readValue(FixtureLoader.getUserInfoResponse(), UserInfoResponse.class);
Mockito.doReturn(Instant.now()).when(timeHelper).getNow();
var adminSession = helpers.newUserSession(UUID.randomUUID().toString());
var adminToken = om.readValue(FixtureLoader.getAdminTokenResponse(), TokenResponse.class);
assertThat(adminSession.getExpirationTimestamp()).isEqualTo(
timeHelper.getNow().plus(supervisorToken.getExpiresInSeconds(), ChronoUnit.SECONDS)
);
assertThat(adminSession.getRoles()).hasSize(1);
var users = helpers.getSchoolUser(adminSession.getSessionId());
var preUser = findUser(users.getResults(), userInfo.getSub());
var requestUser = UserRequest.builder()
.schoolUserId(UUID.fromString((String) Objects.requireNonNull(preUser).get("schoolUserId")))
.roles(Collections.singletonList("admin"))
.build();
helpers.deleteSchoolUser(adminSession.getSessionId(), requestUser.getSchoolUserId());
}
//helperClass function
public void deleteSchoolUser(UUID sessionId, UUID schoolUserId) {
var response = given()
.contentType(ContentType.JSON)
.header("sessionId", sessionId)
.params(Map.of("schoolUserId", schoolUserId))
.delete("/api/users");
response.then().statusCode(OK.value());
}
public GenericResultResponse<LinkedHashMap<String, Object>> getSchoolUser(UUID sessionId) {
var response = given().contentType(ContentType.JSON)
.header("sessionId", sessionId)
.get("/api/users");
response.then().statusCode(OK.value());
var body = response.as(GenericResultResponse.class);
assertThat(body).isNotNull();
return body;
}
public UserSessionResponse newUserSession(String authCode) {
var response = given().contentType(ContentType.JSON)
.body(Map.of("code", authCode))
.post("/api/login/auth");
response.then().statusCode(CREATED.value());
var body = response.as(UserSessionResponse.class);
assertThat(body).isNotNull();
return body;
}
I think the newUserSession() already automatically post and created a session for the admin and user when logged in, however when I call the admin to delete the user it somehow maybe not recognize the user is created to delete the userInfo. And the delete happens but not properly
Any suggestions