Passwd-Keyring-Auto
view release on metacpan or search on metacpan
t/21-finds_proper_keyring_envs.t view on Meta::CPAN
#!perl -T
use strict;
use warnings;
use Test::More;
use File::Temp;
BEGIN { use_ok("Passwd::Keyring::Auto", qw(get_keyring)) };
# Minimal env grabbing
my @diagn;
foreach my $variable (qw(DESKTOP_SESSION)) {
push @diagn, "$variable=$ENV{$variable}" if $ENV{$variable};
}
foreach my $variable (qw(DISPLAY GNOME_DESKTOP_SESSION_ID DBUS_SESSION_BUS_ADDRESS GNOME_KEYRING_CONTROL GNOME_KEYRING_PID)) {
push @diagn, "$variable present" if $ENV{$variable};
}
diag(join(", ", @diagn));
# Under Gnome good keyring should be picked
SKIP: {
skip "Not a Gnome session", 3
unless $ENV{GNOME_DESKTOP_SESSION_ID} || ($ENV{DESKTOP_SESSION} || '') =~ /^(gnome.*|ubuntu)$/i;
skip "Running as root", 3
unless $>;
eval { require Passwd::Keyring::Gnome };
skip "Passwd::Keyring::Gnome not installed", 3
if $@;
my $ring = get_keyring(app_name=>"Passwd::Keyring::Auto unit tests", group=>"Passwd::Keyring::Auto");
ok($ring, "Got some keyring");
ok($ring->is_persistent, "Under Gnome we should get persistent keyring");
isa_ok($ring, "Passwd::Keyring::Gnome", "Under Gnome we should get Gnome keyring");
}
# ... but not if it is forbidden
SKIP: {
skip "Not a Gnome session", 3
unless $ENV{GNOME_DESKTOP_SESSION_ID} || ($ENV{DESKTOP_SESSION} || '') =~ /^(gnome.*|ubuntu)$/i;
eval { require Passwd::Keyring::Gnome };
skip "Passwd::Keyring::Gnome not installed", 3 if $@;
local $ENV{PASSWD_KEYRING_FORBID} = 'Gnome';
my $ring = get_keyring(app_name=>"Passwd::Keyring::Auto unit tests", group=>"Passwd::Keyring::Auto");
ok($ring, "Got some keyring");
unlike(ref($ring), qr/::Gnome$/, "We should respect FORBID under Gnome");
}
# Under KDE we should get KDE Wallet
SKIP: {
skip "Not a KDE desktop session", 3
unless ($ENV{DESKTOP_SESSION} || '') =~ /^kde/;
skip "Running as root", 3
unless $>;
eval { require Passwd::Keyring::KDEWallet };
skip "Passwd::Keyring::KDEWallet not installed", 3
if $@;
local $ENV{PASSWD_KEYRING_FORBID} = 'Gnome';
my $ring = get_keyring(app_name=>"Passwd::Keyring::Auto unit tests", group=>"Passwd::Keyring::Auto");
ok($ring, "Got some keyring");
ok($ring->is_persistent, "Under Linux desktop we should get persistent keyring");
isa_ok($ring, "Passwd::Keyring::KDEWallet", "Under KDE we should get KDE keyring");
}
# ... unless forbidden
SKIP: {
skip "Not a KDE desktop session", 3
unless ($ENV{DESKTOP_SESSION} || '') =~ /^kde/;
eval { require Passwd::Keyring::KDEWallet };
skip "Passwd::Keyring::KDEWallet not installed", 3
if $@;
local $ENV{PASSWD_KEYRING_FORBID} = 'KDEWallet';
my $ring = get_keyring(app_name=>"Passwd::Keyring::Auto unit tests", group=>"Passwd::Keyring::Auto");
ok($ring, "Got some keyring");
ok($ring->is_persistent, "Under Linux desktop we should get persistent keyring");
unlike(ref($ring), qr/::KDEWallet/, "We should respect FORBID under KDE");
}
SKIP: {
skip "Not a desktop session", 3
unless ($ENV{DESKTOP_SESSION});
skip "Running as root", 3
unless $>;
local $ENV{PASSWD_KEYRING_FORBID} = 'KDEWallet Gnome';
my $ring = get_keyring(app_name=>"Passwd::Keyring::Auto unit tests", group=>"Passwd::Keyring::Auto");
ok($ring, "Got some keyring");
unlike(ref($ring), qr/::KDEWallet/, "We should respect FORBID");
unlike(ref($ring), qr/::Gnome/, "We should respect FORBID");
}
SKIP: {
skip "Not a Mac", 3
unless $^O eq 'darwin';
skip "Running as root", 3
unless $>;
eval { require Passwd::Keyring::OSXKeychain };
skip "Passwd::Keyring::OSXKeychain not installed", 3 if $@;
my $ring = get_keyring(app_name=>"Passwd::Keyring::Auto unit tests", group=>"Passwd::Keyring::Auto");
ok($ring, "Got some keyring");
ok($ring->is_persistent, "Under OS/X we should get persistent keyring");
isa_ok($ring, "Passwd::Keyring::OSXKeychain", "Under darwin we should get OSXKeychain keyring");
}
SKIP: {
eval { require Passwd::Keyring::PWSafe3; };
skip "Passwd::Keyring::PWSafe3 not installed", 3
if $@;
local $ENV{PASSWD_KEYRING_FORCE} = "PWSafe3";
my ($fh, $filename) = File::Temp::tempfile();
my $ring = get_keyring(
app_name=>"Passwd::Keyring::Auto unit tests", group=>"Passwd::Keyring::Auto",
master_password=>"Very Secret Password",
file=>$filename);
ok($ring, "Got some keyring");
ok($ring->is_persistent, "We should get persistent keyring");
isa_ok($ring, "Passwd::Keyring::PWSafe3", "With PASSWD_KEYRING_FORCE=PWSafe3, got " . ref($ring));
}
done_testing;
( run in 1.165 second using v1.01-cache-2.11-cpan-97f6503c9c8 )