lemonldap-ng/lemonldap-ng-portal/t/32-OIDC-ClaimTypes.t

80 lines
3.1 KiB
Perl

use Test::More;
use strict;
use IO::String;
use MIME::Base64;
use JSON qw/to_json/;
require 't/test-lib.pm';
my $res;
my $client = LLNG::Manager::Test->new( {
ini => {
logLevel => 'error',
useSafeJail => 1,
issuerDBOpenIDConnectActivation => 1,
multiValuesSeparator => ";"
}
}
);
my $oidc =
$client->p->loadedModules->{'Lemonldap::NG::Portal::Issuer::OpenIDConnect'};
my $tests = [
# Auto array
[ [ undef, "string", "auto" ], '{"key":null}' ],
[ [ "", "string", "auto" ], '{"key":null}' ],
[ [ "foo", "string", "auto" ], '{"key":"foo"}' ],
[ [ "foo;bar", "string", "auto" ], '{"key":["foo","bar"]}' ],
[ [ undef, "int", "auto" ], '{"key":null}' ],
[ [ "", "int", "auto" ], '{"key":null}' ],
[ [ "0", "int", "auto" ], '{"key":0}' ],
[ [ "0;1;2;3", "int", "auto" ], '{"key":[0,1,2,3]}' ],
[ [ undef, "bool", "auto" ], '{"key":null}' ],
[ [ "", "bool", "auto" ], '{"key":null}' ],
[ [ "0", "bool", "auto" ], '{"key":false}' ],
[ [ "1", "bool", "auto" ], '{"key":true}' ],
[ [ "0;1;;3", "bool", "auto" ], '{"key":[false,true,false,true]}' ],
# Always array
[ [ undef, "string", "always" ], '{"key":null}' ],
[ [ "", "string", "always" ], '{"key":null}' ],
[ [ "foo", "string", "always" ], '{"key":["foo"]}' ],
[ [ "foo;bar", "string", "always" ], '{"key":["foo","bar"]}' ],
[ [ undef, "int", "always" ], '{"key":null}' ],
[ [ "", "int", "always" ], '{"key":null}' ],
[ [ "0", "int", "always" ], '{"key":[0]}' ],
[ [ "0;1;2;3", "int", "always" ], '{"key":[0,1,2,3]}' ],
[ [ undef, "bool", "always" ], '{"key":null}' ],
[ [ "", "bool", "always" ], '{"key":null}' ],
[ [ "0", "bool", "always" ], '{"key":[false]}' ],
[ [ "1", "bool", "always" ], '{"key":[true]}' ],
[ [ "0;1;;3", "bool", "always" ], '{"key":[false,true,false,true]}' ],
# Never array
[ [ undef, "string", "never" ], '{"key":null}' ],
[ [ "", "string", "never" ], '{"key":null}' ],
[ [ "foo", "string", "never" ], '{"key":"foo"}' ],
[ [ "foo;bar", "string", "never" ], '{"key":"foo;bar"}' ],
[ [ undef, "int", "never" ], '{"key":null}' ],
[ [ "", "int", "never" ], '{"key":null}' ],
[ [ "0", "int", "never" ], '{"key":0}' ],
[ [ "0;1;2;3", "int", "never" ], '{"key":"0;1;2;3"}' ],
[ [ undef, "bool", "never" ], '{"key":null}' ],
[ [ "", "bool", "never" ], '{"key":null}' ],
[ [ "0", "bool", "never" ], '{"key":false}' ],
[ [ "1", "bool", "never" ], '{"key":true}' ],
[ [ "0;1;;3", "bool", "never" ], '{"key":"0;1;;3"}' ],
];
for my $test ( @{$tests} ) {
my @args = @{ $test->[0] };
my $expect = $test->[1];
is( to_json( { key => $oidc->_formatValue( @args, "key", "foo" ) } ),
$expect, "_formatvalue(" . join( ', ', map { "'$_'" } @args ) . ")" );
}
done_testing();