extdom: add add_err_msg() with test

Reviewed-By: Jakub Hrozek <jhrozek@redhat.com>
This commit is contained in:
Sumit Bose authored and Tomas Babej committed 2015-03-18 12:57:54 +01:00
1 parent 5bf0592505
commit 02bd676939
3 files changed
+67

No files matched your search

@@ -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_ */
@@ -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);
@@ -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;