Per essere certo che l’interfaccia grafica funzioni bene per tutte le tipologie di utente (amministratore, nuovo iscritto, ecc…) uso una pagina html statica di questo tipo:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security" th:lang="it">
<head th:replace="_layout :: head_tag"></head>
<body>
<div th:replace="_layout :: menu"></div>
<h2>Tutte le pagine dell'applicazione</h2>
<p><a th:href="@{/}" target="_blank">/</a></p>
<p><a th:href="@{/login}" target="_blank">/login</a></p>
<p><a th:href="@{/logout-eseguito}" target="_blank">/logout-eseguito</a></p>
<p><a th:href="@{/benvenuto}" target="_blank">/benvenuto</a></p>
<p><a th:href="@{/registrazione}" target="_blank">/registrazione</a></p>
<p><a th:href="@{/registrazione-eseguita}" target="_blank">/registrazione-eseguita</a></p>
...
<p>Logout:</p>
<p><a th:href="@{/pagina-logout}" target="_blank">/pagina-logout</a></p>
</body>
</html>
e poi con il mouse clicco su ogni link e verifico se quello che accade è ciò che mi aspetto.
Posso creare una classe di test che faccia questo al posto mio?
Come potrei procedere?
È giusto lanciare le URL e verificare se il codice di stato che ottengo è quello che mi aspetto?
Ho scritto questo test:
// Questo test ottiene e convalida il codice di stato della risposta HTTP.
@Test
public void verificaPagineApplicazione() {
String url = "http://localhost:8080/gestioneutenti/tfy";
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> risposta = restTemplate.getForEntity(url, String.class);
//System.out.println(risposta.getStatusCode().value());
assertEquals(risposta.getStatusCode().value(),404);
}
ma funziona solo quando il codice di stato è 200.
org.springframework.web.client.HttpClientErrorException$NotFound: 404 : [{"timestamp":"2021-06-17T21:54:33.507+00:00","status":404,"error":"Not Found","message":"No message available","path":"/gestioneutenti/tfy"}]
In rete ci cono degli esempi ma riguardano solo applicazioni di tipo REST ovvero applicazioni dove ciò che accade deriva da ciò che è presente nella URL. Nel mio caso non è così.
Consigli?