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-03-17 22:32:37 +0300
committerjpadkins <jacobpadkins@gmail.com>2017-03-17 22:32:37 +0300
commit8e8ddcc2a23abafff04f5b0efdd3a5b42d394ad2 (patch)
tree323ab12c03da12e6bc397e7e32c1e4d47b4e250e /check
parent06200c92e3826a9a7ec20bea52d73cf9e79cb790 (diff)
Dirty commit (before merge) - adding smtp auth tests
Diffstat (limited to 'check')
-rw-r--r--check/magma/servers/smtp/auth_check.c32
-rw-r--r--check/magma/servers/smtp/smtp_check.c20
-rw-r--r--check/magma/servers/smtp/smtp_check.h3
3 files changed, 55 insertions, 0 deletions
diff --git a/check/magma/servers/smtp/auth_check.c b/check/magma/servers/smtp/auth_check.c
new file mode 100644
index 00000000..7760d5a1
--- /dev/null
+++ b/check/magma/servers/smtp/auth_check.c
@@ -0,0 +1,32 @@
+/**
+ * @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 25506ee3..6d1a1267 100644
--- a/check/magma/servers/smtp/smtp_check.c
+++ b/check/magma/servers/smtp/smtp_check.c
@@ -70,6 +70,25 @@ START_TEST (check_smtp_checkers_filters_s) {
}
END_TEST
+START_TEST (check_smtp_auth_from_field_s) {
+
+ log_disable();
+ bool_t outcome = true;
+ 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.");
+ outcome = false;
+ }
+ else if (status()) {
+ outcome = check_smtp_auth_from_field_sthread(errmsg, server->network.port);
+ }
+
+ log_test("SMTP / AUTH / FROM FIELD / SINGLE THREADED:", errmsg);
+ ck_assert_msg(outcome, st_char_get(errmsg));
+}
+END_TEST
+
Suite * suite_check_smtp(void) {
Suite *s = suite_create("\tSMTP");
@@ -78,6 +97,7 @@ Suite * suite_check_smtp(void) {
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);
return s;
}
diff --git a/check/magma/servers/smtp/smtp_check.h b/check/magma/servers/smtp/smtp_check.h
index 9e27bee4..2da001f5 100644
--- a/check/magma/servers/smtp/smtp_check.h
+++ b/check/magma/servers/smtp/smtp_check.h
@@ -10,6 +10,9 @@
/// 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);