From b5e5856eb0fc9d602968c9000a531e35274a94d4 Mon Sep 17 00:00:00 2001 From: Baptiste Daroussin Date: Wed, 15 Feb 2023 10:13:07 +0100 Subject: [PATCH] test: add a helper function for any kind or email reception --- tests/mlmmj.c | 32 +------------------------------- tests/mlmmj_tests.c | 40 ++++++++++++++++++++++++++++++++++++++++ tests/mlmmj_tests.h | 1 + 3 files changed, 42 insertions(+), 31 deletions(-) diff --git a/tests/mlmmj.c b/tests/mlmmj.c index 7f82b5c5..6a5921d8 100644 --- a/tests/mlmmj.c +++ b/tests/mlmmj.c @@ -2131,37 +2131,7 @@ ATF_TC_BODY(send_single_mail, tc) ATF_REQUIRE(socketpair(AF_UNIX, SOCK_STREAM, 0, smtppipe) >= 0); pid_t p = atf_utils_fork(); if (p == 0) { - int s = fakesmtp(smtppipe[1]); - int c; - struct sockaddr_in cl; - socklen_t clsize = 0; - c = accept(s, (struct sockaddr *) &cl, &clsize); - if (c == -1) - err(5, "accept()"); - dprintf(c, "220 me fake smtp\n"); - const char *replies[] = { - "250-hostname.net\n" - "250-PIPELINEING\n" - "250-SIZE 20480000\n" - "250-ETRN\n" - "250-STARTTLS\n" - "250-ENHANCEDSTATUSCODES\n" - "250-8BITMIME\n" - "250-DSN\n" - "250-SMTPUTF8\n" - "250 CHUNKING\n", - "250 2.1.0 OK\n", - "250 2.1.0 OK\n", - "350 2.1.0 OK\n", - NULL, - NULL, - NULL, - NULL, - NULL, - "250 2.1.0 OK\n", - "221 2.0.0 bye\n", - }; - read_print_reply(c, replies, NELEM(replies)); + single_mail_reception(smtppipe[1]); exit(0); } close(smtppipe[1]); diff --git a/tests/mlmmj_tests.c b/tests/mlmmj_tests.c index 580a2721..89130197 100644 --- a/tests/mlmmj_tests.c +++ b/tests/mlmmj_tests.c @@ -106,3 +106,43 @@ read_print_reply(int fd, const char **replies, size_t nreplies) free(r); } } + +void +single_mail_reception(int fd) +{ + int s = fakesmtp(fd); + int c; + char *r; + struct sockaddr_in cl; + socklen_t clsize = 0; + c = accept(s, (struct sockaddr *) &cl, &clsize); + if (c == -1) + exit(5); + dprintf(c, "220 me fake smtp\n"); + + const char *replies[] = { + "250-hostname.net\n" + "250-PIPELINEING\n" + "250-SIZE 20480000\n" + "250-ETRN\n" + "250-STARTTLS\n" + "250-ENHANCEDSTATUSCODES\n" + "250-8BITMIME\n" + "250-DSN\n" + "250-SMTPUTF8\n" + "250 CHUNKING\n", + "250 2.1.0 OK\n", + "250 2.1.0 OK\n", + "350 2.1.0 OK\n", + }; + read_print_reply(c, replies, NELEM(replies)); + while ((r = atf_utils_readline(c)) != NULL) { + printf("%s\n", r); + if (strcmp(r, ".\r") == 0) { + dprintf(c, "250 2.1.0 OK\n"); + break; + } + } + const char *rep = "221 2.0.0 bye\n"; + read_print_reply(c, &rep, 1); +} diff --git a/tests/mlmmj_tests.h b/tests/mlmmj_tests.h index 35a8320e..f6431d7e 100644 --- a/tests/mlmmj_tests.h +++ b/tests/mlmmj_tests.h @@ -32,3 +32,4 @@ void init_ml(bool complete); int fakesmtp(int pipe); void read_print_reply(int fd, const char **replies, size_t nreplies); +void single_mail_reception(int fd); -- 2.47.3