From 60d93af35887e53677be5a0f95591489c2683c73 Mon Sep 17 00:00:00 2001
From: Kent Fredric <kentnl@gentoo.org>
Date: Wed, 13 Dec 2017 18:42:56 +1300
Subject: Remove test interactivity

Pass configuration by enviroment variables and don't prompt.
---
 test.pl | 82 ++++++++++++++++-------------------------------------------------
 1 file changed, 20 insertions(+), 62 deletions(-)

diff --git a/test.pl b/test.pl
index 369bc30..e9f7ae2 100644
--- a/test.pl
+++ b/test.pl
@@ -5,14 +5,8 @@
 
 use Test::More tests => 32;
 #use Test::More qw/no_plan/;
-use ExtUtils::MakeMaker qw/prompt/;
 use Carp;
 use Cwd;
-my $HAVE_Term_ReadKey = 0;
-eval "use Term::ReadKey";
-if(!$@) {
-    $HAVE_Term_ReadKey = 1
-}
 
 use vars qw/$ROUTER $PASSWD $LOGIN $S $EN_PASS $PASSCODE/;
 
@@ -161,18 +155,9 @@ END { cleanup() };
 
 sub cleanup {
     return unless -f "input.log" || -f "dump.log";
-
-    print <<EOB;
-
-Would you like to delete the test logs? They will contain
-security info like your login and passwords. If you ran
-into problems and wish to investigate, you can save them
-and manually delete them later.
-EOB
-
     my $dir = cwd();
 
-    my $ans = prompt("Delete logs", "y");
+    my $ans = "y";
     if ($ans eq "y") {
 	print "Deleting logs in $dir...";
 	unlink "input.log" or warn "Can't delete input.log! $!";
@@ -183,53 +168,26 @@ EOB
     }
 }
 
-sub get_login {
-    print <<EOB;
-
-Net::Telnet::Cisco needs to log into a router to
-perform it\'s full suite of tests. To log in, we
-need a test router, a login, a password, an
-optional enable password, and an optional
-SecurID/TACACS PASSCODE.
-
-To skip these tests, hit "return".
-
-EOB
-
-    $ROUTER   = prompt("Router:", $ROUTER) or return;
-    $LOGIN    = prompt("Login:", $LOGIN) or return;
-    $PASSWD   = passprompt("Password:", $PASSWD) or return;
-    $EN_PASS  = passprompt("Enable password [optional]:", $EN_PASS);
-    $PASSCODE = passprompt("SecurID/TACACS PASSCODE [optional]:", $PASSCODE);
+sub maskpass {
+    return 'not set' unless defined $_[0];
+    return ( '*' x ( length $_[0] ) ) . ' [masked]';
 }
 
+sub get_login {
+    $ROUTER = $ENV{CISCO_TEST_ROUTER}   or return;
+    $LOGIN  = $ENV{CISCO_TEST_LOGIN}    or return;
+    $PASSWD = $ENV{CISCO_TEST_PASSWORD} or return;
+    $EN_PASS  = $ENV{CISCO_TEST_ENABLE_PASSWORD};
+    $PASSCODE = $ENV{CISCO_TEST_PASSCODE};
+
+    printf STDERR
+      <<EOB, $ROUTER, $LOGIN, maskpass($PASSWD), maskpass($EN_PASS), maskpass($PASSCODE);
+Using the following configuration for testing:
+                    Router: %s
+                     Login: %s
+                  Password: %s
+           Enable Password: %s
+  SecureID/TACACS PASSCODE: %s
 
-# Lifted from ExtUtils::MakeMaker.
-#
-# If the user has Term::ReadKey, we can hide any passwords
-# they type from shoulder-surfing attacks.
-#
-# Args: "Question for user", "optional default answer"
-sub passprompt ($;$) {
-    my($mess,$def)=@_;
-    $ISA_TTY = -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT)) ;   # Pipe?
-    Carp::confess("prompt function called without an argument") unless defined $mess;
-    my $dispdef = defined $def ? "[$def] " : " ";
-    $def = defined $def ? $def : "";
-    my $ans;
-    local $|=1;
-    print "$mess $dispdef";
-    if ($ISA_TTY) {
-	if ( $Term::ReadKey::VERSION ) {
-	    ReadMode( 'noecho' );
-	    chomp($ans = ReadLine(0));
-	    ReadMode( 'normal' );
-	    print "\n";
-	} else {
-	    chomp($ans = <STDIN>);
-	}
-    } else {
-        print "$def\n";
-    }
-    return ($ans ne '') ? $ans : $def;
+EOB
 }
-- 
2.14.3