public boolean preHandleHttpServletRequest request HttpServletResponse response Object handler throws IOException String token = TokenUtilgetRequestTokenrequest; if StringUtilsisBlankto
@Test public void testPreHandle() throws Exception { HttpServletRequest request = mock(HttpServletRequest.class); HttpServletResponse response = mock(HttpServletResponse.class); Object handler = mock(Object.class);
// Case 1: User not logged in
when(TokenUtil.getRequestToken(request)).thenReturn(null);
assertFalse(authInterceptor.preHandle(request, response, handler));
verify(response).setStatus(400);
verify(response).getWriter();
verifyNoMoreInteractions(response);
// Case 2: User not found
String token = "invalid_token";
when(TokenUtil.getRequestToken(request)).thenReturn(token);
when(authService.findByToken(token)).thenReturn(null);
assertFalse(authInterceptor.preHandle(request, response, handler));
verify(authService).findByToken(token);
verify(response, times(2)).setStatus(400);
verify(response, times(2)).getWriter();
verifyNoMoreInteractions(response);
// Case 3: Token expired
UserEntity userEntity = mock(UserEntity.class);
LocalDateTime expiredTime = LocalDateTime.now().minusMinutes(10);
when(userEntity.getExpireTime()).thenReturn(expiredTime);
when(TokenUtil.getRequestToken(request)).thenReturn(token);
when(authService.findByToken(token)).thenReturn(userEntity);
assertFalse(authInterceptor.preHandle(request, response, handler));
verify(authService, times(2)).findByToken(token);
verify(userEntity).getExpireTime();
verify(response, times(3)).setStatus(400);
verify(response, times(3)).getWriter();
verifyNoMoreInteractions(response);
// Case 4: Token valid
userEntity = mock(UserEntity.class);
expiredTime = LocalDateTime.now().plusMinutes(10);
when(userEntity.getExpireTime()).thenReturn(expiredTime);
when(TokenUtil.getRequestToken(request)).thenReturn(token);
when(authService.findByToken(token)).thenReturn(userEntity);
assertTrue(authInterceptor.preHandle(request, response, handler));
verify(authService, times(3)).findByToken(token);
verify(userEntity, times(2)).getExpireTime();
verifyNoMoreInteractions(response);
}
原文地址: https://www.cveoy.top/t/topic/6bS 著作权归作者所有。请勿转载和采集!