This commit is contained in:
@@ -34,6 +34,95 @@ int my_test_handler(short event, restd_conn_t *conn, void *userdata)
|
||||
return RESTD_CLOSE; // Close connection.
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
bool found_route(restd_server_t *server, const char *method, const char *path)
|
||||
{
|
||||
qlist_t *hooks = server->hooks;
|
||||
|
||||
qlist_obj_t obj;
|
||||
bzero((void *)&obj, sizeof(qlist_obj_t));
|
||||
while (hooks->getnext(hooks, &obj, false) == true)
|
||||
{
|
||||
restd_hook_t *hook = (restd_hook_t *)obj.data;
|
||||
if (hook->method && method && strcmp(hook->method, method)==0)
|
||||
{
|
||||
if (hook->path && path && strcmp(hook->path, path)==0)
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
bool contain (const char *src, const char *dest, int len)
|
||||
{
|
||||
int len_src, len_dest;
|
||||
int i = 0;
|
||||
|
||||
len_src = strlen(src);
|
||||
if (len_src < len)
|
||||
return false;
|
||||
len_dest = strlen(dest);
|
||||
if (len_dest < len)
|
||||
return false;
|
||||
|
||||
while (i < len)
|
||||
{
|
||||
if (src[i] != dest[i])
|
||||
return false;
|
||||
i++;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
bool found_special_route(restd_server_t *server, const char *method, const char *path, int *id)
|
||||
{
|
||||
qlist_t *hooks = server->hooks;
|
||||
|
||||
qlist_obj_t obj;
|
||||
bzero((void *)&obj, sizeof(qlist_obj_t));
|
||||
while (hooks->getnext(hooks, &obj, false) == true)
|
||||
{
|
||||
restd_hook_t *hook = (restd_hook_t *)obj.data;
|
||||
if (hook->method && method && strcmp(hook->method, method)==0)
|
||||
{
|
||||
if (hook->path && path)
|
||||
{
|
||||
int i = 0;
|
||||
int pos = -1;
|
||||
while (hook->path[i])
|
||||
{
|
||||
if (hook->path[i] == ':')
|
||||
pos = i;
|
||||
i++;
|
||||
}
|
||||
printf("pos: %d\n", pos);
|
||||
printf("contain: %s\n", contain(hook->path, path, pos)?"TRUE":"FALSE");
|
||||
if ( pos != -1 && contain(hook->path, path, pos))
|
||||
{
|
||||
const char *buffer = &path[i];
|
||||
printf("buffer: %s\n", buffer);
|
||||
return true;
|
||||
}
|
||||
else if (strcmp(hook->path, path)==0)
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
TEST("Rest - create free\t")
|
||||
{
|
||||
@@ -46,11 +135,12 @@ TEST("Rest - create free\t")
|
||||
|
||||
restd_server_register_hook_on_path(rest_server, "POST", "/api/v1/test", my_test_handler, NULL);
|
||||
|
||||
|
||||
restd_server_free(rest_server);
|
||||
}
|
||||
|
||||
TEST("Rest - create free\t")
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
TEST("Rest - create access regular route free\t")
|
||||
{
|
||||
restd_server_t *rest_server;
|
||||
|
||||
@@ -60,11 +150,41 @@ TEST("Rest - create free\t")
|
||||
restd_server_set_option(rest_server, "server.port", "7777");
|
||||
|
||||
restd_server_register_hook_on_path(rest_server, "POST", "/api/v1/test", my_test_handler, NULL);
|
||||
|
||||
ASSERT_TRUE(found_route(rest_server, "POST", "/api/v1/test"));
|
||||
ASSERT_FALSE(found_route(rest_server, "POST", "/api/v1/notfound"));
|
||||
|
||||
restd_server_register_hook_on_path(rest_server, "GET", "/api/v1/test", my_test_handler, NULL);
|
||||
restd_server_register_hook_on_path(rest_server, "GET", "/api/v1/test/:id", my_test_handler, NULL);
|
||||
restd_server_register_hook_on_path(rest_server, "PUT", "/api/v1/test/:id", my_test_handler, NULL);
|
||||
restd_server_register_hook_on_path(rest_server, "DELETE", "/api/v1/test/:id", my_test_handler, NULL);
|
||||
ASSERT_TRUE(found_route(rest_server, "GET", "/api/v1/test"));
|
||||
restd_server_register_hook_on_path(rest_server, "GET", "/api/v1/test", my_test_handler, NULL);
|
||||
ASSERT_TRUE(found_route(rest_server, "GET", "/api/v1/test"));
|
||||
|
||||
restd_server_register_hook_on_path(rest_server, "PUT", "/api/v1/test", my_test_handler, NULL);
|
||||
ASSERT_TRUE(found_route(rest_server, "PUT", "/api/v1/test"));
|
||||
|
||||
restd_server_register_hook_on_path(rest_server, "DELETE", "/api/v1/test", my_test_handler, NULL);
|
||||
ASSERT_TRUE(found_route(rest_server, "DELETE", "/api/v1/test"));
|
||||
|
||||
restd_server_free(rest_server);
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
TEST("Rest - create access regex route free\t")
|
||||
{
|
||||
restd_server_t *rest_server;
|
||||
int id = 0;
|
||||
rest_server = restd_server_new();
|
||||
ASSERT_NOT_NULL(rest_server);
|
||||
|
||||
restd_server_register_hook_on_path(rest_server, "GET", "/api/v1/klong/:id", my_test_handler, NULL);
|
||||
restd_server_register_hook_on_path(rest_server, "GET", "/api/v1/donkey", my_test_handler, NULL);
|
||||
restd_server_register_hook_on_path(rest_server, "GET", "/api/v1/test/:id", my_test_handler, NULL);
|
||||
|
||||
ASSERT_FALSE(found_special_route(rest_server, "GET", "/api/v1/notfound/77", &id));
|
||||
|
||||
ASSERT_TRUE(found_special_route(rest_server, "GET", "/api/v1/test/77", &id));
|
||||
ASSERT_EQUAL_INT(id, 77);
|
||||
|
||||
restd_server_free(rest_server);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user