diff options
author | Nicolas Williams <nico@cryptonector.com> | 2012-09-11 22:27:12 -0500 |
---|---|---|
committer | Greg Hudson <ghudson@mit.edu> | 2012-09-12 14:49:56 -0400 |
commit | b2e7deb7cb2d9c37f00599778f4a102feaf6149d (patch) | |
tree | ed2a957a33005d61519bdec539b979310483347a /src/tests | |
parent | 29ee39baa919361ae08e26caab896890d5cb3eb4 (diff) | |
download | krb5-b2e7deb7cb2d9c37f00599778f4a102feaf6149d.tar.gz krb5-b2e7deb7cb2d9c37f00599778f4a102feaf6149d.tar.xz krb5-b2e7deb7cb2d9c37f00599778f4a102feaf6149d.zip |
Test the inconsistent locking fix and svc unavail
Test the fix for https://bugzilla.redhat.com/show_bug.cgi?id=586032 .
Also test that krb5kdc can return svc unavailable
Diffstat (limited to 'src/tests')
-rw-r--r-- | src/tests/Makefile.in | 1 | ||||
-rw-r--r-- | src/tests/t_kdb_locking.py | 39 |
2 files changed, 40 insertions, 0 deletions
diff --git a/src/tests/Makefile.in b/src/tests/Makefile.in index b78f92aa5d..26576fd9cd 100644 --- a/src/tests/Makefile.in +++ b/src/tests/Makefile.in @@ -68,6 +68,7 @@ check-pytests:: hist $(RUNPYTEST) $(srcdir)/t_anonpkinit.py $(PYTESTFLAGS) $(RUNPYTEST) $(srcdir)/t_lockout.py $(PYTESTFLAGS) $(RUNPYTEST) $(srcdir)/t_kadm5_hook.py $(PYTESTFLAGS) + $(RUNPYTEST) $(srcdir)/t_kdb_locking.py $(PYTESTFLAGS) $(RUNPYTEST) $(srcdir)/t_keyrollover.py $(PYTESTFLAGS) $(RUNPYTEST) $(srcdir)/t_allowed_keysalts.py $(PYTESTFLAGS) $(RUNPYTEST) $(srcdir)/t_renew.py $(PYTESTFLAGS) diff --git a/src/tests/t_kdb_locking.py b/src/tests/t_kdb_locking.py new file mode 100644 index 0000000000..89da97b422 --- /dev/null +++ b/src/tests/t_kdb_locking.py @@ -0,0 +1,39 @@ +#!/usr/bin/python + +# This is a regression test for +# https://bugzilla.redhat.com/show_bug.cgi?id=586032 . +# +# We start a KDC, remove the kadm5 lock file, use the KDC, re-create the +# kadm5 lock file, and use kadmin.local. The kinit should fail, and the +# kadmin.local should succeed. + + +import os + +from k5test import * + +kdc_conf = { + 'all' : { 'libdefaults' : { 'default_realm' : 'KRBTEST.COM'}} +} + +p = 'foo' +realm = K5Realm(kdc_conf=kdc_conf, create_user=False) +realm.addprinc(p, p) + +kadm5_lock = os.path.join(realm.testdir, 'master-db.kadm5.lock') +if not os.path.exists(kadm5_lock): + fail('kadm5 lock file not created: ' + kadm5_lock) +os.unlink(kadm5_lock) + +output = realm.kinit(p, p, [], expected_code=1) +if 'A service is not available' not in output: + fail('krb5kdc should have returned service not available error') + +f = open(kadm5_lock, 'w') +f.close() + +output = realm.run_kadminl('modprinc -allow_tix ' + p) +if 'Cannot lock database' in output: + fail('krb5kdc still holds a lock on the principal db') + +success('KDB locking tests') |