Signed-off-by: Daniel Henrique Barboza <danielhb413(a)gmail.com>
---
tests/Makefile.am | 7 ++-
tests/virdriverconnvalidatetest.c | 90 +++++++++++++++++++++++++++++++
2 files changed, 96 insertions(+), 1 deletion(-)
create mode 100644 tests/virdriverconnvalidatetest.c
diff --git a/tests/Makefile.am b/tests/Makefile.am
index d88ad7f686..c7f563d24d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -433,7 +433,8 @@ test_scripts += $(libvirtd_test_scripts)
test_programs += \
eventtest \
- virdrivermoduletest
+ virdrivermoduletest \
+ virdriverconnvalidatetest
else ! WITH_LIBVIRTD
EXTRA_DIST += $(libvirtd_test_scripts)
endif ! WITH_LIBVIRTD
@@ -1485,6 +1486,10 @@ if WITH_LIBVIRTD
virdrivermoduletest_SOURCES = \
virdrivermoduletest.c testutils.h testutils.c
virdrivermoduletest_LDADD = $(LDADDS)
+
+virdriverconnvalidatetest_SOURCES = \
+ virdriverconnvalidatetest.c testutils.h testutils.c
+virdriverconnvalidatetest_LDADD = $(LDADDS)
endif WITH_LIBVIRTD
if WITH_LIBVIRTD
diff --git a/tests/virdriverconnvalidatetest.c b/tests/virdriverconnvalidatetest.c
new file mode 100644
index 0000000000..6f4cefb61e
--- /dev/null
+++ b/tests/virdriverconnvalidatetest.c
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2019 IBM Corporation
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <
http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+
+#include "testutils.h"
+#include "virerror.h"
+#include "viralloc.h"
+#include "virlog.h"
+#include "driver.h"
+
+#define VIR_FROM_THIS VIR_FROM_NONE
+
+VIR_LOG_INIT("tests.driverconnvalidatetest");
+
+struct testDriverConnValidateData {
+ const char *uriPath;
+ const char *entityName;
+ bool privileged;
+ bool expectFailure;
+};
+
+
+static int testDriverConnValidate(const void *args)
+{
+ const struct testDriverConnValidateData *data = args;
+
+ bool ret = virConnectValidateURIPath(data->uriPath,
+ data->entityName,
+ data->privileged);
+ if (data->expectFailure)
+ ret = !ret;
+
+ return ret ? 0 : -1;
+}
+
+
+static int
+mymain(void)
+{
+ int ret = 0;
+
+#define DO_TEST_INTERNAL(name, entity, uri, _privileged, expectFail) \
+ do { \
+ static struct testDriverConnValidateData data = { \
+ .entityName = entity, \
+ .uriPath = uri, \
+ .privileged = _privileged, \
+ .expectFailure = expectFail, \
+ }; \
+ if (virTestRun("Test conn URI path validate ok " name, \
+ testDriverConnValidate, &data) < 0) \
+ ret = -1; \
+ } while (0)
+
+#define DO_TEST_SUCCESS(name, entity, uri, _privileged) \
+ DO_TEST_INTERNAL(name, entity, uri, _privileged, false)
+
+#define DO_TEST_FAIL(name, entity, uri, _privileged) \
+ DO_TEST_INTERNAL(name, entity, uri, _privileged, true)
+
+ DO_TEST_SUCCESS("non-privileged /session", "any",
"/session", false);
+ DO_TEST_FAIL("non-privileged non-session fail", "any",
"/system", false);
+
+ DO_TEST_SUCCESS("privileged /system", "any", "/system",
true);
+ DO_TEST_FAIL("privileged non-system fail", "any",
"any", true);
+
+ DO_TEST_SUCCESS("privileged qemu /session", "qemu",
"/session", true);
+ DO_TEST_SUCCESS("privileged vbox /session", "vbox",
"/session", true);
+ DO_TEST_FAIL("privileged other /session fail", "any",
"/session", true);
+
+ return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
+}
+
+VIR_TEST_MAIN(mymain)
--
2.21.0