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 19:39:50 +0300
committerjpadkins <jacobpadkins@gmail.com>2017-04-05 19:39:50 +0300
commita973ef09fdb35da21dc8db603d4d71d6e8e38577 (patch)
treeeb8accb1dc6a6442d5e24748a68d61537863ecf7 /check/magma
parentb9fa02bcaa4415aad1db91f2c6f309f08a13a9ee (diff)
In the middle of implementing the camel basic test
Diffstat (limited to 'check/magma')
-rw-r--r--check/magma/servers/camel/camel_check.c3
-rw-r--r--check/magma/servers/camel/camel_check.h3
-rw-r--r--check/magma/servers/camel/camel_check_network.c179
3 files changed, 154 insertions, 31 deletions
diff --git a/check/magma/servers/camel/camel_check.c b/check/magma/servers/camel/camel_check.c
index 18901436..b6f7e936 100644
--- a/check/magma/servers/camel/camel_check.c
+++ b/check/magma/servers/camel/camel_check.c
@@ -10,8 +10,7 @@
START_TEST (check_camel_auth_s) {
- //log_disable();
- log_enable();
+ log_disable();
bool_t outcome = true;
client_t *client = NULL;
server_t *server = NULL;
diff --git a/check/magma/servers/camel/camel_check.h b/check/magma/servers/camel/camel_check.h
index a8ef139b..ff372cfb 100644
--- a/check/magma/servers/camel/camel_check.h
+++ b/check/magma/servers/camel/camel_check.h
@@ -9,7 +9,8 @@
/// camel_check_network.c
bool_t check_camel_status(client_t *client);
-stringer_t* check_camel_read_json(client_t *client, size_t length);
+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);
diff --git a/check/magma/servers/camel/camel_check_network.c b/check/magma/servers/camel/camel_check_network.c
index cf48594b..756156b5 100644
--- a/check/magma/servers/camel/camel_check_network.c
+++ b/check/magma/servers/camel/camel_check_network.c
@@ -57,13 +57,14 @@ stringer_t * check_camel_json_read(client_t *client, size_t length) {
return json;
}
-bool_t check_camel_json_submit(client_t *client, stringer_t *json, bool_t keep_alive) {
+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\n" \
- "Content-Length: %u\r\nContent-Type: application/x-www-form-urlencoded\r\nConnection: %s\r\n\r\n%s";
+ 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";
- if (client_print(client, message, st_length_get(json), (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), 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) {
return false;
}
@@ -102,16 +103,25 @@ bool_t check_camel_login(client_t *client, uint32_t id, stringer_t *user, string
else if (!(parsed_json = json_loads_d(st_char_get(json), 0, &json_err)) || !(result = json_object_get_d(parsed_json, "result")) ||
!(session = json_object_get_d(result, "session"))) {
+ st_cleanup(json);
+ if (result) mm_free(result);
+ if (session) mm_free(session);
+ if (parsed_json) mm_free(parsed_json);
return false;
}
else if (cookie && st_sprint(cookie, "%s", json_string_value_d(session)) == -1) {
+
+ mm_free(result);
+ mm_free(session);
+ st_cleanup(json);
+ mm_free(parsed_json);
return false;
}
st_cleanup(json);
- if (result) mm_free(result);
- if (session) mm_free(session);
- if (parsed_json) mm_free(parsed_json);
+ mm_free(result);
+ mm_free(session);
+ mm_free(parsed_json);
return true;
}
@@ -127,32 +137,145 @@ bool_t check_camel_auth_sthread(client_t *client, stringer_t *errmsg) {
return false;
}
- st_cleanup(cookie);
client_close(client);
-
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(client, commands[i], i) != ns_length_get(commands[i]) - 2 + uint32_digits(i)) {
-//
-// }
-// }
+ 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\"}}"),
+ NULLER("{\"id\":3,\"method\":\"config.load\"}"),
+ NULLER("{\"id\":4,\"method\":\"config.edit\",\"params\":{\"key\":null}}"),
+ NULLER("{\"id\":5,\"method\":\"config.load\"}"),
+ NULLER("{\"id\":6,\"method\":\"config.edit\",\"params\":{\"key.3943\":\"18346\"}"),
+ NULLER("{\"id\":7,\"method\":\"folders.add\",\"params\":{\"context\":\"contacts\",\"name\":\"Flight Crew\"}}"),
+ NULLER("{\"id\":8,\"method\":\"folders.list\",\"params\":{\"context\":\"contacts\"}}"),
+ NULLER("{\"id\":9,\"method\":\"contacts.add\",\"params\":{\"folderID\":37, \"contact\":{\"name\":\"Jenna\", \"email\":\"jenna@jameson.com\"}}}"),
+ NULLER("{\"id\":10,\"method\":\"contacts.copy\",\"params\":{\"sourceFolderID\":37, \"targetFolderID\":37, \"contactID\": 1 }}"),
+ NULLER("{\"id\":11,\"method\":\"contacts.list\",\"params\":{\"folderID\":37 }}"),
+ NULLER("{\"id\":12,\"method\":\"contacts.edit\",\"params\":{\"folderID\":37, \"contactID\":1, \"contact\":{\"name\":\"Jenna Marie Massoli\", \"email\":\"jenna+private-chats@jameson.com\"}}}"),
+ NULLER("{\"id\":13,\"method\":\"contacts.load\",\"params\":{\"folderID\":37, \"contactID\":2 }}"),
+ NULLER("{\"id\":14,\"method\":\"contacts.edit\",\"params\":{\"folderID\":37, \"contactID\":1, \"contact\":{\"name\":\"Jenna\", \"email\":\"jenna@jameson.com\", \"phone\":\"2145551212\", \"notes\":\"The Tuesday night hottie!\"}}}"),
+ NULLER("{\"id\":15,\"method\":\"contacts.load\",\"params\":{\"folderID\":37, \"contactID\":2 }}"),
+ NULLER("{\"id\":16,\"method\":\"folders.add\",\"params\":{\"context\":\"contacts\",\"name\":\"Lovers\"}}"),
+ NULLER("{\"id\":17,\"method\":\"contacts.move\",\"params\":{ \"contactID\":1, \"sourceFolderID\":37, \"targetFolderID\": }}"),
+ NULLER("{\"id\":18,\"method\":\"contacts.list\",\"params\":{\"folderID\":37 }}"),
+ NULLER("{\"id\":19,\"method\":\"contacts.list\",\"params\":{\"folderID\": }}"),
+ NULLER("{\"id\":20,\"method\":\"contacts.remove\",\"params\":{\"folderID\":37, \"contactID\":1 }}"),
+ NULLER("{\"id\":21,\"method\":\"contacts.remove\",\"params\":{\"folderID\":, \"contactID\": }}"),
+ NULLER("{\"id\":22,\"method\":\"contacts.list\",\"params\":{\"folderID\": }}"),
+ NULLER("{\"id\":23,\"method\":\"folders.remove\",\"params\":{\"context\":\"contacts\",\"folderID\":37 }}"),
+ NULLER("{\"id\":24,\"method\":\"folders.remove\",\"params\":{\"context\":\"contacts\",\"folderID\": }}"),
+ NULLER("{\"id\":25,\"method\":\"cookies\"}"),
+ NULLER("{\"id\":26,\"method\":\"alert.list\"}"),
+ NULLER("{\"id\":27,\"method\":\"alert.acknowledge\",\"params\":[1,7,13]}"),
+ NULLER("{\"id\":28,\"method\":\"alert.list\"}"),
+ NULLER("{\"id\":29,\"method\":\"folders.list\",\"params\":{\"context\":\"mail\"}}"),
+ NULLER("{\"id\":30,\"method\":\"folders.list\",\"params\":{\"context\":\"settings\"}}"),
+ NULLER("{\"id\":31,\"method\":\"folders.list\",\"params\":{\"context\":\"help\"}}"),
+ NULLER("{\"id\":32,\"method\":\"folders.add\",\"params\":{\"context\":\"mail\",\"name\":\"Camel\"}}"),
+ NULLER("{\"id\":33,\"method\":\"folders.add\",\"params\":{\"context\":\"mail\",\"parentID\":,\"name\":\"Toe\"}}"),
+ NULLER("{\"id\":34,\"method\":\"folders.add\",\"params\":{\"context\":\"mail\",\"parentID\":,\"name\":\"Rocks\"}}"),
+ NULLER("{\"id\":35,\"method\":\"folders.rename\",\"params\":{\"context\":\"mail\",\"folderID\":,\"name\":\"Dames.Rock\"}}"),
+ NULLER("{\"id\":36,\"method\":\"folders.rename\",\"params\":{\"context\":\"mail\",\"folderID\":,\"name\":\"Clams\"}}"),
+ NULLER("{\"id\":37,\"method\":\"folders.remove\",\"params\":{\"context\":\"mail\",\"folderID\": }}"),
+ NULLER("{\"id\":38,\"method\":\"folders.remove\",\"params\":{\"context\":\"mail\",\"folderID\": }}"),
+ NULLER("{\"id\":39,\"method\":\"folders.remove\",\"params\":{\"context\":\"mail\",\"folderID\": }}"),
+ NULLER("{\"id\":40,\"method\":\"folders.remove\",\"params\":{\"context\":\"mail\",\"folderID\": }}"),
+ NULLER("{\"id\":41,\"method\":\"aliases\"}"),
+ NULLER("{\"id\":42,\"method\":\"folders.add\",\"params\":{\"context\":\"mail\",\"name\":\"Duplicate\"}}"),
+ NULLER("{\"id\":43,\"method\":\"messages.copy\",\"params\":{\"messageIDs\": [], \"sourceFolderID\":1, \"targetFolderID\": }}"),
+ NULLER("{\"id\":44,\"method\":\"messages.copy\",\"params\":{\"messageIDs\": [], \"sourceFolderID\":1, \"targetFolderID\": }}"),
+ NULLER("{\"id\":45,\"method\":\"folders.remove\",\"params\":{\"context\":\"mail\",\"folderID\": }}"),
+ NULLER("{\"id\":46,\"method\":\"folders.add\",\"params\":{\"context\":\"mail\",\"name\":\"Duplicate\"}}"),
+ NULLER("{\"id\":47,\"method\":\"messages.load\",\"params\":{\"messageID\": , \"folderID\":1, \"sections\": [\"meta\", \"source\", \"security\", \"server\", \"header\", \"body\", \"attachments\" ]}}"),
+ NULLER("{\"id\":48,\"method\":\"messages.copy\",\"params\":{\"messageIDs\": [], \"sourceFolderID\":1, \"targetFolderID\": }}"),
+ NULLER("{\"id\":49,\"method\":\"folders.remove\",\"params\":{\"context\":\"mail\",\"folderID\": }}"),
+ NULLER("{\"id\":50,\"method\":\"messages.flag\",\"params\":{\"action\":\"add\", \"flags\":[\"flagged\"], \"messageIDs\": [], \"folderID\":1 }}"),
+ NULLER("{\"id\":51,\"method\":\"messages.tags\",\"params\":{\"action\":\"add\", \"tags\":[\"girlie\",\"girlie-6169\"], \"messageIDs\": [], \"folderID\":1 }}"),
+ NULLER("{\"id\":52,\"method\":\"messages.flag\",\"params\":{\"action\":\"list\", \"messageIDs\": [], \"folderID\":1 }}"),
+ NULLER("{\"id\":53,\"method\":\"messages.tags\",\"params\":{\"action\":\"list\", \"messageIDs\": [], \"folderID\":1 }}"),
+ NULLER("{\"id\":54,\"method\":\"messages.list\",\"params\":{\"folderID\":1 }}"),
+ NULLER("{\"id\":55,\"method\":\"folders.tags\",\"params\":{\"context\":\"mail\",\"folderID\":1 }}"),
+ NULLER("{\"id\":56,\"method\":\"folders.add\",\"params\":{\"context\":\"mail\",\"name\":\"Mover\"}}"),
+ NULLER("{\"id\":57,\"method\":\"messages.move\",\"params\":{\"messageIDs\": [], \"sourceFolderID\": 1, \"targetFolderID\": }}"),
+ NULLER("{\"id\":58,\"method\":\"messages.remove\",\"params\":{\"folderID\":,\"messageIDs\":[]}}"),
+ NULLER("{\"id\":59,\"method\":\"folders.remove\",\"params\":{\"context\":\"mail\",\"folderID\": }}"),
+ NULLER("{\"id\":60,\"method\":\"logout\"}")
+ };
+
+ 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;
+ }
+
+ // 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))) {
+
+ return false;
+ }
+
+ st_free(json);
+
+ // Test config.load
+ if (!check_camel_json_write(client, commands[1], 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))) {
+
+ return false;
+ }
+
+ st_free(json);
+
+ // Test config.edit { key = "key", "value" = null }
+ if (!check_camel_json_write(client, commands[2], 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))) {
+
+ return false;
+ }
+
+ st_free(json);
+
+ // Test config.load
+ if (!check_camel_json_write(client, commands[3], 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))) {
+
+ return false;
+ }
+
+ st_free(json);
+
+ // Test config.edit { key = "key.3943", value = "18346" }
+ if (!check_camel_json_write(client, commands[4], 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))) {
+
+ return false;
+ }
+
+ st_free(json);
+
+ // Test folders.add { context = "contacts", name = "Flight Crew" }
+ if (!check_camel_json_write(client, commands[5], 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)) ||
+ json_unpack_d(json, "{s:{s:i}}", "result", "folderID", &folderid)) {
+
+ return false;
+ }
+
+ st_free(json);
+
+ // Test folders.list { context = "contacts" }
+ if (!check_camel_json_write(client, commands[6], 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)) ||
+ json_unpack_d(json, "{s:[{s:i}]}", "result", "folderID", &folderid_buff) || folderid != folderid_buff) {
+
+ return false;
+ }
+
+ st_free(json);
return true;
}