1## SUFFIX SELECTION VALIDATION 2## 3## Here we can check the suffix selection function. 4## 5## We do not need running LDAP server for that 6## 7 8use strict; 9use warnings; 10use utf8; 11use File::Spec; 12use Test::More; 13 14#--- check permission to run test 15my $test_directory = File::Spec->catfile( 't', '18_ldap'); 16my $semaphore_file = File::Spec->catfile( 17 $test_directory, 18 'enable_talk_to_server', 19 ); 20if( !( -f $semaphore_file) ) { 21 plan skip_all => "No ldap server for testing"; 22}; 23 24use_ok( 'OpenXPKI::LdapUtils' ); 25 26# A hash with DN-s for tests: 27# $dn => suffix index in @{$suffixes} ( - 1 if not found ) 28# messages about suffixes are in %suffix_messages - keep it 29# syncronized with @{$suffixes} and %cert_dns 30# FIXME - would be nice to create those structures dynamically 31# 32 33 34my %cert_dns=( 35 "CN=aa+SN=dC,OU=Decels,L=GB,ST=SomeYz,DC=OpenXPKI,DC=org" => 0, 36 "CN=aa+SN=dC,OU=Decels,L=GB,ST=SomeYz,DC=OpenXPKI,C=RU" => 1, 37 "CN=aa+SN=dC,OU=Decels,L=GB,ST=SomeYz,DC=IPMCE,C=RU" => -1, 38 "CN=aa+SN=dC,OU=Decels,L=GB,ST=SomeYz,DC=IPMCE,DC=org" => -1, 39 "CN=aa+SN=dC,OU=Decels,L=GB,ST=SomeYz,DC=OpenXPKI,DC=RU" => -1, 40 "CN=Иван+SN=dC,OU=Decels,L=GB,ST=SomeYz,DC=OpenXPKI,DC=org" => 41 0, 42 "CN=John+SN=Иванов,OU=Decels,L=GB,ST=SomeYz,DC=OpenXPKI,DC=org" => 43 0, 44 "CN=Иван+SN=Иванов,OU=Decels,L=GB,ST=SomeYz,DC=OpenXPKI,DC=org" => 45 0, 46 "CN=John+SN=dC,OU=Отдел Инвормации,L=RU,ST=Россия,DC=OpenXPKI,DC=org" => 47 0, 48 "CN=Иван+SN=dC,OU=Decels,L=GB,O=Институт Механики,DC=org" => 49 2, 50 "CN=John+SN=Иванов,OU=Decels,L=GB,O=Институт Механики,DC=org" => 51 2, 52 "CN=Иван+SN=Иванов,OU=Decels,L=GB,O=Институт Механики,DC=org" => 53 2, 54 "CN=John+SN=dC,OU=Отдел Инвормации,L=RU,O=Институт Механики,DC=org" => 55 2, 56 "CN=Иван+SN=dC,OU=Decels,L=GB,ST=SomeYz,DC=OpenXPKIй,DC=org" => 57 -1, 58 "CN=John+SN=Иванов,OU=Decels,L=GB,ST=SomeYz,DC=OpenXPKIй,DC=org" => 59 -1, 60 "CN=Иван+SN=Иванов,OU=Decels,L=GB,ST=SomeYz,DC=OpenXPKIй,DC=org" => 61 -1, 62 "CN=John+SN=dC,OU=Отдел Инвормации,L=RU,ST=Россия,DC=OpenXPKIй,DC=org" => 63 -1, 64 "CN=Иван+SN=dC,OU=Decels,L=GB,O=Институт Механикий,DC=org" => 65 -1, 66 "CN=John+SN=Иванов,OU=Decels,L=GB,O=Институт Механикий,DC=org" => 67 -1, 68 "CN=Иван+SN=Иванов,OU=Decels,L=GB,O=Институт Механикий,DC=org" => 69 -1, 70 "CN=John+SN=dC,OU=Отдел Инвормации,L=RU,O=Институт Механикий,DC=org" => 71 -1, 72 ); 73 74my $suffixes=[ 75 'dc=openxpki,dc=org' , 76 'dc=openxpki,c=RU', 77 'O=Институт Механики,DC=org', 78 ]; 79 80# ^ 81# keep this hash | and this array | synchronized 82# v 83my %suffix_messages=( 84 'dc=openxpki,dc=org' => 85 'dc=openxpki,dc=org', 86 'dc=openxpki,c=RU' => 87 'dc=openxpki,c=RU', 88 'O=Институт Механики,DC=org' => 89 ' (UTF-8 characters)', 90 ); 91 92 93 94my @results=(); 95my $utils=OpenXPKI::LdapUtils->new(); 96my $test_number = scalar (keys %cert_dns); 97 98plan tests => $test_number; 99 100 101diag "GET SUFFIX VALIDATION\n" if $ENV{VERBOSE}; 102 103if($ENV{DEBUG}){ 104 diag( "NUMBER OF TESTS >" . $test_number . "<\n"); 105}; 106 107 108foreach my $cert_dn ( keys %cert_dns ) { 109 110 if($ENV{DEBUG}){ 111 diag( "--- DN --- ". $cert_dn . "\n"); 112 }; 113 114 my $suffix = $utils->get_suffix( $cert_dn , $suffixes ); 115 if( defined $suffix ){ 116 117 if($ENV{DEBUG}){ 118 diag( "SUFFIX --- ". $suffix . "\n"); 119 }; 120 is( 121 $suffix, 122 $suffixes->[$cert_dns{$cert_dn}], 123 'Find a suffix '. $suffix_messages{$suffix} 124 ); 125 } else { 126 127 if($ENV{DEBUG}){ 128 diag( "SUFFIX --- NOT FOUND\n"); 129 }; 130 is(-1,$cert_dns{$cert_dn},'The suffix does not match anything'); 131 }; 132}; 1331; 134 135 136