1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-02 07:46:38 +02:00

relay/api: return an error 400 when URL parameters "nicks", "lines" and "lines_free" have an invalid value

This commit is contained in:
Sébastien Helleu
2025-10-26 08:07:23 +01:00
parent 58c873809b
commit e637e0de1c
5 changed files with 118 additions and 41 deletions
+33 -12
View File
@@ -193,18 +193,31 @@ TEST(RelayHttp, UrlDecode)
TEST(RelayHttp, GetParamBoolean)
{
struct t_relay_http_request *request;
int value;
request = relay_http_request_alloc ();
CHECK(request);
relay_http_parse_method_path (request, "GET /api/test?key1=true&key2=1&key3=off");
LONGS_EQUAL(1, relay_http_get_param_boolean (request, "key1", 0));
LONGS_EQUAL(1, relay_http_get_param_boolean (request, "key1", 1));
LONGS_EQUAL(1, relay_http_get_param_boolean (request, "key2", 0));
LONGS_EQUAL(1, relay_http_get_param_boolean (request, "key2", 1));
LONGS_EQUAL(0, relay_http_get_param_boolean (request, "key3", 0));
LONGS_EQUAL(0, relay_http_get_param_boolean (request, "key3", 1));
LONGS_EQUAL(0, relay_http_get_param_boolean (request, "xxx", 0));
LONGS_EQUAL(1, relay_http_get_param_boolean (request, "xxx", 1));
LONGS_EQUAL(0, relay_http_get_param_boolean (request, "key1", 0, NULL));
LONGS_EQUAL(1, relay_http_get_param_boolean (request, "key1", 0, &value));
LONGS_EQUAL(1, value);
LONGS_EQUAL(1, relay_http_get_param_boolean (request, "key1", 1, &value));
LONGS_EQUAL(1, value);
LONGS_EQUAL(1, relay_http_get_param_boolean (request, "key2", 0, &value));
LONGS_EQUAL(1, value);
LONGS_EQUAL(1, relay_http_get_param_boolean (request, "key2", 1, &value));
LONGS_EQUAL(1, value);
LONGS_EQUAL(1, relay_http_get_param_boolean (request, "key3", 0, &value));
LONGS_EQUAL(0, value);
LONGS_EQUAL(1, relay_http_get_param_boolean (request, "key3", 1, &value));
LONGS_EQUAL(0, value);
LONGS_EQUAL(1, relay_http_get_param_boolean (request, "xxx", 0, &value));
LONGS_EQUAL(0, value);
LONGS_EQUAL(1, relay_http_get_param_boolean (request, "xxx", 1, &value));
LONGS_EQUAL(1, value);
relay_http_request_free (request);
}
@@ -216,14 +229,22 @@ TEST(RelayHttp, GetParamBoolean)
TEST(RelayHttp, GetParamLong)
{
struct t_relay_http_request *request;
long value;
request = relay_http_request_alloc ();
CHECK(request);
relay_http_parse_method_path (request, "GET /api/test?key1=123&key2=-4&key3=abc");
LONGS_EQUAL(123, relay_http_get_param_long (request, "key1", 8));
LONGS_EQUAL(-4, relay_http_get_param_long (request, "key2", 8));
LONGS_EQUAL(8, relay_http_get_param_long (request, "key3", 8));
LONGS_EQUAL(99, relay_http_get_param_long (request, "xxx", 99));
LONGS_EQUAL(0, relay_http_get_param_long (request, "key1", 0, NULL));
LONGS_EQUAL(0, relay_http_get_param_long (request, "key3", 8, &value));
LONGS_EQUAL(1, relay_http_get_param_long (request, "key1", 8, &value));
LONGS_EQUAL(123, value);
LONGS_EQUAL(1, relay_http_get_param_long (request, "key2", 8, &value));
LONGS_EQUAL(-4, value);
LONGS_EQUAL(1, relay_http_get_param_long (request, "xxx", 99, &value));
LONGS_EQUAL(99, value);
relay_http_request_free (request);
}