v4krb524d.exp: New tests for the krb524d and k524init programs
authorEzra Peisach <epeisach@mit.edu>
Sun, 17 Jun 2001 14:45:18 +0000 (14:45 +0000)
committerEzra Peisach <epeisach@mit.edu>
Sun, 17 Jun 2001 14:45:18 +0000 (14:45 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@13356 dc483132-0cff-0310-8789-dd5450dbe970

src/tests/dejagnu/krb-standalone/ChangeLog
src/tests/dejagnu/krb-standalone/v4krb524d.exp [new file with mode: 0644]

index e75e4fc65468b87874231d46d697793db467a6b3..91e053f37203860c067b1e23e020ee4c2ea32a26 100644 (file)
@@ -1,3 +1,7 @@
+2001-06-17  Ezra Peisach  <epeisach@mit.edu>
+
+       * v4krb524d.exp: New tests for the krb524d and k524init programs. 
+
 2001-06-08  Ezra Peisach  <epeisach@mit.edu>
 
        * v4gssftp.exp: During test, set KRB5CCNAME to a non-existant
diff --git a/src/tests/dejagnu/krb-standalone/v4krb524d.exp b/src/tests/dejagnu/krb-standalone/v4krb524d.exp
new file mode 100644 (file)
index 0000000..5506a06
--- /dev/null
@@ -0,0 +1,163 @@
+# Standalone Kerberos test.
+# This is a DejaGnu test script.
+# This script tests that the Kerberos tools can talk to each other.
+
+# This mostly just calls procedures in testsuite/config/default.exp.
+
+if ![info exists K524INIT] {
+    set K524INIT [findfile $objdir/../../krb524/k524init]
+}
+
+if ![info exists KRB524D] {
+    set KRB524D [findfile $objdir/../../krb524/krb524d]
+}
+
+if ![info exists KLIST] {
+    set KLIST [findfile $objdir/../../clients/klist/klist]
+}
+
+if ![info exists KDESTROY] {
+    set KDESTROY [findfile $objdir/../../clients/kdestroy/kdestroy]
+}
+
+# Set up the Kerberos files and environment.
+if {![get_hostname] || ![setup_kerberos_files] || ![setup_kerberos_env]} {
+    return
+}
+
+# If we do not have what is for a V4 test - return
+if ![v4_compatible_enctype] {
+    return
+}
+
+# Initialize the Kerberos database.  The argument tells
+# setup_kerberos_db that it is being called from here.
+if ![setup_kerberos_db 1] {
+    return
+}
+
+# A procedure to stop the krb524 daemon.
+proc start_k524_daemon { } {
+    global KRB524D
+    global k524d_spawn_id
+    global k524d_pid
+    global REALMNAME
+
+    spawn $KRB524D -m -p 3752 -r $REALMNAME -nofork
+    set k524d_spawn_id $spawn_id
+    set k524d_pid [exp_pid]
+
+    # Give the krb524d daemon a few seconds to get set up.
+    catch "exec sleep 2"
+}
+
+# A procedure to stop the krb524 daemon.
+proc stop_k524_daemon { } {
+    global k524d_spawn_id
+    global k524d_pid
+
+    if [info exists k524d_pid] {
+       catch "close -i $k524d_spawn_id"
+       catch "exec kill $k524d_pid"
+       catch "wait -i $k524d_spawn_id"
+       unset k524d_pid
+    }
+}
+
+# We are about to start up a couple of daemon processes.  We do all
+# the rest of the tests inside a proc, so that we can easily kill the
+# processes when the procedure ends.
+
+proc doit { } {
+    global env
+    global KEY
+    global K524INIT
+    # To pass spawn_id to the wait process
+    global spawn_id
+    global KLIST
+    global KDESTROY
+    global tmppwd
+    global REALMNAME
+
+    # Start up the kerberos and kadmind daemons.
+    if ![start_kerberos_daemons 1] {
+       return
+    }
+
+    # Add a user key and get a V5 ticket
+    if {![add_kerberos_key $env(USER) 0] \
+       || ![kinit $env(USER) $env(USER)$KEY 0]} {
+       return
+    }
+
+    # Start the krb524d daemon.
+    start_k524_daemon
+
+    # The k524init program does not advertise anything on success -
+    #only failure.
+    spawn $K524INIT
+    expect {
+       -timeout 10 
+       -re "k524init: .*\r" {
+           fail "k524init"
+           return
+       }
+       eof {}
+       timeout {}
+    }
+
+
+    if ![check_exit_status "k524init"] {
+       return
+    }
+    pass "k524init"
+
+    # Make sure that klist can see the ticket.
+    spawn $KLIST -4
+    expect {
+       -re "Kerberos 4 ticket cache:\[         \]*(.+:)?$tmppwd/tkt.*Principal:\[      \]*$env(USER)@$REALMNAME.*krbtgt\.$REALMNAME@$REALMNAME\r\n" {
+           verbose "klist started"
+       }
+       timeout {
+           fail "v4klist"
+           return
+       }
+       eof {
+           fail "v4klist"
+           return
+       }
+    }
+
+    expect {
+        "\r" { }
+       eof { }
+    }
+
+    if ![check_exit_status "klist"] {
+       return
+    }
+    pass "krb524d: v4klist"
+
+    # Destroy the ticket.
+    spawn $KDESTROY -4
+    if ![check_exit_status "kdestroy"] {
+       return
+    }
+    pass "krb524d: v4kdestroy"
+
+    pass "krb524d: krb524d"
+}
+
+set status [catch doit msg]
+
+stop_kerberos_daemons
+
+stop_k524_daemon
+
+if { $status != 0 } {
+    send_error "ERROR: error in v4krb524d.exp\n"
+    send_error "$msg\n"
+    exit 1
+}
+
+