@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);

}

public boolean preHandleHttpServletRequest request HttpServletResponse response Object handler throws IOException String token = TokenUtilgetRequestTokenrequest; if StringUtilsisBlankto

原文地址: https://www.cveoy.top/t/topic/6bS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录