X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=test%2Finvite-join.c;h=e3f85ed69a09569780b01a977fba402d7cd9d9d8;hb=0d79f476e0311fb36f41c9c6d86744f9d5386fba;hp=831cac4143f8cd3fe31b193a6e3a6783a448ee1e;hpb=3febbb4453f5c6b0286e7e3c68a5dbcec975b6fd;p=meshlink diff --git a/test/invite-join.c b/test/invite-join.c index 831cac41..e3f85ed6 100644 --- a/test/invite-join.c +++ b/test/invite-join.c @@ -51,6 +51,7 @@ int main() { meshlink_set_node_status_cb(mesh1, status_cb); assert(meshlink_set_canonical_address(mesh1, meshlink_get_self(mesh1), "localhost", NULL)); + char *baz_url = meshlink_invite(mesh1, NULL, "baz"); assert(baz_url); @@ -140,6 +141,39 @@ int main() { assert(meshlink_join(mesh3, quux_url)); free(quux_url); + // Check that adding duplicate addresses get removed correctly + + assert(meshlink_add_invitation_address(mesh1, "localhost", portstr + 1)); + corge_url = meshlink_invite(mesh1, NULL, "corge"); + assert(corge_url); + char *localhost = strstr(corge_url, "localhost"); + assert(localhost); + assert(!strstr(localhost + 1, "localhost")); + free(corge_url); + + // Check that resetting and adding multiple, different invitation address works + + meshlink_clear_invitation_addresses(mesh1); + assert(meshlink_add_invitation_address(mesh1, "1.invalid.", "12345")); + assert(meshlink_add_invitation_address(mesh1, "2.invalid.", NULL)); + assert(meshlink_add_invitation_address(mesh1, "3.invalid.", NULL)); + assert(meshlink_add_invitation_address(mesh1, "4.invalid.", NULL)); + assert(meshlink_add_invitation_address(mesh1, "5.invalid.", NULL)); + char *grault_url = meshlink_invite(mesh1, NULL, "grault"); + assert(grault_url); + localhost = strstr(grault_url, "localhost"); + assert(localhost); + char *invalid1 = strstr(grault_url, "1.invalid.:12345"); + assert(invalid1); + char *invalid5 = strstr(grault_url, "5.invalid."); + assert(invalid5); + + // Check that explicitly added invitation addresses come before others, in the order they were specified. + + assert(invalid1 < invalid5); + assert(invalid5 < localhost); + free(grault_url); + // Clean up. meshlink_close(mesh3);