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
path: root/check
diff options
context:
space:
mode:
authorjpadkins <jacobpadkins@gmail.com>2017-04-06 05:02:54 +0300
committerjpadkins <jacobpadkins@gmail.com>2017-04-06 05:02:54 +0300
commite2796089eddcff7e67c2427ff29c0ffebbde6174 (patch)
tree735734d9083de9e31e0ba5681b1ec89b95c00cbb /check
parent4a7a610a4f42d5e1883287202fc1aa607e94c67c (diff)
Updated camel test helpers, fixing some issues
Diffstat (limited to 'check')
-rw-r--r--check/magma/servers/camel/camel_check.c41
-rw-r--r--check/magma/servers/camel/camel_check.h5
-rw-r--r--check/magma/servers/camel/camel_check_network.c54
-rw-r--r--check/magma/servers/http/http_check_network.c2
4 files changed, 56 insertions, 46 deletions
diff --git a/check/magma/servers/camel/camel_check.c b/check/magma/servers/camel/camel_check.c
index f6d6b3d9..de833856 100644
--- a/check/magma/servers/camel/camel_check.c
+++ b/check/magma/servers/camel/camel_check.c
@@ -12,50 +12,25 @@ START_TEST (check_camel_auth_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))) {
+ if (status() && !check_camel_auth_sthread(false, errmsg)) outcome = false;
- st_sprint(errmsg, "Failed to connect client securely to HTTP server.");
- outcome = false;
- }
- else if (!check_camel_auth_sthread(client, errmsg)){
- outcome = false;
- }
-
- log_test("CAMEL / LOGIN / SINGLE THREADED:", errmsg);
+ log_test("HTTP / NETWORK / CAMEL / LOGIN / SINGLE THREADED:", errmsg);
ck_assert_msg(outcome, st_char_get(errmsg));
}
END_TEST
START_TEST (check_camel_basic_s) {
- log_disable();
+ //log_disable();
+ log_enable();
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;
- }
+ if (status() && !check_camel_basic_sthread(false, errmsg)) outcome = false;
- log_test("CAMEL / BASIC / SINGLE THREADED:", errmsg);
+ log_test("HTTP / NETWORK / CAMEL / BASIC / SINGLE THREADED:", errmsg);
ck_assert_msg(outcome, st_char_get(errmsg));
}
END_TEST
@@ -64,8 +39,8 @@ Suite * suite_check_camel(void) {
Suite *s = suite_create("\tCAMEL");
- suite_check_testcase(s, "CAMEL", "Camel Auth/S", check_camel_auth_s);
- suite_check_testcase(s, "CAMEL", "Camel Basic/S", check_camel_basic_s);
+ suite_check_testcase(s, "CAMEL", "HTTP Network Camel Auth/S", check_camel_auth_s);
+ suite_check_testcase(s, "CAMEL", "HTTP Network 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 ff372cfb..3fe027be 100644
--- a/check/magma/servers/camel/camel_check.h
+++ b/check/magma/servers/camel/camel_check.h
@@ -9,11 +9,12 @@
/// camel_check_network.c
bool_t check_camel_status(client_t *client);
+client_t * check_camel_connect(bool_t secure);
stringer_t* check_camel_json_read(client_t *client, size_t length);
bool_t check_camel_json_write(client_t *client, stringer_t *json, stringer_t *cookie, bool_t keep_alive);
bool_t check_camel_login(client_t *client, uint32_t id, stringer_t *user, stringer_t *pass, stringer_t *cookie);
-bool_t check_camel_auth_sthread(client_t *client, stringer_t *errmsg);
-bool_t check_camel_basic_sthread(client_t *client, stringer_t *errmsg);
+bool_t check_camel_auth_sthread(bool_t secure, stringer_t *errmsg);
+bool_t check_camel_basic_sthread(bool_t secure, 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 e9e82624..3a402c80 100644
--- a/check/magma/servers/camel/camel_check_network.c
+++ b/check/magma/servers/camel/camel_check_network.c
@@ -21,9 +21,31 @@ bool_t check_camel_status(client_t *client) {
if (client_read_line(client) <= 2) return false;
}
+ chr_t *foo = pl_char_get(client->line);
+ (void)foo;
+
return ((*(pl_char_get(client->line) + 9) == '2') ? true : false);
}
+client_t * check_camel_connect(bool_t secure) {
+
+ client_t *client = NULL;
+ server_t *server = NULL;
+
+ if (!(server = servers_get_by_protocol(HTTP, secure))) {
+ return NULL;
+ }
+ else if (!(client = client_connect("localhost", server->network.port))) {
+ return NULL;
+ }
+ else if (secure && client_secure(client) != 0) {
+ client_close(client);
+ return NULL;
+ }
+
+ return client;
+}
+
// Combine submit and read, because we now need to handle the connection being closed between requests.
/**
@@ -60,12 +82,14 @@ stringer_t * check_camel_json_read(client_t *client, size_t length) {
bool_t check_camel_json_write(client_t *client, stringer_t *json, stringer_t *cookie, bool_t keep_alive) {
chr_t *message = "POST /portal/camel HTTP/1.1\r\nHost: localhost:10000\r\nAccept: */*\r\nContent-Length: %u\r\n" \
- "Content-Type: application/x-www-form-urlencoded\r\nCookie: %.*s\r\nConnection: %s\r\n\r\n%.*s";
+ "Content-Type: application/x-www-form-urlencoded\r\nCookie: portal=%.*s;\r\nConnection: %s\r\n\r\n%.*s";
- if (client_print(client, message, st_length_get(json), st_length_int(cookie), st_char_get(cookie),
- (keep_alive ? "keep-alive" : "close"), st_char_get(json)) != (st_length_get(message) - 6 + st_length_get(json) +
- (keep_alive ? 10 : 5)) || client_status(client) != 1) {
+ if (client_print(client, message, st_length_get(json), st_length_int(cookie), (cookie ? st_char_get(cookie) : ""),
+ (keep_alive ? "keep-alive" : "close"), st_length_int(json), st_char_get(json)) != (ns_length_get(message) - 10 +
+ st_length_get(json) + (cookie ? st_length_get(cookie) : 0) + (keep_alive ? 10 : 5)) || client_status(client) != 1) {
+ uint32_t foo = (ns_length_get(message) - 10 + st_length_get(json) + (cookie ? st_length_get(cookie) : 0) + (keep_alive ? 10 : 5));
+ (void)foo;
return false;
}
@@ -127,11 +151,16 @@ bool_t check_camel_login(client_t *client, uint32_t id, stringer_t *user, string
}
// LOW: Test the four different ways of preserving a session token: Cookie, URL param, JSON param, Form post.
-bool_t check_camel_auth_sthread(client_t *client, stringer_t *errmsg) {
+bool_t check_camel_auth_sthread(bool_t secure, stringer_t *errmsg) {
+ client_t *client = NULL;
stringer_t *cookie = MANAGEDBUF(1024);
- if (!check_camel_login(client, 1, PLACER("princess", 8), PLACER("password", 8), cookie)) {
+ if (!(client = check_camel_connect(secure))) {
+ st_sprint(errmsg, "There were no HTTP servers available for %s connections.", (secure ? "TLS" : "TCP"));
+ return false;
+ }
+ else if (!check_camel_login(client, 1, PLACER("princess", 8), PLACER("password", 8), cookie)) {
st_sprint(errmsg, "Failed to return successful state after auth request.");
return false;
@@ -141,8 +170,9 @@ bool_t check_camel_auth_sthread(client_t *client, stringer_t *errmsg) {
return true;
}
-bool_t check_camel_basic_sthread(client_t *client, stringer_t *errmsg) {
+bool_t check_camel_basic_sthread(bool_t secure, stringer_t *errmsg) {
+ client_t *client = NULL;
uint32_t content_length = 0, folderid = 0, folderid_buff = 0;
stringer_t *cookie = MANAGEDBUF(1024), *json = NULL, *commands[] = {
NULLER("{\"id\":2,\"method\":\"config.edit\",\"params\":{\"key\":\"value\"}}"),
@@ -206,7 +236,10 @@ bool_t check_camel_basic_sthread(client_t *client, stringer_t *errmsg) {
NULLER("{\"id\":60,\"method\":\"logout\"}")
};
- if (!check_camel_login(client, 1, PLACER("princess", 8), PLACER("password", 8), cookie)) {
+ if (!(client = check_camel_connect(secure))) {
+ st_sprint(errmsg, "There were no HTTP servers available for %s connections.", (secure ? "TLS" : "TCP"));
+ }
+ else if (!check_camel_login(client, 1, PLACER("princess", 8), PLACER("password", 8), cookie)) {
st_sprint(errmsg, "Failed to return successful response after auth request.");
client_close(client);
@@ -214,8 +247,9 @@ bool_t check_camel_basic_sthread(client_t *client, stringer_t *errmsg) {
}
// Test config.edit { key = "key", value = "value" }
- if (!check_camel_json_write(client, commands[0], cookie, true) || client_status(client) != 1 || !check_camel_status(client) ||
- !(content_length = check_http_content_length_get(client)) || !(json = check_camel_json_read(client, content_length))) {
+ if (!(client = check_camel_connect(secure)) || !check_camel_json_write(client, commands[0], cookie, true) ||
+ client_status(client) != 1 || !check_camel_status(client) || !(content_length = check_http_content_length_get(client)) ||
+ !(json = check_camel_json_read(client, content_length))) {
st_sprint(errmsg, "Failed to return successful response after config.edit.");
client_close(client);
diff --git a/check/magma/servers/http/http_check_network.c b/check/magma/servers/http/http_check_network.c
index 7aca3d38..5d823c4f 100644
--- a/check/magma/servers/http/http_check_network.c
+++ b/check/magma/servers/http/http_check_network.c
@@ -32,8 +32,8 @@ bool_t check_http_read_to_empty(client_t *client) {
*/
size_t check_http_content_length_get(client_t *client) {
- size_t location = 0, content_length = 0;
placer_t cl_placer = pl_null();
+ size_t location = 0, content_length = 0;
while (st_cmp_ci_starts(&(client->line), NULLER("Content-Length:")) != 0) {
if (client_read_line(client) <= 2) return content_length;