SkillAgentSearch skills...

Apiplatformcon2022

conférence "Tests avancés" - fichiers d'exemple

Install / Use

/learn @odoucet/Apiplatformcon2022
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Tests avancés - API PLATFORM CON 2022

Ce repository contient tous les exemples mentionnés pendant la conférenc "Tests avancés" que j'ai eu l'occasion de produire pendant l'API Platform Con les 15 et 16 septembre 2022.

Erreurs

C'est du live, on est à l'oral, et un certain nombre d'erreurs se sont glissées dans mon talk :) Les voici :

  • Les transactions sur les tests unitaires ne sont pas natives, il faut utiliser le trait RefreshDatabaseTrait.
  • Non, on n'utilise pas les fixtures de base (cela fait tellement longtemps que j'ai oublié ...) mais hautelook/alice-bundle avec des fixtures en yaml.

Tester une API distante sans l'appeler

Tout est très bien expliqué dans cet article écrit par Loïc qui a justement implémenté cela chez nous : https://www.strangebuzz.com/en/blog/simple-api-mocking-with-the-symfony-http-client

Réécrire une partie de la spec OpenAPI

Je suis en fait partie de cette documentation d'APIP, qui ajoute une authentification JWT dans la spec OpenAPI : https://api-platform.com/docs/core/jwt/

Tester les ACLs

Voilà quelques exemples de codes utilisés chez nous :

// getAdminClient() fait appel à static::createClient()

$response = $this->getAdminClient()->request('GET', '/flavors');
self::assertResponseIsSuccessful();
self::assertCount(6, $response->toArray()['hydra:member']);
self::assertEquals(6, $response->toArray()['hydra:totalItems']);
// si entité classique
self::assertMatchesResourceCollectionJsonSchema(Flavor::class);

// si entité complexe (champs additionnels en fonction du rôle)
foreach ($response->toArray()['hydra:member'] as $flav) {
    
    self::assertEqualsCanonicalizing(['@id', '@type', 'id', 'name', 'ram', 'core', 'disk', 'isPublic'], array_keys($flav));
    self::assertTrue($flav['isPublic'], 'isPublic is always true for admin user');
}

Configuration de Rector pour upgrades facile en PHP8 / Symfony6

Ajoutez un fichier rector.php à la racine de votre repository avec :

<?php

declare(strict_types=1);

use Rector\Config\RectorConfig;
use Rector\Doctrine\Set\DoctrineSetList;
use Rector\Set\ValueObject\SetList;
use Rector\Symfony\Set\SensiolabsSetList;
use Rector\Symfony\Set\SymfonySetList;

return static function (RectorConfig $rectorConfig): void {
    $rectorConfig->import(SetList::PHP_80); // use SetList::PHP_81 at migration and rerun
    $rectorConfig->import(DoctrineSetList::ANNOTATIONS_TO_ATTRIBUTES);
    $rectorConfig->import(SymfonySetList::ANNOTATIONS_TO_ATTRIBUTES);
    $rectorConfig->import(SensiolabsSetList::FRAMEWORK_EXTRA_61);
};

CI/CD rapide

Lisez .gitlab-ci.yml ; Notamment les lignes de lancement des principaux outils présentés :)

Accès facile à la toolbox en local

Inspirez vous du fichier Makefile ici, à copier à la racine de votre repository. Pour voir les possibilités, lancez make help dans le répertoire.

View on GitHub
GitHub Stars16
CategoryDevelopment
Updated3y ago
Forks0

Languages

Makefile

Security Score

60/100

Audited on Jan 16, 2023

No findings