diff options
author | jpadkins <jacobpadkins@gmail.com> | 2017-04-05 19:39:50 +0300 |
---|---|---|
committer | jpadkins <jacobpadkins@gmail.com> | 2017-04-05 19:39:50 +0300 |
commit | a973ef09fdb35da21dc8db603d4d71d6e8e38577 (patch) | |
tree | eb8accb1dc6a6442d5e24748a68d61537863ecf7 /check/magma/servers | |
parent | b9fa02bcaa4415aad1db91f2c6f309f08a13a9ee (diff) |
In the middle of implementing the camel basic test
Diffstat (limited to 'check/magma/servers')
-rw-r--r-- | check/magma/servers/camel/camel_check.c | 3 | ||||
-rw-r--r-- | check/magma/servers/camel/camel_check.h | 3 | ||||
-rw-r--r-- | check/magma/servers/camel/camel_check_network.c | 179 |
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; } |