summaryrefslogtreecommitdiffstats
path: root/src/tests/cmocka
diff options
context:
space:
mode:
authorLukas Slebodnik <lslebodn@redhat.com>2014-08-20 20:42:27 +0200
committerJakub Hrozek <jhrozek@redhat.com>2014-08-22 10:51:41 +0200
commit1a783fb0be9a48a0abdfe8b52fce551d530487ce (patch)
tree24002f15ed295634c64ac7b9e4a06d36d14d60f7 /src/tests/cmocka
parent0060992d68ba843d4d90b491a1500b6290789a5c (diff)
downloadsssd-1a783fb0be9a48a0abdfe8b52fce551d530487ce.tar.gz
sssd-1a783fb0be9a48a0abdfe8b52fce551d530487ce.tar.xz
sssd-1a783fb0be9a48a0abdfe8b52fce551d530487ce.zip
test_dyndns: sss_iface_addr_list_get can return more values
Resolves: https://fedorahosted.org/sssd/ticket/2405 Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Diffstat (limited to 'src/tests/cmocka')
-rw-r--r--src/tests/cmocka/test_dyndns.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/tests/cmocka/test_dyndns.c b/src/tests/cmocka/test_dyndns.c
index 1349fff9d..345c170f1 100644
--- a/src/tests/cmocka/test_dyndns.c
+++ b/src/tests/cmocka/test_dyndns.c
@@ -204,6 +204,49 @@ void dyndns_test_get_ifaddr(void **state)
assert_true(check_leaks_pop(dyndns_test_ctx) == true);
}
+void dyndns_test_get_multi_ifaddr(void **state)
+{
+ errno_t ret;
+ struct sss_iface_addr *addrlist;
+ struct sss_iface_addr *sss_if_addr;
+ char straddr[128];
+
+ check_leaks_push(dyndns_test_ctx);
+ will_return_getifaddrs("eth0", "192.168.0.2");
+ will_return_getifaddrs("eth0", "192.168.0.1");
+ will_return_getifaddrs(NULL, NULL); /* sentinel */
+ ret = sss_iface_addr_list_get(dyndns_test_ctx, "eth0", &addrlist);
+ assert_int_equal(ret, EOK);
+
+ sss_if_addr = addrlist;
+ assert_non_null(sss_if_addr);
+ assert_non_null(sss_if_addr->addr);
+ assert_non_null(sss_if_addr->next);
+ assert_null(sss_if_addr->prev);
+
+ assert_non_null(inet_ntop(AF_INET,
+ &((struct sockaddr_in *) sss_if_addr->addr)->sin_addr,
+ straddr, INET_ADDRSTRLEN));
+ /* ip addresses are returned in different order */
+ assert_string_equal(straddr, "192.168.0.1");
+
+ sss_if_addr = addrlist->next;
+ assert_non_null(sss_if_addr);
+ assert_non_null(sss_if_addr->addr);
+ assert_null(sss_if_addr->next);
+ assert_non_null(sss_if_addr->prev);
+
+ assert_non_null(inet_ntop(AF_INET,
+ &((struct sockaddr_in *) sss_if_addr->addr)->sin_addr,
+ straddr, INET_ADDRSTRLEN));
+ /* ip addresses are returned in different order */
+ assert_string_equal(straddr, "192.168.0.2");
+
+ talloc_free(addrlist);
+
+ assert_true(check_leaks_pop(dyndns_test_ctx) == true);
+}
+
void dyndns_test_ok(void **state)
{
struct tevent_req *req;
@@ -414,6 +457,9 @@ int main(int argc, const char *argv[])
unit_test_setup_teardown(dyndns_test_get_ifaddr,
dyndns_test_simple_setup,
dyndns_test_teardown),
+ unit_test_setup_teardown(dyndns_test_get_multi_ifaddr,
+ dyndns_test_simple_setup,
+ dyndns_test_teardown),
/* Dynamic DNS update unit tests*/
unit_test_setup_teardown(dyndns_test_ok,