Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/lavabit/magma.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjpadkins <jacobpadkins@gmail.com>2017-04-05 02:54:02 +0300
committerjpadkins <jacobpadkins@gmail.com>2017-04-05 02:54:02 +0300
commit2f9a70dcf95882c1cdeea6e6e18fad1bd72389db (patch)
tree5dc1fb8e89678c415c793e9fbbaec46f647d6687 /check/magma
parent5a438a9d0a7a0f58a827184af64bd1cfabc8b7c1 (diff)
Dirty Commit: Added groundwork for camelface tests
Diffstat (limited to 'check/magma')
-rw-r--r--check/magma/servers/camel/camel_check.c34
-rw-r--r--check/magma/servers/camel/camel_check.h3
-rw-r--r--check/magma/servers/camel/camel_check_network.c56
-rw-r--r--check/magma/servers/http/http_check.h2
-rw-r--r--check/magma/servers/http/http_check_network.c17
5 files changed, 88 insertions, 24 deletions
diff --git a/check/magma/servers/camel/camel_check.c b/check/magma/servers/camel/camel_check.c
index ded7334f..f7564d55 100644
--- a/check/magma/servers/camel/camel_check.c
+++ b/check/magma/servers/camel/camel_check.c
@@ -14,11 +14,11 @@ START_TEST (check_camel_login_s) {
server_t *server = NULL;
stringer_t *errmsg = MANAGEDBUF(1024);
- if (status() && !(server = servers_get_by_protocol(HTTP, true))) {
+ if (status() && !(server = servers_get_by_protocol(HTTP, false))) {
st_sprint(errmsg, "No HTTP servers were configured to support TLS connections.");
outcome = false;
}
- else if (!(client = client_connect("localhost", server->network.port)) || (client_secure(client) == -1)) {
+ else if (!(client = client_connect("localhost", server->network.port))) {
st_sprint(errmsg, "Failed to connect client securely to HTTP server.");
outcome = false;
@@ -35,11 +35,41 @@ START_TEST (check_camel_login_s) {
}
END_TEST
+START_TEST (check_camel_basic_s) {
+
+ log_disable();
+ bool_t outcome = true;
+ client_t *client = NULL;
+ server_t *server = NULL;
+ stringer_t *errmsg = MANAGEDBUF(1024);
+
+ if (status() && !(server = servers_get_by_protocol(HTTP, false))) {
+ st_sprint(errmsg, "No HTTP servers were configured to support TLS connections.");
+ outcome = false;
+ }
+ else if (!(client = client_connect("localhost", server->network.port))) {
+
+ st_sprint(errmsg, "Failed to connect client securely to HTTP server.");
+ outcome = false;
+ }
+ else if (!check_camel_basic_sthread(client, errmsg)){
+ outcome = false;
+ }
+ else {
+ errmsg = NULL;
+ }
+
+ log_test("CAMEL / BASIC / SINGLE THREADED:", errmsg);
+ ck_assert_msg(outcome, st_char_get(errmsg));
+}
+END_TEST
+
Suite * suite_check_camel(void) {
Suite *s = suite_create("\tCAMEL");
suite_check_testcase(s, "CAMEL", "Camel Login/S", check_camel_login_s);
+ suite_check_testcase(s, "CAMEL", "Camel Basic/S", check_camel_basic_s);
return s;
}
diff --git a/check/magma/servers/camel/camel_check.h b/check/magma/servers/camel/camel_check.h
index fa4495dd..e0039098 100644
--- a/check/magma/servers/camel/camel_check.h
+++ b/check/magma/servers/camel/camel_check.h
@@ -9,9 +9,10 @@
/// camel_check_network.c
bool_t check_camel_status(client_t *client);
-bool_t check_camel_read_end(client_t *client);
+stringer_t* check_camel_read_json(client_t *client, size_t length);
bool_t check_camel_login(client_t *client, uint32_t id, chr_t *user, chr_t *pass, stringer_t *cookie);
bool_t check_camel_login_sthread(client_t *client, stringer_t *errmsg);
+bool_t check_camel_basic_sthread(client_t *client, stringer_t *errmsg);
/// pop_check.c
Suite * suite_check_camel(void);
diff --git a/check/magma/servers/camel/camel_check_network.c b/check/magma/servers/camel/camel_check_network.c
index 7e69e7dc..2f12a830 100644
--- a/check/magma/servers/camel/camel_check_network.c
+++ b/check/magma/servers/camel/camel_check_network.c
@@ -16,12 +16,18 @@
* @return True if the end of the HTTP response was reached, false if client_read_line reads
* a 0 length line before the last line is reached.
*/
-bool_t check_camel_read_end(client_t *client) {
+stringer_t* check_camel_read_json(client_t *client, size_t length) {
- while (client_read_line(client) >= 0) {
- if (st_cmp_cs_starts(&(client->line), NULLER("{\"jsonrpc\":\"2.0\",")) == 0) return true;
- }
- return false;
+ stringer_t *json = st_alloc(length);
+
+ while (st_cmp_cs_eq(&(client->line), PLACER("\r\n", 2))) client_read_line(client);
+ recv(client->sockd, st_char_get(json), length, 0);
+
+ chr_t *foo = st_char_get(json);
+ (void)foo;
+
+
+ return json;
}
/**
@@ -38,7 +44,7 @@ bool_t check_camel_status(client_t *client) {
if (client_read_line(client) <= 0) return false;
}
- return ((*(pl_char_get(client->line)+9) == '2') ? true : false);
+ return ((*(pl_char_get(client->line) + 9) == '2') ? true : false);
}
/**
@@ -54,8 +60,9 @@ bool_t check_camel_status(client_t *client) {
*/
bool_t check_camel_login(client_t *client, uint32_t id, chr_t *user, chr_t *pass, stringer_t *cookie) {
- uint32_t content_length = 62 + ns_length_get(user) + ns_length_get(pass) + uint32_digits(id);
- chr_t *message = "POST /portal/camel HTTP/1.1\r\n" \
+ size_t content_length = 0;
+ uint32_t length = 62 + ns_length_get(user) + ns_length_get(pass) + uint32_digits(id);
+ stringer_t *json = NULL, *message = "POST /portal/camel HTTP/1.1\r\n" \
"Host: localhost:10000\r\n" \
"Accept: */*\r\n" \
"Content-Length: %u\r\n" \
@@ -64,14 +71,17 @@ bool_t check_camel_login(client_t *client, uint32_t id, chr_t *user, chr_t *pass
"{\"id\":%u,\"method\":\"auth\",\"params\":{\"username\":\"%s\",\"password\":\"%s\"}}\r\n"
"\r\n";
- if (client_print(client, message, content_length, id, user, pass) != (ns_length_get(message) + uint32_digits(id) + ns_length_get(user) + ns_length_get(pass)) || client_status(client) != 1 || !check_camel_status(client) ||
- !check_camel_read_end(client)) {
+ if (client_print(client, message, length, id, user, pass) != ((ns_length_get(message) - 8) + uint32_digits(length) +
+ uint32_digits(id) + ns_length_get(user) + ns_length_get(pass)) || client_status(client) != 1 || !check_camel_status(client) ||
+ !(content_length = check_http_content_length_get(client)) || !(json = check_camel_read_json(client, content_length))) {
return false;
}
- chr_t *foo = pl_char_get(client->line);
+ chr_t *foo = st_char_get(json);
(void)foo;
+ st_free(json);
+
return true;
}
@@ -87,3 +97,27 @@ bool_t check_camel_login_sthread(client_t *client, stringer_t *errmsg) {
return true;
}
+
+bool_t check_camel_basic_sthread(client_t *client, stringer_t *errmsg) {
+
+// chr_t *commands = {
+// "{\"id\":%u,\"method\":\"config.edit\",\"params\":{\"key\":\"value\"}}",
+// "{\"id\":%u,\"method\":\"config.load\"}",
+// "{\"id\":%u,\"method\":\"config.edit\",\"params\":{\"key\":null}}",
+// "{\"id\":%u,\"method\":\"folders.add\",\"params\":{\"context\":\"contacts\",\"name\":\"Flight Crew\"}}",
+// "{\"id\":%u,\"method\":\"folders.list\",\"params\":{\"context\":\"contacts\"}}",
+// "{\"id\":%u,\"method\":\"cookies\"}",
+// "{\"id\":%u,\"method\":\"alert.list\"}",
+// "{\"id\":%u,\"method\":\"alert.acknowledge\",\"params\":[1,7,13]}",
+// "{\"id\":%u,\"method\":\"folders.rename\",\"params\":{\"context\":\"contacts\",\"folderID\":1,\"name\"Camel\"}}",
+// "{\"id\":%u,\"method\":\"folders.remove\",\"params\":{\"context\":\"contacts\",\"folderID\":1}}",
+// };
+//
+// for (size_t i = 0; i < sizeof(commands)/sizeof(chr_t*); i++) {
+// if (client_print(commands[i], i) != ns_length_get(commands[i]) - 2 + uint32_digits(i)) {
+//
+// }
+// }
+
+ return true;
+}
diff --git a/check/magma/servers/http/http_check.h b/check/magma/servers/http/http_check.h
index 261859d3..ee6cd2dd 100644
--- a/check/magma/servers/http/http_check.h
+++ b/check/magma/servers/http/http_check.h
@@ -9,7 +9,7 @@
/// http_check_network.c
bool_t check_http_read_to_empty(client_t *client);
-uint32_t check_http_content_length_get(client_t *client, stringer_t *errmsg);
+size_t check_http_content_length_get(client_t *client);
bool_t check_http_content_length_test(client_t *client, uint32_t content_length, stringer_t *errmsg);
bool_t check_http_network_basic_sthread(stringer_t *errmsg, uint32_t port, bool_t secure);
bool_t check_http_network_options_sthread(stringer_t *errmsg, uint32_t port, bool_t secure);
diff --git a/check/magma/servers/http/http_check_network.c b/check/magma/servers/http/http_check_network.c
index 5675d664..2b1e891c 100644
--- a/check/magma/servers/http/http_check_network.c
+++ b/check/magma/servers/http/http_check_network.c
@@ -30,25 +30,24 @@ bool_t check_http_read_to_empty(client_t *client) {
* @param client A client_t containing the response of an HTTP request.
* @return The value of Content-Length in the HTTP message header.
*/
-uint32_t check_http_content_length_get(client_t *client, stringer_t *errmsg) {
+size_t check_http_content_length_get(client_t *client) {
- size_t location = 0;
- uint32_t content_length;
+ size_t location = 0, content_length;
placer_t cl_placer = pl_null();
while (st_cmp_ci_starts(&(client->line), NULLER("Content-Length:")) != 0) client_read_line(client);
if (!st_search_chr(&(client->line), ' ', &location)) {
- st_sprint(errmsg, "The Content-Length line was improperly formed.");
+ //st_sprint(errmsg, "The Content-Length line was improperly formed.");
}
else if (pl_empty(cl_placer = pl_init(pl_data_get(client->line) + location, pl_length_get(client->line) - location))) {
- st_sprint(errmsg, "Failed to initialize content length placer.");
+ //st_sprint(errmsg, "Failed to initialize content length placer.");
}
else if (!pl_inc(&cl_placer, pl_length_get(client->line) - location) || !(cl_placer.length = pl_length_get(cl_placer)-2)) {
- st_sprint(errmsg, "Failed to increment placer to location of content-length value.");
+ //st_sprint(errmsg, "Failed to increment placer to location of content-length value.");
}
- else if (!uint32_conv_st(&cl_placer, &content_length)) {
- st_sprint(errmsg, "Failed to convert the content-length string to a uint32");
+ else if (!size_conv_bl(pl_char_get(cl_placer), pl_length_get(cl_placer), &content_length)) {
+ //st_sprint(errmsg, "Failed to convert the content-length string to a uint32");
}
return content_length;
@@ -118,7 +117,7 @@ bool_t check_http_network_basic_sthread(stringer_t *errmsg, uint32_t port, bool_
}
// Test submitting a GET request.
else if (client_write(client, PLACER("GET / HTTP/1.1\r\nHost: localhost\r\n\r\n", 35)) != 35 ||
- client_status(client) != 1 || !(content_length = check_http_content_length_get(client, errmsg))) {
+ client_status(client) != 1 || !(content_length = check_http_content_length_get(client))) {
if (st_empty(errmsg)) st_sprint(errmsg, "Failed to return a valid GET response.");
client_close(client);
return false;