diff options
author | Pavel Reichl <preichl@redhat.com> | 2015-07-24 10:41:42 -0400 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2015-08-14 23:54:55 +0200 |
commit | 6fd5306145d98ea3bab7f32aa66475f610f388ce (patch) | |
tree | b042b63eec510b9bc0d267dd207ecff82a26047a /src | |
parent | b42bf6c0c01db08208fb81d8295a2909d307284a (diff) | |
download | sssd-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>
Diffstat (limited to 'src')
-rw-r--r-- | src/tests/cmocka/test_dyndns.c | 42 |
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, |