From 02bd676939bdb8cfb28bb89f0f48502fa2642fcb Mon Sep 17 00:00:00 2001 From: Sumit Bose Date: Mon, 2 Feb 2015 00:53:06 +0100 Subject: extdom: add add_err_msg() with test Reviewed-By: Jakub Hrozek --- .../ipa-extdom-extop/ipa_extdom.h | 1 + .../ipa-extdom-extop/ipa_extdom_cmocka_tests.c | 43 ++++++++++++++++++++++ .../ipa-extdom-extop/ipa_extdom_common.c | 23 ++++++++++++ 3 files changed, 67 insertions(+) (limited to 'daemons') 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; -- cgit