У меня есть служба аутентификации, Response и Provider (класс Java), которая имеет функцию аутентификации, которая отвечает за получение authenticatedToken после предоставления действительных имени пользователя / паролей и grant_type.
Ниже приведен Класс обслуживания какой метод аутентификации для внешней службы аутентификации.
Public interface AuthenticationService {
* @param username
* @param password
* @return
* @throws LoginAuthenticationException
*/
AuthenticationResponse authenticate(String username, String password) throws LoginAuthenticationException;
}
Ниже приведена функция внутри Класс ответа :
@Override
public AuthenticationResponse authenticate(String username, String password) {
String AuthenticationRequest = GRANT_TYPE + DELIMITER_EQ + AuthConfig.getAuth().getGrantType()
+ DELIMITER_AMP + USERNAME + DELIMITER_EQ + username
+ DELIMITER_AMP + password + DELIMITER_EQ + password;
HttpEntity<String> request = new HttpEntity<>(AuthenticationRequest, buildHeaders(AuthConfig.getAuth().getUsername(), AuthConfig.getAuth().getPassword()));
ResponseEntity<AuthenticationResponse> response = restTemplate
.exchange(AuthConfig.getAuth().getUrl(), HttpMethod.POST, request, AuthenticationResponse.class);
return response.getBody();}
Ниже находится функция внутри Класс провайдера для аутентификации:
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
try {
AuthenticationResponse AuthenticationResponse = this.AuthenticationService.authenticate((String) authentication.getPrincipal(), (String) authentication.getCredentials());
UsernamePasswordAuthenticationToken authenticatedToken = new UsernamePasswordAuthenticationToken(authentication.getPrincipal(), null, createGrantedAuthorities(Role.ADMIN, Role.USER));
authenticatedToken.setDetails(AuthenticationResponse);
return authenticatedToken;
} catch (LoginAuthenticationException ex) {
// todo handle exceptions
LOGGER.error(Error.UNABLE_TO_AUTHENTICATE_USER.getErrorLogEvent(), ex);
throw ex;
} catch (Exception ex) {
LOGGER.error(Error.UNABLE_TO_AUTHENTICATE_USER.getErrorLogEvent(), ex);
throw ex;
}
}
Я пытаюсь написать модульный тест для всех трех вышеуказанных методов.ниже тестовый файл, с которого я начал .. но застрял в самой начальной точке: - (
Модульный тест для функции внутри Класс обслуживания Открытый класс AuthenticationServiceImpl {
@InjectMocks
AuthenticationServiceImpl AuthenticationService;
@Test
public void testAuthenticate_success() throws Exception {
// ?????? Not sure how to start here?
}
} Модульный тест для функции внутри Класс отклика:
@InjectMocks
AuthenticationRepositoryImpl AuthenticationRepository;
@Test
public void testAuthenticate_success() throws Exception {
// again not sure how to start here
}
Модульный тест для функции внутри Класс провайдера :
import static org.junit.Assert.*;
@RunWith(MockitoJUnitRunner.class)
public class AuthenticationProviderTest {
@InjectMocks
AuthenticationProvider authenticationProvider;
@Mock
private AuthenticationService authenticationService;
@Test
public void testAuthenticate_success() throws Exception {
AuthenticationProvider test = new authenticationProvider();
assertEquals("True", authenticationProvider.authenticate(), ""Mix of number and A-Z/a-z);
assertNotNull(authenticationProvider.authenticate);
??????????????????????????????????????????????????????????
}
}
Iзнаете, это стало более длинным, но у меня есть простые сомнения, как написать примеры модульных тестов выше трех файлов (AuthenticationService, AuthenticationResponse и AuthenticationProvider)? Как новичок в Java любые предложения и помощь будут оценены: -)