]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Add tests for gic_pwd password change
authorGreg Hudson <ghudson@mit.edu>
Sat, 1 Mar 2014 01:41:20 +0000 (20:41 -0500)
committerGreg Hudson <ghudson@mit.edu>
Mon, 3 Mar 2014 16:58:58 +0000 (11:58 -0500)
ticket: 7868

src/tests/Makefile.in
src/tests/t_changepw.py [new file with mode: 0644]

index 2bd7a5ce1d36da2fce79453a2673310feeca60f7..958b8a9543f0caaeb142928894432c8084e4158d 100644 (file)
@@ -97,6 +97,7 @@ check-pytests:: t_init_creds t_localauth
        $(RUNPYTEST) $(srcdir)/t_iprop.py $(PYTESTFLAGS)
        $(RUNPYTEST) $(srcdir)/t_kprop.py $(PYTESTFLAGS)
        $(RUNPYTEST) $(srcdir)/t_policy.py $(PYTESTFLAGS)
+       $(RUNPYTEST) $(srcdir)/t_changepw.py $(PYTESTFLAGS)
        $(RUNPYTEST) $(srcdir)/t_pkinit.py $(PYTESTFLAGS)
        $(RUNPYTEST) $(srcdir)/t_otp.py $(PYTESTFLAGS)
        $(RUNPYTEST) $(srcdir)/t_localauth.py $(PYTESTFLAGS)
diff --git a/src/tests/t_changepw.py b/src/tests/t_changepw.py
new file mode 100644 (file)
index 0000000..0b98326
--- /dev/null
@@ -0,0 +1,37 @@
+#!/usr/bin/python
+from k5test import *
+
+# This file is intended to cover any password-changing mechanism.  For
+# now it only contains a regression test for #7868.
+
+realm = K5Realm(create_host=False, get_creds=False, start_kadmind=True)
+
+# Mark a principal as expired and change its password through kinit.
+realm.run_kadminl('modprinc -pwexpire "1 day ago" user')
+pwinput = password('user') + '\nabcd\nabcd\n'
+realm.run([kinit, realm.user_princ], input=pwinput)
+
+# Do the same thing with FAST, with tracing turned on.
+realm.run_kadminl('modprinc -pwexpire "1 day ago" user')
+pwinput = 'abcd\nefgh\nefgh\n'
+tracefile = os.path.join(realm.testdir, 'trace')
+realm.run(['env', 'KRB5_TRACE=' + tracefile, kinit, '-T', realm.ccache,
+           realm.user_princ], input=pwinput)
+
+# Read the trace and check that FAST was used when getting the
+# kadmin/changepw ticket.
+f = open(tracefile, 'r')
+trace = f.read()
+f.close()
+getting_changepw = fast_used_for_changepw = False
+for line in trace.splitlines():
+    if 'Getting initial credentials for user@' in line:
+        getting_changepw_ticket = False
+    if 'Setting initial creds service to kadmin/changepw' in line:
+        getting_changepw_ticket = True
+    if getting_changepw_ticket and 'Using FAST' in line:
+        fast_used_for_changepw = True
+if not fast_used_for_changepw:
+    fail('FAST was not used to get kadmin/changepw ticket')
+
+success('Password change tests')