1. Go to this page and download the library: Download jonpurvis/fuzz library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
jonpurvis / fuzz example snippets
namespace App\Webhooks;
final class PayloadParser
{
public static function eventName(string $json): string
{
$data = json_decode($json, true);
// Assumes an object with a string "event" — fine for happy paths…
return $data['event'];
}
}
it('parses known webhook payloads', function (string $json, string $expected): void {
expect(PayloadParser::eventName($json))->toBe($expected);
})->with([
'checkout' => ['{"event":"checkout.session.completed"}', 'checkout.session.completed'],
'invoice' => ['{"event":"invoice.paid"}', 'invoice.paid'],
]);
it('rejects known bad webhook payloads', function (string $json): void {
expect(fn () => PayloadParser::eventName($json))->toThrow(TypeError::class);
})->with([
'empty object' => ['{}'],
'null json' => ['null'],
]);
use function Fuzz\fuzz;
test('webhook parser never fatals on hostile JSON', function (): void {
fuzz(Closure::fromCallable([PayloadParser::class, 'eventName']))
->seed([
'{"event":"checkout.session.completed"}',
'{"event":"invoice.paid","id":"in_123"}',
])
->withDictionary(['{', '}', '[', ']', 'null', 'event', ':', ','])
->runs(2000)
->maxLen(64)
->saveCrashes()
->run();
});
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.