#!/bin/sh # # Blackbox tests for an exported keytab with kinit # # Copyright (C) 2006-2007 Jelmer Vernooij # Copyright (C) 2006-2008 Andrew Bartlett # Copyright (C) Andreas Schneider if [ $# -lt 7 ]; then cat <&1) status=$? if [ ${status} -ne 0 ]; then echo "${output}" | subunit_fail_test "${testname}" return $status fi NKEYS=$(echo "${output}" | grep -i "${principal}" | \ grep -c -e "${KEYTAB_GREP}") if [ "${NKEYS}" -ne "${expected_nkeys}" ]; then echo "Unexpected number of keys passed ${NKEYS} != ${expected_nkeys}" | \ subunit_fail_test "${testname}" return 1 fi subunit_pass_test "${testname}" return 0 } testit "create local user ${TEST_USER}" \ "${VALGRIND}" "${PYTHON}" "${samba_newuser}" "${TEST_USER}" "${TEST_PASSWORD}" \ "${CONFIGURATION}" "$@" || \ failed=$((failed + 1)) testit "dump keytab from domain" \ "${VALGRIND}" "${PYTHON}" "${samba_tool}" domain exportkeytab \ "${PREFIX}/tmpkeytab-all" \ "${CONFIGURATION}" "$@" || \ failed=$((failed + 1)) test_keytab "read keytab from domain" \ "${PREFIX}/tmpkeytab-all" "${SERVER}\\\$" "${EXPECTED_NKEYS}" || \ failed=$((failed + 1)) testit "dump keytab from domain (2nd time)" \ "${VALGRIND}" "${PYTHON}" "${samba_tool}" domain exportkeytab \ "${PREFIX}/tmpkeytab-all" "${CONFIGURATION}" "$@" || \ failed=$((failed + 1)) test_keytab "read keytab from domain (2nd time)" \ "${PREFIX}/tmpkeytab-all" "${SERVER}\\\$" "${EXPECTED_NKEYS}" || \ failed=$((failed + 1)) testit "dump keytab from domain for cifs service principal" \ "${VALGRIND}" "${PYTHON}" "${samba_tool}" domain exportkeytab \ "${PREFIX}/tmpkeytab-server" --principal="cifs/$SERVER_FQDN" \ "${CONFIGURATION}" "$@" || \ failed=$((failed + 1)) test_keytab "read keytab from domain for cifs service principal" \ "${PREFIX}/tmpkeytab-server" "cifs/${SERVER_FQDN}" \ "${EXPECTED_NKEYS}" || \ failed=$((failed + 1)) testit "dump keytab from domain for cifs service principal (2nd time)" \ "${VALGRIND}" "${PYTHON}" "${samba_tool}" domain exportkeytab \ "$PREFIX/tmpkeytab-server" --principal="cifs/$SERVER_FQDN" \ "${CONFIGURATION}" "$@" || \ failed=$((failed + 1)) test_keytab "read keytab from domain for cifs service principal (2nd time)" \ "${PREFIX}/tmpkeytab-server" "cifs/${SERVER_FQDN}" \ "${EXPECTED_NKEYS}" || \ failed=$((failed + 1)) testit "dump keytab from domain for user principal" \ "${VALGRIND}" "${PYTHON}" "${samba_tool}" domain exportkeytab \ "${PREFIX}/tmpkeytab-user-princ" --principal="${TEST_USER}" \ "${CONFIGURATION}" "$@" || \ failed=$((failed + 1)) test_keytab "read keytab from domain for user principal" \ "${PREFIX}/tmpkeytab-user-princ" "${TEST_USER}@${REALM}" \ "${EXPECTED_NKEYS}" || \ failed=$((failed + 1)) testit "dump keytab from domain for user principal (2nd time)" \ "${VALGRIND}" "${PYTHON}" "${samba_tool}" domain exportkeytab \ "${PREFIX}/tmpkeytab-user-princ-2" --principal="${TEST_USER}@${REALM}" \ "${CONFIGURATION}" "$@" || \ failed=$((failed + 1)) test_keytab "read keytab from domain for user principal (2nd time)" \ "${PREFIX}/tmpkeytab-user-princ-2" "${TEST_USER}@${REALM}" \ "${EXPECTED_NKEYS}" || \ failed=$((failed + 1)) testit "dump keytab from domain for user principal with SPN as UPN" \ "${VALGRIND}" "${PYTHON}" "${samba_tool}" domain exportkeytab \ "${PREFIX}/tmpkeytab-spn-upn" \ --principal="http/testupnspn.${DNSDOMAIN}" "${CONFIGURATION}" "$@" || \ failed=$((failed + 1)) test_keytab "read keytab from domain for user principal with SPN as UPN" \ "${PREFIX}/tmpkeytab-spn-upn" "http/testupnspn.${DNSDOMAIN}@${REALM}" \ "${EXPECTED_NKEYS}" KRB5CCNAME_PATH="${PREFIX}/tmpuserccache" KRB5CCNAME="FILE:${PREFIX}/tmpuserccache" export KRB5CCNAME testit "kinit with keytab as user" \ "${VALGRIND}" "${samba_kinit}" \ "${OPTION_USE_KEYTAB}" \ "${OPTION_KEYTAB_FILENAME}" "${PREFIX}/tmpkeytab-all" \ "${TEST_USER}@${REALM}" || \ failed=$((failed + 1)) test_smbclient "Test login with user kerberos ccache" \ "ls" "${SMBCLIENT_UNC}" --use-krb5-ccache="${KRB5CCNAME}" || \ failed=$((failed + 1)) testit "kinit with keytab as user (one princ)" \ "${VALGRIND}" "$samba_kinit" \ "${OPTION_USE_KEYTAB}" \ "${OPTION_KEYTAB_FILENAME}" "${PREFIX}/tmpkeytab-user-princ" \ "${TEST_USER}@$REALM" || \ failed=$((failed + 1)) test_smbclient "Test login with user kerberos ccache (one princ)" \ "ls" "${SMBCLIENT_UNC}" --use-krb5-ccache="${KRB5CCNAME}" || \ failed=$((failed + 1)) rm -f "${KRB5CCNAME_PATH}" KRB5CCNAME_PATH="${PREFIX}/tmpadminccache" KRB5CCNAME="FILE:${PREFIX}/tmpadminccache" export KRB5CCNAME testit "kinit with keytab as ${USERNAME}" \ "${VALGRIND}" "${samba_kinit}" \ "${OPTION_USE_KEYTAB}" \ "${OPTION_KEYTAB_FILENAME}" "${PREFIX}/tmpkeytab-all" \ "${USERNAME}@${REALM}" || \ failed=$((failed + 1)) rm -f "${KRB5CCNAME_PATH}" KRB5CCNAME_PATH="${PREFIX}/tmpserverccache" KRB5CCNAME="FILE:${PREFIX}/tmpserverccache" export KRB5CCNAME testit "kinit with SPN from keytab" \ "${VALGRIND}" "${samba_kinit}" \ "${OPTION_USE_KEYTAB}" \ "${OPTION_KEYTAB_FILENAME}" "${PREFIX}/tmpkeytab-spn-upn" \ "http/testupnspn.${DNSDOMAIN}" || \ failed=$((failed + 1)) # cleanup testit "delete user ${TEST_USER}" \ "${VALGRIND}" "${PYTHON}" "${samba_tool}" user delete "${TEST_USER}" \ --use-krb5-ccache="${KRB5CCNAME}" "${CONFIGURATION}" "$@" || \ failed=$((failed + 1)) rm -f "${KRB5CCNAME_PATH}" rm -f "${PREFIX}/tmpadminccache" \ "${PREFIX}/tmpuserccache" \ "${PREFIX}/tmpkeytab" \ "${PREFIX}/tmpkeytab-user-princ" \ "${PREFIX}/tmpkeytab-user-princ-2" \ "${PREFIX}/tmpkeytab-server" \ "${PREFIX}/tmpkeytab-spn-upn" \ "${PREFIX}/tmpkeytab-all" exit $failed