0

J'ai un test d'intégration qui teste un contrôleur. Je passe une demande et obtiens une réponse et le test passe. Je dois cependant, avant de faire la demande, faire une demande au point de terminaison /authenticate pour récupérer un jeton afin que je puisse le mettre dans l'en-tête de la demande. J'ai 2 questionsTests d'intégration Java Spring Boot Modification et authentification de la base de données

  1. Le nom d'utilisateur et mot de passe que j'utilise localement valide contre un serveur de développement de LDAP. Lorsque l'application est déployée dans des environnements supérieurs, le point de terminaison LDAP passe au niveau correspondant. Ainsi, dans les environnements supérieurs à DEV, le test d'intégration échouera car ce nom d'utilisateur/mot de passe ne fonctionnera pas. Alors, quelle est la meilleure façon de trouver le nom d'utilisateur/mot de passe pour correspondre à l'environnement? Y a-t-il une meilleure façon de faire cela, comme forcer le printemps à oublier complètement l'authentification?
  2. Le test d'intégration teste tous les points de terminaison du contrôleur, tels que /add, /get etc. Ceci malheureusement modifie réellement la base de données (attendue). Y at-il un moyen d'exécuter ces tests, mais pas effectivement modifier la base de données?

Répondre

0

1) Dans votre classe de test unitaire, utilisation @TestPropertySource(properties = {"security.basic.enabled=false"}) supplante vos paramètres de sécurité ou @TestPropertySource(locations="classpath:test.properties") si vous souhaitez utiliser un fichier des propriétés totalement différentes tests.

2) Vous pouvez utiliser simulacres, ou si vous ne voulez pas utiliser simulacres dans vos tests d'intégration, vous devrez nettoyer la base de données après chaque test en utilisant quelque chose comme ceci:

@After  
public void tearDown() { 
    cleanupDatabase(); 
} 
+0

# 1 n'a pas fonctionné, il échoue toujours pour l'authentification. – Richard