summaryrefslogtreecommitdiff
path: root/test/query.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/query.c')
-rw-r--r--test/query.c84
1 files changed, 75 insertions, 9 deletions
diff --git a/test/query.c b/test/query.c
index 5744fba..a3d3bb9 100644
--- a/test/query.c
+++ b/test/query.c
@@ -3,8 +3,18 @@
#include "query.h"
#include <string.h>
+#include <arpa/inet.h>
+
+#define IP(a, b, c, d) htonl(a << 24 | b << 16 | c << 8 | d)
void test_malformed_empty() {
+
+ struct sockaddr_in src = {
+ .sin_family = AF_INET,
+ .sin_addr.s_addr = IP(255, 0, 0, 1),
+ .sin_port = 6881,
+ };
+
struct nodeid self = {.inner={0x0034048f, 0x08000020, 0x00888880, 0x02008460, 0x0ab00521}};
char* packet = "";
size_t packet_len = 0;
@@ -13,12 +23,19 @@ void test_malformed_empty() {
char* response_cursor = response;
char* response_end = response + sizeof(response);
- int rc = handle_request(&self, "ping", packet, packet_len, &response_cursor, response_end-response_cursor);
+ int rc = handle_request(&self, "ping", (struct sockaddr*)&src, sizeof(src), packet, packet_len, &response_cursor, response_end-response_cursor);
TEST_ASSERT_EQUAL(QUERY_EBADQ, rc);
}
void test_malformed_only_dict_start() {
+
+ struct sockaddr_in src = {
+ .sin_family = AF_INET,
+ .sin_addr.s_addr = IP(255, 0, 0, 1),
+ .sin_port = 6881,
+ };
+
struct nodeid self = {.inner={0x0034048f, 0x08000020, 0x00888880, 0x02008460, 0x0ab00521}};
char* packet = "d";
size_t packet_len = 1;
@@ -27,12 +44,19 @@ void test_malformed_only_dict_start() {
char* response_cursor = response;
char* response_end = response + sizeof(response);
- int rc = handle_request(&self, "ping", packet, packet_len, &response_cursor, response_end-response_cursor);
+ int rc = handle_request(&self, "ping", (struct sockaddr*)&src, sizeof(src), packet, packet_len, &response_cursor, response_end-response_cursor);
TEST_ASSERT_EQUAL(QUERY_EBADQ, rc);
}
void test_malformed_empty_args_key() {
+
+ struct sockaddr_in src = {
+ .sin_family = AF_INET,
+ .sin_addr.s_addr = IP(255, 0, 0, 1),
+ .sin_port = 6881,
+ };
+
struct nodeid self = {.inner={0x0034048f, 0x08000020, 0x00888880, 0x02008460, 0x0ab00521}};
char* packet = "d1:ae";
size_t packet_len = strlen(packet);
@@ -41,12 +65,19 @@ void test_malformed_empty_args_key() {
char* response_cursor = response;
char* response_end = response + sizeof(response);
- int rc = handle_request(&self, "ping", packet, packet_len, &response_cursor, response_end-response_cursor);
+ int rc = handle_request(&self, "ping", (struct sockaddr*)&src, sizeof(src), packet, packet_len, &response_cursor, response_end-response_cursor);
TEST_ASSERT_EQUAL(QUERY_EBADQ, rc);
}
void test_malformed_wrong_args_type() {
+
+ struct sockaddr_in src = {
+ .sin_family = AF_INET,
+ .sin_addr.s_addr = IP(255, 0, 0, 1),
+ .sin_port = 6881,
+ };
+
struct nodeid self = {.inner={0x0034048f, 0x08000020, 0x00888880, 0x02008460, 0x0ab00521}};
char* packet = "d1:a1:re";
size_t packet_len = strlen(packet);
@@ -55,12 +86,19 @@ void test_malformed_wrong_args_type() {
char* response_cursor = response;
char* response_end = response + sizeof(response);
- int rc = handle_request(&self, "ping", packet, packet_len, &response_cursor, response_end-response_cursor);
+ int rc = handle_request(&self, "ping", (struct sockaddr*)&src, sizeof(src), packet, packet_len, &response_cursor, response_end-response_cursor);
TEST_ASSERT_EQUAL(QUERY_EBADQ, rc);
}
void test_malformed_empty_args() {
+
+ struct sockaddr_in src = {
+ .sin_family = AF_INET,
+ .sin_addr.s_addr = IP(255, 0, 0, 1),
+ .sin_port = 6881,
+ };
+
struct nodeid self = {.inner={0x0034048f, 0x08000020, 0x00888880, 0x02008460, 0x0ab00521}};
char* packet = "d1:adee";
size_t packet_len = strlen(packet);
@@ -69,12 +107,19 @@ void test_malformed_empty_args() {
char* response_cursor = response;
char* response_end = response + sizeof(response);
- int rc = handle_request(&self, "ping", packet, packet_len, &response_cursor, response_end-response_cursor);
+ int rc = handle_request(&self, "ping", (struct sockaddr*)&src, sizeof(src), packet, packet_len, &response_cursor, response_end-response_cursor);
TEST_ASSERT_EQUAL(QUERY_EBADQ, rc);
}
void test_malformed_wrong_id_arg_type() {
+
+ struct sockaddr_in src = {
+ .sin_family = AF_INET,
+ .sin_addr.s_addr = IP(255, 0, 0, 1),
+ .sin_port = 6881,
+ };
+
struct nodeid self = {.inner={0x0034048f, 0x08000020, 0x00888880, 0x02008460, 0x0ab00521}};
char* packet = "d1:ad2:idi1eee";
size_t packet_len = strlen(packet);
@@ -83,12 +128,19 @@ void test_malformed_wrong_id_arg_type() {
char* response_cursor = response;
char* response_end = response + sizeof(response);
- int rc = handle_request(&self, "ping", packet, packet_len, &response_cursor, response_end-response_cursor);
+ int rc = handle_request(&self, "ping", (struct sockaddr*)&src, sizeof(src), packet, packet_len, &response_cursor, response_end-response_cursor);
TEST_ASSERT_EQUAL(QUERY_EBADQ, rc);
}
void test_malformed_wrong_id_length() {
+
+ struct sockaddr_in src = {
+ .sin_family = AF_INET,
+ .sin_addr.s_addr = IP(255, 0, 0, 1),
+ .sin_port = 6881,
+ };
+
struct nodeid self = {.inner={0x0034048f, 0x08000020, 0x00888880, 0x02008460, 0x0ab00521}};
char* packet = "d1:ad2:id19:aaaaaaaaaaaaaaaaaaaee";
size_t packet_len = strlen(packet);
@@ -97,12 +149,19 @@ void test_malformed_wrong_id_length() {
char* response_cursor = response;
char* response_end = response + sizeof(response);
- int rc = handle_request(&self, "ping", packet, packet_len, &response_cursor, response_end-response_cursor);
+ int rc = handle_request(&self, "ping", (struct sockaddr*)&src, sizeof(src), packet, packet_len, &response_cursor, response_end-response_cursor);
TEST_ASSERT_EQUAL(QUERY_EBADQ, rc);
}
void test_ping() {
+
+ struct sockaddr_in src = {
+ .sin_family = AF_INET,
+ .sin_addr.s_addr = IP(255, 0, 0, 1),
+ .sin_port = 6881,
+ };
+
struct nodeid self = {.inner_b={"aaaaaaaaaaaaaaaaaaab"}};
char* packet = "d1:ad2:id20:aaaaaaaaaaaaaaaaaaaaee";
size_t packet_len = strlen(packet);
@@ -111,7 +170,7 @@ void test_ping() {
char* response_cursor = response;
char* response_end = response + sizeof(response);
- int rc = handle_request(&self, "ping", packet, packet_len, &response_cursor, response_end-response_cursor);
+ int rc = handle_request(&self, "ping", (struct sockaddr*)&src, sizeof(src), packet, packet_len, &response_cursor, response_end-response_cursor);
TEST_ASSERT_EQUAL(0, rc);
TEST_ASSERT_EQUAL(29, response_cursor - response);
@@ -119,6 +178,13 @@ void test_ping() {
}
void test_bad_method() {
+
+ struct sockaddr_in src = {
+ .sin_family = AF_INET,
+ .sin_addr.s_addr = IP(255, 0, 0, 1),
+ .sin_port = 6881,
+ };
+
struct nodeid self = {.inner_b={"aaaaaaaaaaaaaaaaaaab"}};
char* packet = "de";
size_t packet_len = strlen(packet);
@@ -127,7 +193,7 @@ void test_bad_method() {
char* response_cursor = response;
char* response_end = response + sizeof(response);
- int rc = handle_request(&self, "someWrongMethod", packet, packet_len, &response_cursor, response_end-response_cursor);
+ int rc = handle_request(&self, "someWrongMethod", (struct sockaddr*)&src, sizeof(src), packet, packet_len, &response_cursor, response_end-response_cursor);
TEST_ASSERT_EQUAL(QUERY_EUNK, rc);
}