#! /usr/bin/perl -w
use strict;
use ExtUtils::testlib;
use GSSAPI qw(:all);
use Test::More tests => 6;
#
# GSSAPI::Cred
#
my($cred1, $time, $name );
my $wanted_cred_usage = GSS_C_INITIATE;
my $oidset;
my $status = GSSAPI::Cred::acquire_cred(undef, 120, undef, $wanted_cred_usage,
$cred1, $oidset, $time);
my $credusage_names = {
GSS_C_INITIATE + 0 => 'GSS_C_INITIATE',
GSS_C_ACCEPT + 0 => 'GSS_C_ACCEPT',
GSS_C_BOTH + 0 => 'GSS_C_BOTH',
};
SKIP: {
if ( $status->major != GSS_S_COMPLETE ) {
diag( "\n\nNo error: acquire_cred() failed, maybe because you have to run kinit first.\n",
"Errormessage from your GSSAPI-implementation is: \n\n" . qq{"$status"},
"\nrun kinit to get a TGT and retry this test (just skipping now).\n\n");
skip( 'This tests only work if user has run kinit succesfully' , 6 );
}
ok($status, "GSSAPI::Cred::acquire_cred, wanted_cred_usage $wanted_cred_usage");
ok(ref $cred1 eq "GSSAPI::Cred");
ok(ref $oidset eq "GSSAPI::OID::Set");
my($lifetime, $cred_usage);
$status = $cred1->inquire_cred($name, $lifetime, $cred_usage, $oidset);
ok( $status, '$cred1->inquire_cred($name, $lifetime, $cred_usage, $oidset' );
if ( $lifetime == -1 ) {
diag('The returned TGT lifetime is -1 (Heimdal 1.0.x returns -1 in case of ivalid TGT)');
diag('To get full test-coverage please run kinit to get a valid TGT and restart this test.');
skip( '$lifetime == -1' , 2 );
}
{
my $display;
my $status = $name->display($display);
if ( $status->major == GSS_S_COMPLETE ) {
diag("inquire_cred() name:\t'$display'");
}
}
diag("inquire_cred() lifetime:\t$lifetime seconds");
diag("inquire_cred() credusage:\t $cred_usage (" . $credusage_names->{$cred_usage} . ')' );
ok(ref $oidset eq "GSSAPI::OID::Set");
#
# currently heimdal 1.3.2 fails the next test - please let me know
# if you have any ideas what is going wrong - as far as I can see
# this version of Heimal behaves strange and returns 'ACCEPT' if INITIATE
# is requested :-/
#
ok(
( $cred_usage == $wanted_cred_usage or $cred_usage == GSS_C_BOTH ) ,
sprintf('expected cred usage (wanted %s, got %s)', map { $credusage_names->{$_} } ($wanted_cred_usage, $cred_usage))
);
}