/* * Accepts allow and deny files as parameters */ int allow_routing_2(struct sip_msg* msg, char* allow_file, char* deny_file) { /* Index converted by fixup_files_2 */ return check_routing(msg, (int)(long)allow_file); }
int allow_routing_1(struct sip_msg* msg, char* basename, char* s) { return check_routing(msg, (int)(long)basename); }
char *test_routing_match() { RouteMap *routes = RouteMap_create(NULL); mu_assert(routes != NULL, "Failed to make the route map."); char *route_data0 = "route0"; char *route_data1 = "route1"; char *route_data2 = "route2"; char *route_data3 = "route3"; char *route_data4 = "route4"; bstring route0 = bfromcstr("/"); bstring route1 = bfromcstr("/users/([0-9]+)"); bstring route2 = bfromcstr("/users"); bstring route3 = bfromcstr("/users/people/([0-9]+)$"); bstring route4 = bfromcstr("/cars-fast/([a-z]-)$"); Route *route = NULL; RouteMap_insert(routes, route0, route_data0); RouteMap_insert(routes, route1, route_data1); RouteMap_insert(routes, route2, route_data2); RouteMap_insert(routes, route3, route_data3); RouteMap_insert(routes, route4, route_data4); bstring path1 = bfromcstr("/users/1234/testing"); bstring path2 = bfromcstr("/users"); bstring path3 = bfromcstr("/users/people/1234"); bstring path4 = bfromcstr("/cars-fast/cadillac"); bstring path5 = bfromcstr("/users/1234"); bstring path6 = bfromcstr("/"); bstring path7 = bfromcstr("/users/people/1234/notgonnawork"); list_t *found = RouteMap_match(routes, path5); mu_assert(check_routing(found, route, 1, route_data1), "Pattern match route wrong."); list_destroy_nodes(found); list_destroy(found); found = RouteMap_match(routes, path1); mu_assert(check_routing(found, route, 1, route_data1), "Past end route wrong."); list_destroy_nodes(found); list_destroy(found); found = RouteMap_match(routes, path2); mu_assert(check_routing(found, route, 1, route_data2), "No pattern route wrong."); list_destroy_nodes(found); list_destroy(found); found = RouteMap_match(routes, path3); mu_assert(check_routing(found, route, 1, route_data3), "Wrong $ terminated route."); list_destroy_nodes(found); list_destroy(found); found = RouteMap_match(routes, path4); mu_assert(check_routing(found, route, 1, route_data4), "Wrong longer route match."); list_destroy_nodes(found); list_destroy(found); found = RouteMap_match(routes, path5); mu_assert(check_routing(found, route, 1, route_data1), "Wrong route for /users/1234"); list_destroy_nodes(found); list_destroy(found); found = RouteMap_match(routes, path6); mu_assert(check_routing(found, route, 2, route_data0), "Should get root / route."); list_destroy_nodes(found); list_destroy(found); found = RouteMap_match(routes, path7); mu_assert(check_routing(found, route, 0, NULL), "Should not match past end"); list_destroy_nodes(found); list_destroy(found); bdestroy(path1); bdestroy(path2); bdestroy(path3); bdestroy(path4); bdestroy(path5); RouteMap_destroy(routes); return NULL; }
/* * Uses default rule files from the module parameters */ int allow_routing_0(struct sip_msg* msg, char* str1, char* str2) { return check_routing(msg, 0); }
char *test_routing_match() { RouteMap *routes = RouteMap_create(NULL); mu_assert(routes != NULL, "Failed to make the route map."); char *route_data1 = "route1"; char *route_data2 = "route2"; char *route_data3 = "route3"; char *route_data4 = "route4"; bstring route1 = bfromcstr("/users/([0-9]+)"); bstring route2 = bfromcstr("/users"); bstring route3 = bfromcstr("/users/people/([0-9]+))$"); bstring route4 = bfromcstr("/cars/([a-z]-)$"); Route *route = NULL; RouteMap_insert(routes, route1, route_data1); RouteMap_insert(routes, route2, route_data2); RouteMap_insert(routes, route3, route_data4); RouteMap_insert(routes, route4, route_data3); bstring path1 = bfromcstr("/users/1234/testing"); bstring path2 = bfromcstr("/users"); bstring path3 = bfromcstr("/cars/cadillac"); bstring path4 = bfromcstr("/users/people/1234"); bstring path5 = bfromcstr("/users/1234"); list_t *found = RouteMap_match(routes, path5); mu_assert(check_routing(found, route, 1, route_data1), "Pattern match route wrong."); list_destroy_nodes(found); list_destroy(found); // must make sure that match is partial unless $ explicitly found = RouteMap_match(routes, path1); mu_assert(check_routing(found, route, 1, route_data1), "Past end route wrong."); list_destroy_nodes(found); list_destroy(found); found = RouteMap_match(routes, path2); mu_assert(check_routing(found, route, 1, route_data2), "No pattern route wrong."); list_destroy_nodes(found); list_destroy(found); found = RouteMap_match(routes, path3); mu_assert(check_routing(found, route, 1, route_data3), "Wrong $ terminated route."); list_destroy_nodes(found); list_destroy(found); found = RouteMap_match(routes, path4); mu_assert(check_routing(found, route, 1, route_data4), "Wrong longer route match."); list_destroy_nodes(found); list_destroy(found); bdestroy(path1); bdestroy(path2); bdestroy(path3); bdestroy(path4); bdestroy(path5); RouteMap_destroy(routes); return NULL; }