1#! /usr/bin/perl -w
2
3use strict;
4
5use ExtUtils::testlib;
6
7use GSSAPI qw(:all);
8use Test::More tests => 13;
9
10
11my $status;
12my $okay;
13
14my( $type);
15
16
17
18#------------------------------------------
19
20my $oid = gss_nt_user_name;
21my $str;
22
23SKIP:
24{
25   skip('oid_to_str not supportetd on Heimdal', 2) if GSSAPI::gssapi_implementation_is_heimdal();
26
27   $status = $oid->to_str($str);
28   ok($status, ' $oid->to_str($str) ');
29   cmp_ok($str, 'eq', '{ 1 2 840 113554 1 2 1 1 }', q{ $str eq '{ 1 2 840 113554 1 2 1 1 }' });
30
31}
32
33    { my(@oidss); foreach(1..1000) { push @oidss, GSSAPI::OID::Set->new() };
34    }
35
36        my($oidset);
37
38$status = gss_mech_krb5->inquire_names($oidset);
39ok(ref $status eq 'GSSAPI::Status', q{ref $status eq 'GSSAPI::Status'});
40ok($status, 'gss_mech_krb5->inquire_names($oidset);');
41
42
43undef $oidset;
44
45
46
47
48#
49#	GSSAPI::Binding
50#
51    my($binding);
52
53    $binding = GSSAPI::Binding->new();
54    ok(ref $binding eq "GSSAPI::Binding");;
55    ok($binding->get_initiator_addrtype == GSS_C_AF_NULLADDR,
56       '$binding->get_initiator_addrtype == GSS_C_AF_NULLADDR');
57    ok(! defined $binding->get_initiator_address);
58    ok($binding->get_acceptor_addrtype  == GSS_C_AF_NULLADDR,
59       '$binding->get_acceptor_addrtype  == GSS_C_AF_NULLADDR');
60    ok(! defined $binding->get_acceptor_address);
61    ok(! defined $binding->get_appl_data);
62
63    $okay = 1;
64    foreach (1 .. 1000) {
65	$binding = GSSAPI::Binding->new();
66	ref $binding eq "GSSAPI::Binding"		or $okay = 0, last;
67    }
68    ok($okay, 'GSSAPI::Binding->new()');
69
70
71    # first, just random types
72    $okay = 1;
73    foreach (1 .. 1000) {
74	my($type1, $type2);
75	$binding = GSSAPI::Binding->new();
76	ref $binding eq "GSSAPI::Binding"		or $okay = 0, last;
77	$type1 = int(rand(0x7fffffff));
78	$type2 = int(rand(0x7fffffff));
79
80	$binding->set_initiator($type1, undef);
81	$binding->set_acceptor($type2, undef);
82	$binding->get_initiator_addrtype == $type1	&&
83	! defined $binding->get_initiator_address	&&
84	$binding->get_acceptor_addrtype  == $type2	&&
85	! defined $binding->get_acceptor_address	or $okay = 0, last;
86    }
87    ok($okay, 'random types as input of GSSAPI::Binding');
88     # Now, random types and values
89    $okay = 1;
90    foreach (1 .. 1000) {
91    	my($type1, $addr1, $type2, $addr2, $appl);
92
93	$type1 = int(rand(0x7fffffff));
94	$addr1 = rand_string();
95	$type2 = int(rand(0x7fffffff));
96	$addr2 = rand_string();
97	$appl = rand_string();
98
99	$binding = GSSAPI::Binding->new();
100	ref $binding eq "GSSAPI::Binding"		or $okay = 0, last;
101
102	$binding->set_initiator($type1, $addr1);
103	$binding->set_acceptor($type2, $addr2);
104	$binding->set_appl_data($appl);
105
106	$binding->get_initiator_addrtype == $type1	&&
107	$binding->get_initiator_address  eq $addr1	&&
108	$binding->get_acceptor_addrtype  == $type2	&&
109	$binding->get_acceptor_address   eq $addr2	&&
110	$binding->get_appl_data          eq $appl	or $okay = 0, last;
111	undef $binding;
112    }
113    ok($okay, 'random types and values as input of GSSAPI::Binding');
114
115
116
117
118
119
120
121#-------------------------------------------------------------
122
123sub rand_string {
124    my($length, $buf);
125    $length = int(rand(64));
126    $buf = '';
127    foreach (1..$length) {
128	$buf .= chr(rand(0xFF));
129    }
130    $buf
131}