]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add tkey_test.c with mocked isc_mem object
authorOndřej Surý <ondrej@sury.org>
Mon, 4 Jun 2018 07:50:57 +0000 (09:50 +0200)
committerOndřej Surý <ondrej@sury.org>
Thu, 25 Oct 2018 06:16:24 +0000 (08:16 +0200)
lib/dns/tests/Kyuafile
lib/dns/tests/Makefile.in
lib/dns/tests/tkey_test.c [new file with mode: 0644]
util/copyrights

index fcdfeeb1e6544166f6755704e6a2b1716849d56a..377933d980ba1feb5496f6ff676fba16f31095fa 100644 (file)
@@ -26,6 +26,7 @@ atf_test_program{name='resolver_test'}
 atf_test_program{name='rsa_test'}
 atf_test_program{name='sigs_test'}
 atf_test_program{name='time_test'}
+tap_test_program{name='tkey_test'}
 atf_test_program{name='tsig_test'}
 atf_test_program{name='update_test'}
 atf_test_program{name='zonemgr_test'}
index 703b66ebf4906210a23d02ae5eb3446377039feb..83ba5f07eae3c475587a327136ae9636f89f6eda 100644 (file)
@@ -62,6 +62,7 @@ SRCS =                acl_test.c \
                rsa_test.c \
                sigs_test.c \
                time_test.c \
+               tkey_test.c \
                tsig_test.c \
                update_test.c \
                zonemgr_test.c \
@@ -93,6 +94,7 @@ TARGETS =     acl_test@EXEEXT@ \
                rsa_test@EXEEXT@ \
                sigs_test@EXEEXT@ \
                time_test@EXEEXT@ \
+               tkey_test@EXEEXT@ \
                tsig_test@EXEEXT@ \
                update_test@EXEEXT@ \
                zonemgr_test@EXEEXT@ \
@@ -234,6 +236,11 @@ time_test@EXEEXT@: time_test.@O@ dnstest.@O@ ${ISCDEPLIBS} ${DNSDEPLIBS}
                        time_test.@O@ dnstest.@O@ ${DNSLIBS} \
                                ${ISCLIBS} ${LIBS}
 
+tkey_test@EXEEXT@: tkey_test.@O@ ${ISCDEPLIBS} ${DNSDEPLIBS}
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} ${LDFLAGS} -o $@ \
+                       tkey_test.@O@ ${DNSLIBS} \
+                       ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS} ${CMOCKA_MEM}
+
 tsig_test@EXEEXT@: tsig_test.@O@ dnstest.@O@ ${ISCDEPLIBS} ${DNSDEPLIBS}
        ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
                        tsig_test.@O@ dnstest.@O@ ${DNSLIBS} \
