From 501eae80fc3bad6eb8021402d90c7a12f3ccb0bb Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Mon, 27 May 2019 20:22:43 +0100 Subject: Add mock mail server to dryice --- icetray/dryice/Jamfile.jam | 6 ++++-- icetray/dryice/mockMail.ice | 17 +++++++++++++++++ icetray/dryice/mockMailServer.cpp | 15 +++++++++++++++ icetray/dryice/mockMailServer.h | 21 +++++++++++++++++++++ icetray/unittests/Jamfile.jam | 1 + icetray/unittests/testIceTrayMail.cpp | 13 +++++++++++++ 6 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 icetray/dryice/mockMail.ice create mode 100644 icetray/dryice/mockMailServer.cpp create mode 100644 icetray/dryice/mockMailServer.h diff --git a/icetray/dryice/Jamfile.jam b/icetray/dryice/Jamfile.jam index 1979337..50d7686 100644 --- a/icetray/dryice/Jamfile.jam +++ b/icetray/dryice/Jamfile.jam @@ -1,8 +1,9 @@ import package ; +iceobj mockMail : mockMail.ice : ../icetray//icetray ; lib dryice : - dryice.cpp - mockPool.cpp + [ glob *.cpp ] + mockMail : ..//adhocutil ../icetray//icetray @@ -10,6 +11,7 @@ lib dryice : ..//IceBox++11 ..//pthread ../icetray//icetray + mockMail : : . ; diff --git a/icetray/dryice/mockMail.ice b/icetray/dryice/mockMail.ice new file mode 100644 index 0000000..3aa9285 --- /dev/null +++ b/icetray/dryice/mockMail.ice @@ -0,0 +1,17 @@ +#ifndef ICETRAY_MOCKMAIL +#define ICETRAY_MOCKMAIL + +#include + +[["ice-prefix"]] +module IceTray { + module Mail { + local sequence Emails; + local interface MockMailServer extends MailServer { + Emails getSentEmails(); + }; + }; +}; + +#endif + diff --git a/icetray/dryice/mockMailServer.cpp b/icetray/dryice/mockMailServer.cpp new file mode 100644 index 0000000..e93befb --- /dev/null +++ b/icetray/dryice/mockMailServer.cpp @@ -0,0 +1,15 @@ +#include "mockMailServer.h" + +namespace IceTray::Mail { + void MockMailServerImpl::sendEmail(const EmailPtr & e) + { + sentEmails.push_back(e); + } + + Emails + MockMailServerImpl::getSentEmails() + { + return sentEmails; + } +} + diff --git a/icetray/dryice/mockMailServer.h b/icetray/dryice/mockMailServer.h new file mode 100644 index 0000000..76906b9 --- /dev/null +++ b/icetray/dryice/mockMailServer.h @@ -0,0 +1,21 @@ +#ifndef ICETRAY_MOCKMAILSERVER_H +#define ICETRAY_MOCKMAILSERVER_H + +#include +#include + +namespace IceTray { + namespace Mail { + class DLL_PUBLIC MockMailServerImpl : public MockMailServer, BasicMailServer { + public: + void sendEmail(const EmailPtr & msg) override; + Emails getSentEmails() override; + + private: + Emails sentEmails; + }; + } +} + +#endif + diff --git a/icetray/unittests/Jamfile.jam b/icetray/unittests/Jamfile.jam index 655acb3..98ddb01 100644 --- a/icetray/unittests/Jamfile.jam +++ b/icetray/unittests/Jamfile.jam @@ -29,6 +29,7 @@ alias testCommon : : : : ../tool//icetray-sql/gcc $(me) ../icetray//icetray + ../dryice//dryice tidy:hicpp-vararg tidy:hicpp-no-array-decay ; diff --git a/icetray/unittests/testIceTrayMail.cpp b/icetray/unittests/testIceTrayMail.cpp index c24b579..5b9fdf5 100644 --- a/icetray/unittests/testIceTrayMail.cpp +++ b/icetray/unittests/testIceTrayMail.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include #include @@ -152,5 +153,17 @@ BOOST_AUTO_TEST_CASE(multipart_alt_imgs) BOOST_CHECK_EQUAL(ms, AdHoc::FileUtils::MemMap(fixtures / "multipart-alt-imgs.eml").sv()); } +BOOST_AUTO_TEST_CASE(mock_mail_server) +{ + e->content = std::make_shared(Headers { + { "X-Source", "single_part" } + }, "text/plain", text_content); + MockMailServerImpl mms; + mms.sendEmail(e); + auto sent = mms.getSentEmails(); + BOOST_CHECK_EQUAL(1, sent.size()); + BOOST_CHECK_EQUAL(sent.front(), e); +} + BOOST_AUTO_TEST_SUITE_END(); -- cgit v1.2.3