summaryrefslogtreecommitdiffstats
path: root/daemons
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2015-02-02 00:53:06 +0100
committerTomas Babej <tbabej@redhat.com>2015-03-18 12:57:54 +0100
commit02bd676939bdb8cfb28bb89f0f48502fa2642fcb (patch)
tree0f85ab4d8950c91287acf600649eb1b53932ad2e /daemons
parent5bf05925053f46d98081140fa74d98ec0cfcd471 (diff)
downloadfreeipa-02bd676939bdb8cfb28bb89f0f48502fa2642fcb.tar.gz
freeipa-02bd676939bdb8cfb28bb89f0f48502fa2642fcb.tar.xz
freeipa-02bd676939bdb8cfb28bb89f0f48502fa2642fcb.zip
extdom: add add_err_msg() with test
Reviewed-By: Jakub Hrozek <jhrozek@redhat.com>
Diffstat (limited to 'daemons')
-rw-r--r--daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom.h1
-rw-r--r--daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_cmocka_tests.c43
-rw-r--r--daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c23
3 files changed, 67 insertions, 0 deletions
diff --git a/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom.h b/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom.h
index 421f6c6ea..0d5d55d2f 100644
--- a/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom.h
+++ b/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom.h
@@ -185,4 +185,5 @@ int getgrnam_r_wrapper(size_t buf_max, const char *name,
struct group *grp, char **_buf, size_t *_buf_len);
int getgrgid_r_wrapper(size_t buf_max, gid_t gid,
struct group *grp, char **_buf, size_t *_buf_len);
+void set_err_msg(struct extdom_req *req, const char *format, ...);
#endif /* _IPA_EXTDOM_H_ */
diff --git a/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_cmocka_tests.c b/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_cmocka_tests.c
index d5bacd7e8..586b58b0f 100644
--- a/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_cmocka_tests.c
+++ b/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_cmocka_tests.c
@@ -213,6 +213,47 @@ void test_getgrgid_r_wrapper(void **state)
free(buf);
}
+void extdom_req_setup(void **state)
+{
+ struct extdom_req *req;
+
+ req = calloc(sizeof(struct extdom_req), 1);
+ assert_non_null(req);
+
+ *state = req;
+}
+
+void extdom_req_teardown(void **state)
+{
+ struct extdom_req *req;
+
+ req = (struct extdom_req *) *state;
+
+ free_req_data(req);
+}
+
+void test_set_err_msg(void **state)
+{
+ struct extdom_req *req;
+
+ req = (struct extdom_req *) *state;
+ assert_null(req->err_msg);
+
+ set_err_msg(NULL, NULL);
+ assert_null(req->err_msg);
+
+ set_err_msg(req, NULL);
+ assert_null(req->err_msg);
+
+ set_err_msg(req, "Test [%s][%d].", "ABCD", 1234);
+ assert_non_null(req->err_msg);
+ assert_string_equal(req->err_msg, "Test [ABCD][1234].");
+
+ set_err_msg(req, "2nd Test [%s][%d].", "ABCD", 1234);
+ assert_non_null(req->err_msg);
+ assert_string_equal(req->err_msg, "Test [ABCD][1234].");
+}
+
int main(int argc, const char *argv[])
{
const UnitTest tests[] = {
@@ -220,6 +261,8 @@ int main(int argc, const char *argv[])
unit_test(test_getpwuid_r_wrapper),
unit_test(test_getgrnam_r_wrapper),
unit_test(test_getgrgid_r_wrapper),
+ unit_test_setup_teardown(test_set_err_msg,
+ extdom_req_setup, extdom_req_teardown),
};
return run_tests(tests);
diff --git a/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c b/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c
index c2fd42f13..e05c005da 100644
--- a/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c
+++ b/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c
@@ -229,6 +229,29 @@ done:
return ret;
}
+void set_err_msg(struct extdom_req *req, const char *format, ...)
+{
+ int ret;
+ va_list ap;
+
+ if (req == NULL) {
+ return;
+ }
+
+ if (format == NULL || req->err_msg != NULL) {
+ /* Do not override an existing error message. */
+ return;
+ }
+ va_start(ap, format);
+
+ ret = vasprintf(&req->err_msg, format, ap);
+ if (ret == -1) {
+ req->err_msg = strdup("vasprintf failed.\n");
+ }
+
+ va_end(ap);
+}
+
int parse_request_data(struct berval *req_val, struct extdom_req **_req)
{
BerElement *ber = NULL;