#! /usr/bin/env perl use strict; use warnings; use autodie; use Test::More; use Data::Dumper; use File::Slurp; use Crypt::JWT qw(encode_jwt decode_jwt); my $private_key = read_file('throwaway.pem'); my $public_key = read_file('throwaway.pem.pub'); my $wrong_public_key = read_file('fake_key.pem.pub'); my $payload = { just => 'another', perl => 'hacker' }; my $token = encode_jwt( payload => $payload, key => \$private_key, alg => 'RS256' ); ok( decode_jwt( token => $token, key => \$public_key ) ); ok( decode_jwt( token => $token, key => \$wrong_public_key )); done_testing(); $ ./test_jwt.pl ok 1 JWS: decode failed at ./test_jwt.pl line 26. # Tests were run but no plan was declared and done_testing() was not seen. # Looks like your test exited with 255 just after 1.