singe/thirdparty/openssl/krb5/src/tests/t_kadmin.py
2023-11-16 22:15:24 -06:00

66 lines
2.7 KiB
Python

from k5test import *
realm = K5Realm(start_kadmind=True)
# Create a principal. Test -q option and keyboard entry of the admin
# password and principal password. Verify creation with kadmin.local.
realm.run([kadmin, '-q', 'addprinc princ/pw'],
input=password('admin') + '\npw1\npw1\n')
realm.run([kadminl, 'getprinc', 'princ/pw'],
expected_msg='Principal: princ/pw@KRBTEST.COM')
# Run the remaining tests with a cache for efficiency.
realm.prep_kadmin()
realm.run_kadmin(['addpol', 'standardpol'])
realm.run_kadmin(['listpols'], expected_msg='standardpol')
realm.run_kadmin(['modpol', '-minlength', '5', 'standardpol'])
realm.run_kadmin(['getpol', 'standardpol'],
expected_msg='Minimum password length: 5')
realm.run_kadmin(['addprinc', '-randkey', 'princ/random'])
realm.run([kadminl, 'getprinc', 'princ/random'],
expected_msg='Principal: princ/random@KRBTEST.COM')
realm.run_kadmin(['cpw', 'princ/pw'], input='newpw\nnewpw\n')
realm.run_kadmin(['cpw', '-randkey', 'princ/random'])
realm.run_kadmin(['modprinc', '-allow_tix', 'princ/random'])
realm.run_kadmin(['modprinc', '+allow_tix', 'princ/random'])
realm.run_kadmin(['modprinc', '-policy', 'standardpol', 'princ/random'])
realm.run_kadmin(['listprincs'], expected_msg='princ/random@KRBTEST.COM')
realm.run_kadmin(['ktadd', 'princ/pw'])
realm.run_kadmin(['delprinc', 'princ/random'])
realm.run([kadminl, 'getprinc', 'princ/random'], expected_code=1,
expected_msg='Principal does not exist')
realm.run_kadmin(['delprinc', 'princ/pw'])
realm.run([kadminl, 'getprinc', 'princ/pw'], expected_code=1,
expected_msg='Principal does not exist')
realm.run_kadmin(['delpol', 'standardpol'])
realm.run([kadminl, 'getpol', 'standardpol'], expected_code=1,
expected_msg='Policy does not exist')
# Regression test for #2877 (fixed-sized GSSRPC buffers can't
# accomodate large listprinc results).
mark('large listprincs result')
for i in range(200):
realm.run_kadmin(['addprinc', '-randkey', 'foo%d' % i])
realm.run_kadmin(['listprincs'], expected_msg='foo199')
# Test kadmin -k with the default principal, with and without
# fallback. This operation requires canonicalization against the
# keytab in krb5_get_init_creds_keytab() as the
# krb5_sname_to_principal() result won't have a realm. Try with and
# without without fallback processing since the code paths are
# different.
mark('kadmin -k')
realm.run([kadmin, '-k', 'getprinc', realm.host_princ])
no_canon_conf = {'libdefaults': {'dns_canonicalize_hostname': 'false'}}
no_canon = realm.special_env('no_canon', False, krb5_conf=no_canon_conf)
realm.run([kadmin, '-k', 'getprinc', realm.host_princ], env=no_canon)
success('kadmin and kpasswd tests')