summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Reichl <preichl@redhat.com>2015-07-24 10:41:42 -0400
committerJakub Hrozek <jhrozek@redhat.com>2015-08-14 23:54:55 +0200
commit6fd5306145d98ea3bab7f32aa66475f610f388ce (patch)
treeb042b63eec510b9bc0d267dd207ecff82a26047a
parentb42bf6c0c01db08208fb81d8295a2909d307284a (diff)
downloadsssd-6fd5306145d98ea3bab7f32aa66475f610f388ce.tar.gz
sssd-6fd5306145d98ea3bab7f32aa66475f610f388ce.tar.xz
sssd-6fd5306145d98ea3bab7f32aa66475f610f388ce.zip
TESTS: UT for sss_iface_addr_list_as_str_list()
Resolves: https://fedorahosted.org/sssd/ticket/2495 Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
-rw-r--r--src/tests/cmocka/test_dyndns.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/tests/cmocka/test_dyndns.c b/src/tests/cmocka/test_dyndns.c
index 8118e9438..691378ee6 100644
--- a/src/tests/cmocka/test_dyndns.c
+++ b/src/tests/cmocka/test_dyndns.c
@@ -289,6 +289,45 @@ void dyndns_test_get_ifaddr_enoent(void **state)
assert_true(check_leaks_pop(dyndns_test_ctx) == true);
}
+void dyndns_test_addr_list_as_str_list(void **state)
+{
+ int i;
+ char **output;
+ errno_t ret;
+ struct sss_iface_addr *addrlist;
+ struct {
+ const char* addr;
+ int af;
+ } input[] = {
+ {"2001:cdba::555", AF_INET6},
+ {"192.168.0.1", AF_INET},
+ {"192.168.0.2", AF_INET},
+ {"2001:cdba::444", AF_INET6}
+ };
+ int size = 4;
+
+ check_leaks_push(dyndns_test_ctx);
+
+ for (i = 0; i < size; i++) {
+ will_return_getifaddrs("eth0", input[i].addr, input[i].af);
+ }
+ will_return_getifaddrs(NULL, NULL, 0); /* sentinel */
+
+ ret = sss_iface_addr_list_get(dyndns_test_ctx, "eth0", &addrlist);
+ assert_int_equal(ret, EOK);
+
+ ret = sss_iface_addr_list_as_str_list(dyndns_test_ctx, addrlist, &output);
+ assert_int_equal(ret, EOK);
+ for (i = 0; i < size; i++) {
+ /* addresses are returned in reversed order */
+ assert_int_equal(strcmp(input[i].addr, output[size - 1 - i]), 0);
+ }
+
+ talloc_free(addrlist);
+ talloc_free(output);
+ assert_true(check_leaks_pop(dyndns_test_ctx) == true);
+}
+
void dyndns_test_dualstack(void **state)
{
errno_t ret;
@@ -672,6 +711,9 @@ int main(int argc, const char *argv[])
cmocka_unit_test_setup_teardown(dyndns_test_get_ifaddr_enoent,
dyndns_test_simple_setup,
dyndns_test_teardown),
+ cmocka_unit_test_setup_teardown(dyndns_test_addr_list_as_str_list,
+ dyndns_test_simple_setup,
+ dyndns_test_teardown),
/* Dynamic DNS update unit tests*/
cmocka_unit_test_setup_teardown(dyndns_test_ok,