IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Tests unitaires avec lexik_jwt_authentication.


Sujet :

Symfony PHP

  1. #1
    Membre éclairé
    Avatar de fenrir0680
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 49
    Billets dans le blog
    2
    Par défaut Tests unitaires avec lexik_jwt_authentication.
    Bonjour tous le monde,

    En deux mots j’essaie de faire des tests unitaires sous symfony 4.1 (website-skeleton).
    Je n'arrive pas à testé le login et récupérer le token d'autehtification.
    J'ai suivi la doc du bundle qui est bien succincte.

    Pour info, avec le logiciel postman
    ou Curl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    curl -X POST -H "Content-Type: application/json" http://localhost/api/login_check -d '{"_username":"username","_password":"password"}'
    je récupère bien mon token.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    <?php
     
    namespace tests\Controller;
     
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
     
    class SecurityControllerTest extends WebTestCase
    {
        /**
         * @var Symfony\Bundle\FrameworkBundle\Client
         */
        private $client = null;
     
        public function setUp()
        {
            parent::setUp();
     
            $this->client = static::createClient();
        }
     
        /**
         * Test the login.
         *
         * @see SecurityController::login()
         */
        public function testLoginPass()
        {
            // Make the request
            $this->client->request(
                'POST',
                '/api/login_check',
                array(
                '_username' => 'username',
                '_password' => 'password',
            )
            );
            // Check the content body
            $data = json_decode($this->client->getResponse()->getContent(), true);
            $this->assertArrayHasKey('token', $data);
     
            // Check the statut code
            $this->assertSame(Response::HTTP_OK, $this->client->getResponse()->getStatusCode());
     
            // Check if the response is successful
            $this->assertTrue($this->client->getResponse()->isSuccessful());
        }
    }
    Lorsque je lance mon test unitaire, j'ai un retour "Bad credentials".

    Si une âme charitable à une idée, merci.

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    je ne connais rien à Symfony donc a prendre avec des pincettes mais dans ta requête curl tu passes un objet json.

    Or dans ton test, tout au plus, tu passes un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    array(
     '_username' => 'username',
     '_password' => 'password',)
    Donc même si $this->client->request() convertit automatiquement en json tu vas recevoir un tableau et pas un objet.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Avatar de fenrir0680
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 49
    Billets dans le blog
    2
    Par défaut
    Malheureusement j'ai déjà essayé, mais la méthode demande un tableau en paramètre.

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    Ta requête POST avec curl marche bien. Tu peux lancer la même requête curl avec un package comme guzzlehttp/guzzle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
        /**
         * Test the login.
         *
         * @see SecurityController::login()
         */
        public function testLoginPass()
        {
           $client = new \GuzzleHttp\Client();
           $response=   $client->post('http://localhost/api/login_check',[
                'json' => ['_username' => 'username', '_password' => 'password']
            ]);
     
            $this->assertSame(Response::HTTP_OK,$response->getStatusCode());
            $body = json_decode($response->getBody()->getContents(), TRUE);
            $this->assertArrayHasKey('token', $body);
        }

Discussions similaires

  1. Test unitaire avec DUnit
    Par stef_chand dans le forum Outils
    Réponses: 1
    Dernier message: 07/09/2007, 15h40
  2. Test unitaire avec C# et nunit
    Par jeromechezgdf dans le forum C#
    Réponses: 6
    Dernier message: 16/07/2007, 11h51
  3. Tests unitaires avec vbUnit sur des contrôles utilisateurs
    Par Patrick Mortas dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 07/09/2006, 18h06
  4. test unitaire avec python
    Par Abla23 dans le forum Zope
    Réponses: 4
    Dernier message: 30/06/2006, 13h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo