diff options
author | jpadkins <jacobpadkins@gmail.com> | 2017-03-20 18:06:28 +0300 |
---|---|---|
committer | jpadkins <jacobpadkins@gmail.com> | 2017-03-20 18:06:28 +0300 |
commit | d2273a05020345924f704c9124fa46932c3e1fe2 (patch) | |
tree | 78c9097eb7c67d68e9369a3b9e6bf52b5c23bc68 /check/magma/servers | |
parent | 19e125587589d435a711594d9cd3860ae4c72d47 (diff) |
Added TLS variants to SMTP and IMAP basic network tests
Diffstat (limited to 'check/magma/servers')
-rw-r--r-- | check/magma/servers/imap/imap_check.c | 31 | ||||
-rw-r--r-- | check/magma/servers/imap/imap_check.h | 2 | ||||
-rw-r--r-- | check/magma/servers/imap/imap_check_network.c | 7 | ||||
-rw-r--r-- | check/magma/servers/pop/pop_check.c | 2 | ||||
-rw-r--r-- | check/magma/servers/pop/pop_check_network.c | 2 | ||||
-rw-r--r-- | check/magma/servers/smtp/auth_check.c | 32 | ||||
-rw-r--r-- | check/magma/servers/smtp/smtp_check.c | 36 | ||||
-rw-r--r-- | check/magma/servers/smtp/smtp_check.h | 6 | ||||
-rw-r--r-- | check/magma/servers/smtp/smtp_check_network.c | 34 |
9 files changed, 94 insertions, 58 deletions
diff --git a/check/magma/servers/imap/imap_check.c b/check/magma/servers/imap/imap_check.c index 6533c699..38d0bed0 100644 --- a/check/magma/servers/imap/imap_check.c +++ b/check/magma/servers/imap/imap_check.c @@ -6,7 +6,7 @@ #include "magma_check.h" -START_TEST (check_imap_network_basic_s) { +START_TEST (check_imap_network_basic_tcp_s) { log_disable(); bool_t outcome = true; @@ -14,14 +14,34 @@ START_TEST (check_imap_network_basic_s) { stringer_t *errmsg = MANAGEDBUF(1024); if (!(server = servers_get_by_protocol(IMAP, false))) { - st_sprint(errmsg, "No IMAP servers were configured and available for testing."); + st_sprint(errmsg, "No IMAP servers were configured to support TCP connections."); outcome = false; } else if (status()) { - outcome = check_imap_network_basic_sthread(errmsg, server->network.port); + outcome = check_imap_network_basic_sthread(errmsg, server->network.port, false); } - log_test("IMAP / NETWORK / BASIC / SINGLE THREADED:", errmsg); + log_test("IMAP / NETWORK / BASIC / TCP / SINGLE THREADED:", errmsg); + ck_assert_msg(outcome, st_char_get(errmsg)); +} +END_TEST + +START_TEST (check_imap_network_basic_tls_s) { + + log_disable(); + bool_t outcome = true; + server_t *server = NULL; + stringer_t *errmsg = MANAGEDBUF(1024); + + if (!(server = servers_get_by_protocol(IMAP, true))) { + st_sprint(errmsg, "No IMAP servers were configured to support TLS connections."); + outcome = false; + } + else if (status()) { + outcome = check_imap_network_basic_sthread(errmsg, server->network.port, true); + } + + log_test("IMAP / NETWORK / BASIC / TLS / SINGLE THREADED:", errmsg); ck_assert_msg(outcome, st_char_get(errmsg)); } END_TEST @@ -30,7 +50,8 @@ Suite * suite_check_imap(void) { Suite *s = suite_create("\tIMAP"); - suite_check_testcase(s, "IMAP", "IMAP Network Basic/S", check_imap_network_basic_s); + suite_check_testcase(s, "IMAP", "IMAP Network Basic/ TCP/S", check_imap_network_basic_tcp_s); + suite_check_testcase(s, "IMAP", "IMAP Network Basic/ TLS/S", check_imap_network_basic_tls_s); return s; } diff --git a/check/magma/servers/imap/imap_check.h b/check/magma/servers/imap/imap_check.h index 8ea8c10f..21140d39 100644 --- a/check/magma/servers/imap/imap_check.h +++ b/check/magma/servers/imap/imap_check.h @@ -9,7 +9,7 @@ /// imap_check_network.c bool_t check_imap_client_read_lines_to_end(client_t *client, chr_t *tag); -bool_t check_imap_network_basic_sthread(stringer_t *errmsg, uint32_t port); +bool_t check_imap_network_basic_sthread(stringer_t *errmsg, uint32_t port, bool_t secure); Suite * suite_check_imap(void); diff --git a/check/magma/servers/imap/imap_check_network.c b/check/magma/servers/imap/imap_check_network.c index 21192b51..877696c9 100644 --- a/check/magma/servers/imap/imap_check_network.c +++ b/check/magma/servers/imap/imap_check_network.c @@ -30,13 +30,14 @@ bool_t check_imap_client_read_lines_to_end(client_t *client, chr_t *tag) { return outcome; } -bool_t check_imap_network_basic_sthread(stringer_t *errmsg, uint32_t port) { +bool_t check_imap_network_basic_sthread(stringer_t *errmsg, uint32_t port, bool_t secure) { client_t *client = NULL; // Check the initial response. - if (!(client = client_connect("localhost", port)) || !net_set_timeout(client->sockd, 20, 20) || - client_read_line(client) <= 0 || (client->status != 1) || st_cmp_cs_starts(&(client->line), NULLER("* OK"))) { + if (!(client = client_connect("localhost", port)) || (secure && (client_secure(client) == -1)) || + !net_set_timeout(client->sockd, 20, 20) || client_read_line(client) <= 0 || (client->status != 1) || + st_cmp_cs_starts(&(client->line), NULLER("* OK"))) { st_sprint(errmsg, "Failed to connect with the IMAP server."); client_close(client); diff --git a/check/magma/servers/pop/pop_check.c b/check/magma/servers/pop/pop_check.c index 613eb2d6..2f495393 100644 --- a/check/magma/servers/pop/pop_check.c +++ b/check/magma/servers/pop/pop_check.c @@ -17,7 +17,7 @@ START_TEST (check_pop_network_basic_tcp_s) { st_sprint(errmsg, "No POP servers were configured to support TCP connections."); outcome = false; } - else if (status() && check_pop_network_basic_sthread(errmsg, tcp->network.port, false)) { + else if (status() && !check_pop_network_basic_sthread(errmsg, tcp->network.port, false)) { outcome = false; } diff --git a/check/magma/servers/pop/pop_check_network.c b/check/magma/servers/pop/pop_check_network.c index 16d84fc3..973649df 100644 --- a/check/magma/servers/pop/pop_check_network.c +++ b/check/magma/servers/pop/pop_check_network.c @@ -27,7 +27,7 @@ bool_t check_pop_network_basic_sthread(stringer_t *errmsg, uint32_t port, bool_t client_t *client = NULL; // Connect the client. - if (!(client = client_connect("localhost", port)) || (secure && client_secure(client)) || + if (!(client = client_connect("localhost", port)) || (secure && (client_secure(client) == -1)) || !net_set_timeout(client->sockd, 20, 20) || client_read_line(client) <= 0 || client_status(client) != 1 || st_cmp_cs_starts(&(client->line), NULLER("+OK"))) { diff --git a/check/magma/servers/smtp/auth_check.c b/check/magma/servers/smtp/auth_check.c deleted file mode 100644 index 7760d5a1..00000000 --- a/check/magma/servers/smtp/auth_check.c +++ /dev/null @@ -1,32 +0,0 @@ -/** - * @file /check/magma/servers/smtp/auth_check.c - * - * @brief SMTP auth test functions. - */ - -#include "magma_check.h" - -bool_t check_smtp_auth_from_field_sthread(stringer_t *errmsg) { - - client_t *client = NULL; - - // Connect the client. - if (!(client = client_connect("localhost", port)) || client_read_line(client) <= 0 || - client_status(client) != 1 || st_cmp_cs_starts(&(client->line), NULLER("220")) || - !st_search_cs(&(client->line), NULLER(" ESMTP "), &location)) { - - st_sprint(errmsg, "Failed to connect with the SMTP server."); - client_close(client); - return false; - } - // Issue EHLO. - else if (client_print(client, "EHLO localhost\r\n") != 16 || !check_smtp_client_read_line_to_end(client) || - client_status(client) != 1 || st_cmp_cs_starts(&(client->line), NULLER("250"))) { - - st_sprint(errmsg, "Failed to return successful status after EHLO."); - client_close(client); - return false; - } - - return true; -} diff --git a/check/magma/servers/smtp/smtp_check.c b/check/magma/servers/smtp/smtp_check.c index cd5b169b..836110ad 100644 --- a/check/magma/servers/smtp/smtp_check.c +++ b/check/magma/servers/smtp/smtp_check.c @@ -7,7 +7,7 @@ #include "magma_check.h" -START_TEST (check_smtp_network_basic_s) { +START_TEST (check_smtp_network_basic_tcp_s) { log_disable(); bool_t outcome = true; @@ -15,14 +15,34 @@ START_TEST (check_smtp_network_basic_s) { stringer_t *errmsg = MANAGEDBUF(1024); if (!(server = servers_get_by_protocol(SMTP, false))) { - st_sprint(errmsg, "No SMTP servers were configured and available for testing."); + st_sprint(errmsg, "No SMTP servers were configured to support TCP connections."); outcome = false; } else if (status()) { - outcome = check_smtp_network_simple_sthread(errmsg, server->network.port); + outcome = check_smtp_network_basic_sthread(errmsg, server->network.port, false); } - log_test("SMTP / NETWORK / BASIC / SINGLE THREADED:", errmsg); + log_test("SMTP / NETWORK / BASIC / TCP / SINGLE THREADED:", errmsg); + ck_assert_msg(outcome, st_char_get(errmsg)); +} +END_TEST + +START_TEST (check_smtp_network_basic_tls_s) { + + log_disable(); + bool_t outcome = true; + server_t *server = NULL; + stringer_t *errmsg = MANAGEDBUF(1024); + + if (!(server = servers_get_by_protocol(SMTP, true))) { + st_sprint(errmsg, "No SMTP servers were configured to support TLS connections."); + outcome = false; + } + else if (status()) { + outcome = check_smtp_network_basic_sthread(errmsg, server->network.port, true); + } + + log_test("SMTP / NETWORK / BASIC / TLS / SINGLE THREADED:", errmsg); ck_assert_msg(outcome, st_char_get(errmsg)); } END_TEST @@ -74,6 +94,7 @@ START_TEST (check_smtp_auth_from_field_s) { log_disable(); bool_t outcome = true; + server_t *server = NULL; stringer_t *errmsg = MANAGEDBUF(1024); if (!(server = servers_get_by_protocol(SMTP, false))) { @@ -84,7 +105,7 @@ START_TEST (check_smtp_auth_from_field_s) { outcome = check_smtp_auth_from_field_sthread(errmsg, server->network.port); } - log_test("SMTP / AUTH / FROM FIELD / SINGLE THREADED:", errmsg); + log_test("SMTP / NETWORK / AUTH / FROM FIELD / SINGLE THREADED:", errmsg); ck_assert_msg(outcome, st_char_get(errmsg)); } END_TEST @@ -96,8 +117,9 @@ Suite * suite_check_smtp(void) { suite_check_testcase(s, "SMTP", "SMTP Accept Message/S", check_smtp_accept_store_message_s); suite_check_testcase(s, "SMTP", "SMTP Checkers Greylist/S", check_smtp_checkers_greylist_s); suite_check_testcase(s, "SMTP", "SMTP Checkers Filters/S", check_smtp_checkers_filters_s); - suite_check_testcase(s, "SMTP", "SMTP Network Basic/S", check_smtp_network_basic_s); - suite_check_testcase(s, "SMTP", "SMTP Auth From Field/S", check_smtp_auth_from_field_s); + suite_check_testcase(s, "SMTP", "SMTP Network Basic/ TCP/S", check_smtp_network_basic_tcp_s); + suite_check_testcase(s, "SMTP", "SMTP Network Basic/ TLS/S", check_smtp_network_basic_tls_s); + suite_check_testcase(s, "SMTP", "SMTP Network Auth From Field/S", check_smtp_auth_from_field_s); return s; } diff --git a/check/magma/servers/smtp/smtp_check.h b/check/magma/servers/smtp/smtp_check.h index 2da001f5..e8b6862d 100644 --- a/check/magma/servers/smtp/smtp_check.h +++ b/check/magma/servers/smtp/smtp_check.h @@ -10,9 +10,6 @@ /// accept_check.c bool_t check_smtp_accept_message_sthread(stringer_t *errmsg); -/// auth_check.c -bool_t check_smtp_auth_from_field_sthread(stringer_t *errmsg); - /// checkers_check.c bool_t check_smtp_checkers_greylist_sthread(stringer_t *errmsg); bool_t check_smtp_checkers_regex_sthread(stringer_t *errmsg); @@ -20,7 +17,8 @@ bool_t check_smtp_checkers_filters_sthread(stringer_t *errmsg, int_t action, int /// smtp_check_network.c bool_t check_smtp_client_read_line_to_end(client_t *client); -bool_t check_smtp_network_simple_sthread(stringer_t *errmsg, uint32_t port); +bool_t check_smtp_network_basic_sthread(stringer_t *errmsg, uint32_t port, bool_t secure); +bool_t check_smtp_auth_from_field_sthread(stringer_t *errmsg, uint32_t port); Suite * suite_check_smtp(void); diff --git a/check/magma/servers/smtp/smtp_check_network.c b/check/magma/servers/smtp/smtp_check_network.c index 30ecb66a..0664ceb4 100644 --- a/check/magma/servers/smtp/smtp_check_network.c +++ b/check/magma/servers/smtp/smtp_check_network.c @@ -24,15 +24,15 @@ bool_t check_smtp_client_read_line_to_end(client_t *client) { return false; } -bool_t check_smtp_network_simple_sthread(stringer_t *errmsg, uint32_t port) { +bool_t check_smtp_network_basic_sthread(stringer_t *errmsg, uint32_t port, bool_t secure) { size_t location = 0; client_t *client = NULL; // Test the connect banner. - if (!(client = client_connect("localhost", port)) || !net_set_timeout(client->sockd, 20, 20) || - client_read_line(client) <= 0 || client_status(client) != 1 || st_cmp_cs_starts(&(client->line), NULLER("220")) || - !st_search_cs(&(client->line), NULLER(" ESMTP "), &location)) { + if (!(client = client_connect("localhost", port)) || (secure && (client_secure(client) == -1)) || + !net_set_timeout(client->sockd, 20, 20) || client_read_line(client) <= 0 || client_status(client) != 1 || + st_cmp_cs_starts(&(client->line), NULLER("220")) || !st_search_cs(&(client->line), NULLER(" ESMTP "), &location)) { st_sprint(errmsg, "Failed to connect with the SMTP server."); client_close(client); @@ -107,3 +107,29 @@ bool_t check_smtp_network_simple_sthread(stringer_t *errmsg, uint32_t port) { return true; } + +bool_t check_smtp_auth_from_field_sthread(stringer_t *errmsg, uint32_t port) { + + size_t location = 0; + client_t *client = NULL; + + // Connect the client. + if (!(client = client_connect("localhost", port)) || client_read_line(client) <= 0 || + client_status(client) != 1 || st_cmp_cs_starts(&(client->line), NULLER("220")) || + !st_search_cs(&(client->line), NULLER(" ESMTP "), &location)) { + + st_sprint(errmsg, "Failed to connect with the SMTP server."); + client_close(client); + return false; + } + // Issue EHLO. + else if (client_print(client, "EHLO localhost\r\n") != 16 || !check_smtp_client_read_line_to_end(client) || + client_status(client) != 1 || st_cmp_cs_starts(&(client->line), NULLER("250"))) { + + st_sprint(errmsg, "Failed to return successful status after EHLO."); + client_close(client); + return false; + } + + return true; +} |