diff --git a/lib/dns/tests/tkey_test.c b/lib/dns/tests/tkey_test.c
new file mode 100644 (file)
index 0000000..e2610f2
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * See the COPYRIGHT file distributed with this work for additional
+ * information regarding copyright ownership.
+ */
+
+#include <config.h>
+
+#if HAVE_CMOCKA
+
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stddef.h>
+#include <setjmp.h>
+#include <cmocka.h>
+
+#include <isc/mem.h>
+#include <isc/result.h>
+
+#include <dns/tkey.h>
+
+#if LD_WRAP
+static isc_mem_t mock_mctx = {
+       .impmagic = 0,
+       .magic = ISCAPI_MCTX_MAGIC,
+       .methods = NULL
+};
+
+static void *
+__wrap_isc__mem_get(isc_mem_t *mctx __attribute__ ((unused)),
+                  size_t size)
+{
+       bool has_enough_memory = mock_type(bool);
+       if (!has_enough_memory) {
+               return (NULL);
+       }
+       return (malloc(size));
+}
+
+static void
+__wrap_isc__mem_put(isc_mem_t *ctx0 __attribute__ ((unused)),
+                  void *ptr,
+                  size_t size __attribute__ ((unused)))
+{
+       free(ptr);
+}
+
+static void
+__wrap_isc_mem_attach(isc_mem_t *source0, isc_mem_t **targetp) {
+       *targetp = source0;
+}
+
+static void
+__wrap_isc_mem_detach(isc_mem_t **ctxp) {
+       *ctxp = NULL;
+}
+
+static int
+_setup(void **state) {
+       dns_tkeyctx_t *tctx = NULL;
+       will_return(__wrap_isc__mem_get, true);
+       if (dns_tkeyctx_create(&mock_mctx, &tctx) != ISC_R_SUCCESS) {
+               return (-1);
+       }
+       *state = tctx;
+       return (0);
+}
+
+static int
+_teardown(void **state) {
+       dns_tkeyctx_t *tctx = *state;
+       if (tctx != NULL) {
+               dns_tkeyctx_destroy(&tctx);
+       }
+       return (0);
+}
+
+static void
+dns_tkeyctx_create_test(void **state) {
+       dns_tkeyctx_t *tctx;
+
+       tctx = NULL;
+       will_return(__wrap_isc__mem_get, false);
+       assert_int_equal(dns_tkeyctx_create(&mock_mctx, &tctx), ISC_R_NOMEMORY);
+
+       tctx = NULL;
+       will_return(__wrap_isc__mem_get, true);
+       assert_int_equal(dns_tkeyctx_create(&mock_mctx, &tctx), ISC_R_SUCCESS);
+       *state = tctx;
+}
+
+static void
+dns_tkeyctx_destroy_test(void **state) {
+       dns_tkeyctx_t *tctx = *state;
+
+       assert_non_null(tctx);
+       dns_tkeyctx_destroy(&tctx);
+}
+
+#else /* LD_WRAP */
+
+#define _setup NULL
+#define _teardown NULL
+
+static void
+dns_tkeyctx_create_test(void **state __attribute__ ((unused))) {
+       skip();
+}
+
+static void
+dns_tkeyctx_destroy_test(void **state __attribute__ ((unused))) {
+       skip();
+}
+
+#endif /* LD_WRAP */
+
+int main(void) {
+       const struct CMUnitTest tkey_tests[] = {
+               cmocka_unit_test_teardown(dns_tkeyctx_create_test, _teardown),
+               /* cmocka_unit_test(dns_tkey_processquery_test), */
+               /* cmocka_unit_test(dns_tkey_builddhquery_test), */
+               /* cmocka_unit_test(dns_tkey_buildgssquery_test), */
+               /* cmocka_unit_test(dns_tkey_builddeletequery_test), */
+               /* cmocka_unit_test(dns_tkey_processdhresponse_test), */
+               /* cmocka_unit_test(dns_tkey_processgssresponse_test), */
+               /* cmocka_unit_test(dns_tkey_processdeleteresponse_test), */
+               /* cmocka_unit_test(dns_tkey_gssnegotiate_test), */
+               cmocka_unit_test_setup(dns_tkeyctx_destroy_test, _setup),
+       };
+       return (cmocka_run_group_tests(tkey_tests, NULL, NULL));
+}
+
+#else
+
+#include <stdio.h>
+
+int main(void) {
+       printf("1..0 # Skipped: cmocka not available\n");
+       return (0);
+}
+
+#endif
index e1bf381c9fa30fe7bc77cea0dc8bd06945b1ffde..25f5b52dc677bfd6154e5fe25ddb10f5563a992a 100644 (file)
 ./lib/dns/tests/testkeys/Kexample.+008+37464.key       X       2018
 ./lib/dns/tests/testkeys/Kexample.+008+37464.private   X       2018
 ./lib/dns/tests/time_test.c                    C       2011,2012,2016,2018
+./lib/dns/tests/tkey_test.c                    C       2018
 ./lib/dns/tests/tsig_test.c                    C       2017,2018
 ./lib/dns/tests/update_test.c                  C       2011,2012,2014,2016,2017,2018
 ./lib/dns/tests/zonemgr_test.c                 C       2011,2012,2013,2015,2016,2018