Aller au contenu

Tests

phil/open-badges

Les tests de la bibliothèque

La suite tests/Unit couvre les encodages, les clés, les JSON Web Tokens, les parties d'un titre et leurs vérifications, le processeur JSON-LD fonctionnalité par fonctionnalité et chacun de ses refus, la canonicalisation de jeux de données que seul leur voisinage distingue — et son indépendance par rapport aux étiquettes et à l'ordre —, les preuves Data Integrity, les listes d'état, les appuis, les relevés d'apprentissage, l'intégration dans les images PNG et SVG et le vérificateur.

Deux vecteurs publiés ancrent la cryptographie : l'exemple eddsa-rdfc-2022 de la spécification du W3C des suites cryptographiques EdDSA — sa forme canonique et la valeur de sa preuve sont reproduites exactement — et la paire de clés de ses exemples sous forme de Multikey. La canonicalisation réussit aussi tous les tests d'évaluation de la suite RDFC-1.0 du W3C.

Depuis la racine du monodépôt :

vendor/bin/phpunit packages/open-badges/tests

Infection exige de la bibliothèque un score de mutation couvert de 100 %.

Fuzzing

Trois cibles de fuzzing lisent des entrées que personne n'a écrites — un PNG, un SVG, un jeton ou un document à vérifier — et ne doivent jamais faire autre chose que retourner un résultat ou lancer une exception de la bibliothèque. composer fuzz, depuis la racine du monodépôt, exécute chacune pendant 30 secondes à partir des germes de tests/Fuzz/corpus.

Le banc d'essai

tests/Benchmark/OpenBadgesBench.php mesure ce que font une page de vérification et un émetteur : vérifier un jeton et un document, signer un document — où la canonicalisation domine — et lire un PNG intégré.

Tester du code qui émet des titres

Signez avec un germe fixe, Ed25519Signer::fromSeed(str_repeat("\1", 32)), et vérifiez avec son verificationKey() dans un DidKeyMethods. Les signatures Ed25519 sont déterministes : un titre signé deux fois avec les mêmes entrées donne les mêmes octets, et un test peut le comparer en entier.