1###################################################################### 2# Test suite for Net::SSH::AuthorizedKeysFile (ssh-2) 3# by Mike Schilli <m@perlmeister.com> 4###################################################################### 5 6use warnings; 7use strict; 8use File::Temp qw(tempfile); 9use Log::Log4perl qw(:easy); 10use File::Copy; 11# Log::Log4perl->easy_init($DEBUG); 12 13use Test::More tests => 16; 14BEGIN { use_ok('Net::SSH::AuthorizedKeysFile') }; 15 16my $tdir = "t"; 17$tdir = "../t" unless -d $tdir; 18my $cdir = "$tdir/canned"; 19 20use Net::SSH::AuthorizedKeysFile; 21 22my $ak = Net::SSH::AuthorizedKeysFile->new(file => "$cdir/ak-ssh2.txt"); 23$ak->read(); 24 25my @keys = $ak->keys(); 26 27is($keys[0]->type(), "ssh-2", "type"); 28is($keys[1]->type(), "ssh-2", "type"); 29 30is($keys[0]->key(), "AAAAAlkj2lkjalsdfkjlaskdfj234", "key"); 31is($keys[1]->key(), "AAAAAlkj2lkjalsdfkjlaskdfj234", "key"); 32 33is($keys[0]->email(), 'foo@bar.com', "key"); 34is($keys[1]->email(), 'bar@foo.com', "key"); 35 36# modify a ssh-2 key 37my($fh, $filename) = tempfile(); 38copy "$cdir/ak-ssh2.txt", $filename; 39$ak = Net::SSH::AuthorizedKeysFile->new(file => "$cdir/ak-ssh2.txt"); 40$ak->read(); 41 42$ak = Net::SSH::AuthorizedKeysFile->new(file => $filename); 43$ak->read(); 44 45@keys = $ak->keys(); 46 47$keys[0]->key("123"); 48is($keys[0]->key(), "123", "modified key"); 49$ak->save(); 50 51$ak = Net::SSH::AuthorizedKeysFile->new(file => $filename); 52$ak->read(); 53is($keys[0]->key(), "123", "modified key"); 54is($keys[1]->key(), "AAAAAlkj2lkjalsdfkjlaskdfj234", "unmodified key"); 55 56# ECDSA support 57 58$ak = Net::SSH::AuthorizedKeysFile->new(file => "$cdir/ak-ecdsa.txt"); 59$ak->read(); 60 61@keys = $ak->keys(); 62 63is($keys[0]->type(), "ssh-2", "type"); # ecdsa-sha2-nistp521 64is($keys[1]->type(), "ssh-2", "type"); 65 66is($keys[0]->key(), "AAAAAlkj2lkjalsdfkjlaskdfj234", "key"); 67is($keys[1]->key(), "AAAAAlkj2lkjalsdfkjlaskdfj234", "key"); 68 69# Ed25519 support 70 71$ak = Net::SSH::AuthorizedKeysFile->new(file => "$cdir/ak-ed25519.txt"); 72$ak->read(); 73 74@keys = $ak->keys(); 75 76is($keys[0]->type(), "ssh-2", "type"); # ed25519 77 78is($keys[0]->key(), "AAAAAlkj2lkjalsdfkjlaskdfj234", "key"); 79