summaryrefslogtreecommitdiffstats
path: root/src/tests/dejagnu/krb-standalone/iprop.exp
blob: f4e4be25a0ad8047af323cdd38fc4db427bff4fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# Password-changing Kerberos test.
# This is a DejaGnu test script.

# Set up the Kerberos files and environment.
if {![get_hostname] || ![setup_kerberos_files] || ![setup_kerberos_env]} {
    return
}

# 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 REALMNAME
    global KLIST
    global KDESTROY
    global KEY
    global KADMIN_LOCAL
    global KTUTIL
    global hostname
    global tmppwd
    global spawn_id
    global supported_enctypes
    global KRBIV
    global portbase
    global mode
    global KPROPLOG
    global ulog des3_krbtgt

    # Delete any db, ulog files
    file delete $tmppwd/db $tmppwd/db.ok $tmppwd/db.ulog

    # Update config file
    set ulog 1
    reset_kerberos_files

    # Initialize the Kerberos database.  The argument tells
    # setup_kerberos_db that it is being called from here.
    if ![setup_kerberos_db 0] {
	return
    }
    if ![start_kerberos_daemons 0] {
	return
    }

    # Check that ulog file does exist
    if [file exists $tmppwd/db.ulog] {
	pass "create update log"
    } else {
	fail "create update log"
    }

    # Use kadmin to add a key.
    if ![add_kerberos_key wakawaka 0] {
	return
    }

    # Run kproplog, look at output.
    spawn $KPROPLOG
    expect_after {
	timeout {
	    fail "kproplog output"
	    break
	}
	eof {
	    fail "kproplog output"
	    break
	}
    }
    catch {
	expect -re "Kerberos update log"
	expect -re "Update log dump"
	expect -re "First serial \# : 1"
	if $des3_krbtgt {
	    expect -re "Last serial \# : 3"
	    expect -re "Update Entry"
	    expect -re "Update serial \# : 1"
	    expect -re "Attributes changed : 15"
	    expect -re "Update Entry"
	    expect -re "Update serial \# : 2"
	    expect -re "Attributes changed : 6"
	    expect -re "Update Entry"
	    expect -re "Update serial \# : 3"
	} else {
	    expect -re "Last serial \# : 2"
	    expect -re "Update Entry"
	    expect -re "Update serial \# : 1"
	    expect -re "Attributes changed : 15"
	    expect -re "Update Entry"
	    expect -re "Update serial \# : 2"
	}
	expect -re "Update operation : Add"
	expect -re "Update principal : wakawaka@KRBTEST.COM"
	expect_after {
	    timeout {
		fail "kproplog output"
		break
	    }
	}
	expect -re "Attributes changed : 15"
	expect eof
    } foo
    pass "kproplog output"
    catch expect_after
    if [check_exit_status kproplog] {
	pass "kproplog exit status"
    } else {
	fail "kproplog exit status"
    }
}

set status [catch doit msg]

stop_kerberos_daemons

set ulog 0
reset_kerberos_files
file delete $tmppwd/adb $tmppwd/adb.ok $tmppwd/db.ulog

if { $status != 0 } {
    send_error "ERROR: error in iprop.exp\n"
    send_error "$msg\n"
    exit 1
}