Nantes Université
Skip to content
GitLab
Explorer
Connexion
S'inscrire
Navigation principale
Rechercher ou aller à…
Projet
R
R505 - Spring
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Wiki
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Extraits de code
Compilation
Pipelines
Jobs
Planifications de pipeline
Artéfacts
Déploiement
Releases
Registre de paquets
Registre de conteneur
Registre de modèles
Opération
Environnements
Modules Terraform
Surveillance
Incidents
Service d'assistance
Analyse
Données d'analyse des chaînes de valeur
Analyse des contributeurs
Données d'analyse CI/CD
Données d'analyse du dépôt
Expériences du modèle
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté
Contribuer à GitLab
Donner votre avis
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
Lana Heyrendt
R505 - Spring
Validations
daed1038
Valider
daed1038
rédigé
il y a 4 mois
par
Zomzog
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
User
parent
0b98beea
Aucune branche associée trouvée
Branches contenant la validation
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Modifications
1
Masquer les modifications d'espaces
En ligne
Côte à côte
Affichage de
1 fichier modifié
TD1.adoc
+28
-28
28 ajouts, 28 suppressions
TD1.adoc
avec
28 ajouts
et
28 suppressions
TD1.adoc
+
28
−
28
Voir le fichier @
daed1038
...
...
@@ -14,15 +14,15 @@ cette implémentation utilisera une liste en mémoire pour la persistance.
== Exo 1
En utilisant l'approche des @Bean,
créer un fichier AppConfig qui gère la création des beans
movies
ervice et Database
créer un fichier AppConfig qui gère la création des beans
userS
ervice et Database
Dans la classe de test Exercice#exo1_1 charger le context Spring à partir de AppConfig
pour obtenir une instance de
movies
ervice
pour obtenir une instance de
userS
ervice
== Exo 2
Avec la même approche,
ajouter la création d'un bean Super
movies
ervice.
ajouter la création d'un bean Super
userS
ervice.
Il doit partager la même instance de `Database`.
...
...
@@ -42,7 +42,7 @@ Le test doit passer, le test exo1_2 ne passe plus.
== Exo 4
Supprimer le constructeur de Super
movies
ervice et utiliser l'injection avec Autowired pour ce service.
Supprimer le constructeur de Super
userS
ervice et utiliser l'injection avec Autowired pour ce service.
Le test exo1_3 doit toujours fonctionner
...
...
@@ -65,7 +65,7 @@ Elle doit répondre aux mêmes tests que ListDatabaseTest
== Exo 7
Dans AppConfig créer le bean de HashDatabase en scope Singleton
Utiliser ce bean pour super
movies
ervice.
Utiliser ce bean pour super
UserS
ervice.
Le test suivant doit passer
...
...
@@ -73,11 +73,11 @@ Le test suivant doit passer
@Test
fun exo1_7() {
val context = AnnotationConfigApplicationContext(AppConfig::class.java)
val
movies
ervice = context.getBean(
movies
ervice::class.java)
val super
movies
ervice = context.getBean(Super
movies
ervice::class.java)
val
userS
ervice = context.getBean(
UserS
ervice::class.java)
val super
userS
ervice = context.getBean(Super
UserS
ervice::class.java)
assertThat(
movies
ervice.database).isInstanceOf(ListDatabase::class)
assertThat(super
movies
ervice.database).isInstanceOf(HashDatabase::class)
assertThat(
userS
ervice.database).isInstanceOf(ListDatabase::class)
assertThat(super
UserS
ervice.database).isInstanceOf(HashDatabase::class)
}
```
...
...
@@ -94,7 +94,7 @@ Le test suivant doit passer.
class Exo8 {
@Autowired
private lateinit var
movies
ervice:
movies
ervice
private lateinit var
userS
ervice:
UserS
ervice
@Test
fun exo_8() {
...
...
@@ -108,7 +108,7 @@ class Exo8 {
Ajouter les dépendances de test `io.mockk:mockk-jvm:1.13.12` et `com.ninja-squad:springmockk:4.0.2`
Dans la class Exo8,
remplacer la Database de
movies
ervice par un mock.
remplacer la Database de
userS
ervice par un mock.
Ajouter ce test et le compléter pour qu'il soit valide.
...
...
@@ -118,8 +118,8 @@ fun exo_9() {
// GIVEN TODO
// THEN
assertThrows<NoSuchElementException> {
movies
ervice.delete(user()) }
movies
ervice.delete(user(UUID.randomUUID()))
assertThrows<NoSuchElementException> {
userS
ervice.delete(user()) }
userS
ervice.delete(user(UUID.randomUUID()))
}
```
...
...
@@ -143,12 +143,12 @@ class HelloController {
Lancer **Application.kt qui est à la racine du projet (clic droit -> run).
Appeler GET
192.168.1.44
:8080/hello et vérifier que la réponse est bien world.
Appeler GET
localhost
:8080/hello et vérifier que la réponse est bien world.
Par exemple en CURL
```bash
curl -XGET -v
192.168.1.44
:8080/hello
curl -XGET -v
localhost
:8080/hello
...
< HTTP/1.1 200
...
...
...
@@ -174,7 +174,7 @@ L'implémentation se fera dans une classe MovieController.
Le premier endpoint POST `/api/movies` qui prend le JSON d'un film, l'enregistre dans la Map et répond un HTTP 201 avec le contenu du film en body.
Exemple d'appel:
----
curl --location '
192.168.1.44
:8080/api/movies' \
curl --location '
localhost
:8080/api/movies' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Jurassic Park",
...
...
@@ -192,7 +192,7 @@ Modifier le endpoint pour que si on envoie deux fois la même nom de film, la r
Exemple d'appel:
----
curl --location '
192.168.1.44
:8080/api/movies' \
curl --location '
localhost
:8080/api/movies' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Jurassic Park",
...
...
@@ -200,7 +200,7 @@ curl --location '192.168.1.44:8080/api/movies' \
"releaseDate": 1993,
"languages": [ "VO", "VFF", "VFQ"]
}' &&
curl --location '
192.168.1.44
:8080/api/movies' \
curl --location '
localhost
:8080/api/movies' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Jurassic Park",
...
...
@@ -218,7 +218,7 @@ Un appel à GET `/api/movies` doit répondre 200 avec la liste des utilisateurs
Exemple d'appel:
----
curl --location '
192.168.1.44
:8080/api/movies'
curl --location '
localhost
:8080/api/movies'
----
Reponse:
[source,json]
...
...
@@ -244,13 +244,13 @@ Ajouter un endpoint GET `/api/movies/{name}` qui retourne :
Exemple d'appel:
----
curl -v --location '
192.168.1.44
:8080/api/movies/Dune'
curl -v --location '
localhost
:8080/api/movies/Dune'
HTTP/1.1 404
----
----
curl --location '
192.168.1.44
:8080/api/movies/Inception'
curl --location '
localhost
:8080/api/movies/Inception'
----
Reponse:
[source,json]
...
...
@@ -274,7 +274,7 @@ Ajouter un endpoint PUT `/api/movies/{name}` qui retourne :
Exemple d'appel:
----
curl --location --request PUT '
192.168.1.44
:8080/api/movies/Inception' \
curl --location --request PUT '
localhost
:8080/api/movies/Inception' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Inception",
...
...
@@ -301,7 +301,7 @@ Reponse:
----
----
curl -v --location --request PUT '
192.168.1.44
:8080/api/movies/Inception' \
curl -v --location --request PUT '
localhost
:8080/api/movies/Inception' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "My Little Pony",
...
...
@@ -316,7 +316,7 @@ HTTP/1.1 400
----
----
curl -v --location --request PUT '
192.168.1.44
:8080/api/movies/Dune' \
curl -v --location --request PUT '
localhost
:8080/api/movies/Dune' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Dune",
...
...
@@ -338,13 +338,13 @@ Ajouter un endpoint DELETE `/api/movies/{name}` qui retourne :
Exemple d'appel:
----
curl -v --location --request DELETE '
192.168.1.44
:8080/api/movies/Inception'
curl -v --location --request DELETE '
localhost
:8080/api/movies/Inception'
HTTP/1.1 204
----
----
curl -v --location --request DELETE '
192.168.1.44
:8080/api/movies/Dune'
curl -v --location --request DELETE '
localhost
:8080/api/movies/Dune'
HTTP/1.1 404
----
...
...
@@ -355,7 +355,7 @@ Ajouter sur la liste des films la possibilité de filtrer par note.
Exemple d'appel:
----
curl --location '
192.168.1.44
:8080/api/movies?rating=99'
curl --location '
localhost
:8080/api/movies?rating=99'
----
Reponse:
...
...
@@ -381,7 +381,7 @@ filtrer la liste des résultats
Exemple d'appel:
----
curl --header "Accept-Language: VFF" --location '
192.168.1.44
:8080/api/movies'
curl --header "Accept-Language: VFF" --location '
localhost
:8080/api/movies'
----
Reponse:
...
...
This diff is collapsed.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter