svn rev #24376: trunk/src/ plugins/ plugins/kadm5_hook/ plugins/kadm5_hook/test/ ...

hartmans@MIT.EDU hartmans at MIT.EDU
Wed Sep 29 17:29:21 EDT 2010


http://src.mit.edu/fisheye/changelog/krb5/?cs=24376
Commit By: hartmans
Log Message:
Automated tests for kadm5_hook plugin

Include a k5test Python test and test plugin for the kadm5_hook interface.


Changed Files:
U   trunk/src/configure.in
A   trunk/src/plugins/kadm5_hook/
A   trunk/src/plugins/kadm5_hook/test/
A   trunk/src/plugins/kadm5_hook/test/Makefile.in
A   trunk/src/plugins/kadm5_hook/test/deps
A   trunk/src/plugins/kadm5_hook/test/kadm5_hook_test.exports
A   trunk/src/plugins/kadm5_hook/test/main.c
U   trunk/src/tests/Makefile.in
A   trunk/src/tests/t_kadm5_hook.py
Modified: trunk/src/configure.in
===================================================================
--- trunk/src/configure.in	2010-09-29 21:29:14 UTC (rev 24375)
+++ trunk/src/configure.in	2010-09-29 21:29:20 UTC (rev 24376)
@@ -1105,6 +1105,7 @@
 	kdc slave config-files gen-manpages include
 
 	plugins/locate/python
+	plugins/kadm5_hook/test
 	plugins/kdb/db2
 	plugins/kdb/db2/libdb2
 	plugins/kdb/db2/libdb2/hash

Copied: trunk/src/plugins/kadm5_hook/test/Makefile.in (from rev 24375, trunk/src/plugins/preauth/wpse/Makefile.in)
===================================================================
--- trunk/src/plugins/kadm5_hook/test/Makefile.in	                        (rev 0)
+++ trunk/src/plugins/kadm5_hook/test/Makefile.in	2010-09-29 21:29:20 UTC (rev 24376)
@@ -0,0 +1,37 @@
+mydir=plugins/kadm5_hook/test
+BUILDTOP=$(REL)..$(S)..$(S)..
+KRB5_RUN_ENV = @KRB5_RUN_ENV@
+KRB5_CONFIG_SETUP = KRB5_CONFIG=$(top_srcdir)/config-files/krb5.conf ; export KRB5_CONFIG ;
+PROG_LIBPATH=-L$(TOPLIBD)
+PROG_RPATH=$(KRB5_LIBDIR)
+DEFS=@DEFS@
+
+LOCALINCLUDES = -I../../../include/krb5 -I.
+
+LIBBASE=kadm5_hook_test
+LIBMAJOR=0
+LIBMINOR=0
+SO_EXT=.so
+RELDIR=../plugins/kadm5_hook/test
+# Depends on libk5crypto and libkrb5
+SHLIB_EXPDEPS = \
+	$(TOPLIBD)/libk5crypto$(SHLIBEXT) \
+	$(TOPLIBD)/libkrb5$(SHLIBEXT)
+SHLIB_EXPLIBS= -lkrb5 -lcom_err -lk5crypto $(SUPPORT_LIB) $(LIBS)
+
+SHLIB_DIRS=-L$(TOPLIBD)
+SHLIB_RDIRS=$(KRB5_LIBDIR)
+STOBJLISTS=OBJS.ST
+STLIBOBJS=main.o
+
+SRCS= $(srcdir)/main.c
+
+all-unix:: all-liblinks
+install-unix::
+clean-unix:: clean-libs clean-libobjs
+
+clean::
+	$(RM) lib$(LIBBASE)$(SO_EXT)
+
+ at libnover_frag@
+ at libobj_frag@

Copied: trunk/src/plugins/kadm5_hook/test/deps (from rev 24375, trunk/src/ccapi/test/deps)
===================================================================
Added: trunk/src/plugins/kadm5_hook/test/kadm5_hook_test.exports
===================================================================
--- trunk/src/plugins/kadm5_hook/test/kadm5_hook_test.exports	                        (rev 0)
+++ trunk/src/plugins/kadm5_hook/test/kadm5_hook_test.exports	2010-09-29 21:29:20 UTC (rev 24376)
@@ -0,0 +1 @@
+kadm5_hook_test_initvt

Added: trunk/src/plugins/kadm5_hook/test/main.c
===================================================================
--- trunk/src/plugins/kadm5_hook/test/main.c	                        (rev 0)
+++ trunk/src/plugins/kadm5_hook/test/main.c	2010-09-29 21:29:20 UTC (rev 24376)
@@ -0,0 +1,105 @@
+/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/*
+ * plugins/kadm5_hook/test/main.c
+ *
+ * Copyright (C) 2010 by the Massachusetts Institute of Technology.
+ * All rights reserved.
+ *
+ * Export of this software from the United States of America may
+ *   require a specific license from the United States Government.
+ *   It is the responsibility of any person or organization contemplating
+ *   export to obtain such a license before exporting.
+ *
+ * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
+ * distribute this software and its documentation for any purpose and
+ * without fee is hereby granted, provided that the above copyright
+ * notice appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation, and that
+ * the name of M.I.T. not be used in advertising or publicity pertaining
+ * to distribution of the software without specific, written prior
+ * permission.  Furthermore if you modify this software you must label
+ * your software as modified software and not distribute it in such a
+ * fashion that it might be confused with the original M.I.T. software.
+ * M.I.T. makes no representations about the suitability of
+ * this software for any purpose.  It is provided "as is" without express
+ * or implied warranty.
+ *
+ */
+
+
+/**
+ * @file plugins/kadm5_hook/test/main.c
+ *
+ * This is a test kadm5_hook plugin. If enabled, it will print when kadm5_hook
+ * calls are made.
+ */
+
+#include <krb5/krb5.h>
+#include <krb5/kadm5_hook_plugin.h>
+#include <stdio.h>
+#include <assert.h>
+
+static void
+log_call(krb5_context context,
+         const char * function,
+         int stage,
+         krb5_principal princ)
+{
+    char *unparsed = NULL;
+    krb5_error_code ret;
+    ret = krb5_unparse_name(context, princ, &unparsed);
+    assert(ret == 0);
+    printf("%s: stage %s principal %s\n",
+           function,
+           (stage == KADM5_HOOK_STAGE_PRECOMMIT)? "precommit"
+           :"postcommit",
+           unparsed);
+    if (unparsed)
+        krb5_free_unparsed_name(context, unparsed);
+}
+
+static     kadm5_ret_t
+chpass(krb5_context context,
+       kadm5_hook_modinfo *modinfo,
+       int stage,
+       krb5_principal princ, krb5_boolean keepold,
+       int n_ks_tuple,
+       krb5_key_salt_tuple *ks_tuple,
+       const char *newpass)
+{
+    log_call(context, "chpass", stage, princ);
+    return 0;
+}
+
+
+static     kadm5_ret_t
+create(krb5_context context,
+       kadm5_hook_modinfo *modinfo,
+       int stage,
+       kadm5_principal_ent_t princ, long mask,
+       int n_ks_tuple,
+       krb5_key_salt_tuple *ks_tuple,
+       const char *newpass)
+{
+    log_call(context, "create", stage, princ->principal);
+    return 0;
+}
+
+
+krb5_error_code
+kadm5_hook_test_initvt(krb5_context context, int maj_ver, int min_ver,
+                       krb5_plugin_vtable vtable);
+
+krb5_error_code
+kadm5_hook_test_initvt(krb5_context context, int maj_ver, int min_ver,
+                       krb5_plugin_vtable vtable)
+{
+    kadm5_hook_vftable_1 *vt = (kadm5_hook_vftable_1 *) vtable;
+    if (maj_ver != 1)
+        return KRB5_PLUGIN_VER_NOTSUPP;
+
+    vt->name = "test";
+    vt->chpass = chpass;
+    vt->create = create;
+    return 0;
+}

Modified: trunk/src/tests/Makefile.in
===================================================================
--- trunk/src/tests/Makefile.in	2010-09-29 21:29:14 UTC (rev 24375)
+++ trunk/src/tests/Makefile.in	2010-09-29 21:29:20 UTC (rev 24376)
@@ -64,7 +64,9 @@
 	$(RUNPYTEST) $(srcdir)/t_general.py $(PYTESTFLAGS)
 	$(RUNPYTEST) $(srcdir)/t_anonpkinit.py $(PYTESTFLAGS)
 	$(RUNPYTEST) $(srcdir)/t_lockout.py $(PYTESTFLAGS)
+		$(RUNPYTEST) $(srcdir)/t_kadm5_hook.py $(PYTESTFLAGS)
 
+
 clean::
 	$(RM) kdc.conf
 

Added: trunk/src/tests/t_kadm5_hook.py
===================================================================
--- trunk/src/tests/t_kadm5_hook.py	                        (rev 0)
+++ trunk/src/tests/t_kadm5_hook.py	2010-09-29 21:29:20 UTC (rev 24376)
@@ -0,0 +1,23 @@
+#!/usr/bin/python
+from k5test import *
+plugin = os.path.join(buildtop, "plugins", "kadm5_hook", "test", "kadm5_hook_test.so")
+
+hook_krb5_conf = {
+    'all' : {
+        "plugins" : {
+            "kadm5_hook": {
+                "module": "test:"+plugin
+                }
+            }
+        }
+    }
+
+realm = K5Realm(krb5_conf=hook_krb5_conf, create_user=False,
+                create_host=False)
+output = realm.run_kadminl ('addprinc -randkey test')
+if "create: stage precommit" not in output:
+    fail('kadm5_hook test output not found')
+
+
+
+success('kadm5_hook')




More information about the cvs-krb5 mailing list