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