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-03-20 18:06:28 +0300
committerjpadkins <jacobpadkins@gmail.com>2017-03-20 18:06:28 +0300
commitd2273a05020345924f704c9124fa46932c3e1fe2 (patch)
tree78c9097eb7c67d68e9369a3b9e6bf52b5c23bc68 /check/magma/servers
parent19e125587589d435a711594d9cd3860ae4c72d47 (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.c31
-rw-r--r--check/magma/servers/imap/imap_check.h2
-rw-r--r--check/magma/servers/imap/imap_check_network.c7
-rw-r--r--check/magma/servers/pop/pop_check.c2
-rw-r--r--check/magma/servers/pop/pop_check_network.c2
-rw-r--r--check/magma/servers/smtp/auth_check.c32
-rw-r--r--check/magma/servers/smtp/smtp_check.c36
-rw-r--r--check/magma/servers/smtp/smtp_check.h6
-rw-r--r--check/magma/servers/smtp/smtp_check_network.c34
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;
+}