Ejemplo n.º 1
0
        public void EmailMessages_CreateForward_HtmlEncoding()
        {
            EmailMessage receivedEmail = EmailMessageT.CreateEmailMessage(0, fromAddress: "*****@*****.**", toAddress: "*****@*****.**"
                                                                          , subject: "=?UTF-8?Q?nu=C2=A4=20=C3=82=20=C3=80=20=C2=A2?=");

            receivedEmail.RawEmailIn = @"MIME-Version: 1.0
Date: Thu, 10 Oct 2019 06:27:02 -0700
Message-ID: <CAALTEpk8yAUh7pO=FzgCy0r0b20Fi5vefw_8yhRvstMfTvRtAQ@mail.gmail.com>
Subject: & subject
From: =?UTF-8?Q?Bobby_Wiggleh=C3=81rt?= <*****@*****.**>
To: Bobby Wigglehart <*****@*****.**>
Content-Type: multipart/alternative; boundary=""0000000000005e7d3705948e5be6""
X-Antivirus: AVG (VPS 191009-2, 10/09/2019), Inbound message
X-Antivirus-Status: Clean

--0000000000005e7d3705948e5be6
Content-Type: text/plain; charset=""UTF-8""

non-breaking space  
less than <
greater than >
ampersand &

--0000000000005e7d3705948e5be6
Content-Type: text/html; charset=""UTF-8""
Content-Transfer-Encoding: quoted-printable

<div dir=3D""ltr"">non-breaking space &nbsp;<div>less than &lt;</div><div>greater than &gt;</div><div>ampersand &amp;=C2=A0</div></div>

--0000000000005e7d3705948e5be6--";
            EmailAddress emailAddress = new EmailAddress()
            {
                EmailUsername = "******"
            };
            EmailMessage forwardEmail = EmailMessages.CreateForward(receivedEmail, emailAddress);

            Assert.AreEqual(emailAddress.EmailUsername, forwardEmail.FromAddress);
            Assert.AreEqual("FWD: nu¤ Â À ¢", forwardEmail.Subject);
            Assert.AreEqual("\r\n\r\n\r\nOn " + DateTime.MinValue.ToString() + " [email protected] sent:\r\n>non-breaking space  less than <greater than >ampersand &"
                            , forwardEmail.BodyText);
        }
Ejemplo n.º 2
0
        public void AlertItems_CreateAlertsForNewWebmail()
        {
            //Test Sections:
            //Create 5 users, part of 2 providers.
            //Test adding an email for each provider, then clear alerts table.
            //Test adding 4 emails for each provider
            //Test adding 3 additional emails for 1 provider
            //Test marking 2 emails as read for 1 provider
            //Test marking all emails as read for 1 provider
            EmailMessageT.ClearEmailMessageTable();            //Clear out the emailmessage table
            List <Userod> listTestUsers = new List <Userod>();

            //Create or reuse 5 users, and set their provnum to 1 or 2.  There'll be 3 provnum=1 and 2 provnum=2
            //In queries always filter by usernum because there may be users left over from other/old tests.
            for (int i = 0; i < 5; i++)
            {
                Userod user = UserodT.CreateUser();
                user.ProvNum = i % 2 + 1;
                listTestUsers.Add(user);
                Userods.Update(user);
            }
            listTestUsers = listTestUsers.Distinct().ToList();
            long examplePatnum = 2;             //Patnum can be anything, needed for webmail.

            //Create one email for each provider.
            foreach (long provnum in listTestUsers.Select(x => x.ProvNum).Distinct())
            {
                EmailMessageT.CreateWebMail(provnum, examplePatnum);
            }
            AlertItems_CreateAlertsForWebmailMethodCall();
            //Count the total # of alertitem entries, not what the description is.
            string alertCount = DataCore.GetScalar("SELECT COUNT(*) FROM alertitem WHERE UserNum IN (" + string.Join(",", listTestUsers.Select(x => POut.Long(x.UserNum)))
                                                   + ") AND Type=" + POut.Int((int)AlertType.WebMailRecieved));

            Assert.AreEqual("5", alertCount);
            //
            //Clear out ALERT table and add some new emails
            AlertItemT.ClearAlertItemTable();
            foreach (long provnum in listTestUsers.Select(x => x.ProvNum).Distinct())
            {
                EmailMessageT.CreateWebMail(provnum, examplePatnum);
                EmailMessageT.CreateWebMail(provnum, examplePatnum);
                EmailMessageT.CreateWebMail(provnum, examplePatnum);
                EmailMessageT.CreateWebMail(provnum, examplePatnum);
            }
            //This section tests adding more unread emails, and changing the description of the alertitem
            Userod selectedUser = listTestUsers.First();

            AlertItems_CreateAlertsForWebmailMethodCall();
            alertCount = DataCore.GetScalar("SELECT Description FROM alertitem WHERE Type=" + POut.Int((int)AlertType.WebMailRecieved) + " AND UserNum=" + selectedUser.UserNum);
            Assert.AreEqual("5", alertCount);
            //
            //Add 3 more unread emails.
            EmailMessageT.CreateWebMail(selectedUser.ProvNum, examplePatnum);
            EmailMessageT.CreateWebMail(selectedUser.ProvNum, examplePatnum);
            EmailMessageT.CreateWebMail(selectedUser.ProvNum, examplePatnum);
            AlertItems_CreateAlertsForWebmailMethodCall();
            alertCount = DataCore.GetScalar("SELECT Description FROM alertitem WHERE Type=" + POut.Int((int)AlertType.WebMailRecieved) + " AND UserNum=" + selectedUser.UserNum);
            Assert.AreEqual("8", alertCount);
            //
            //Mark 2 of the emails as read, to decrease the amount of unread emails
            string command = "UPDATE emailmessage SET SentOrReceived=" + POut.Int((int)EmailSentOrReceived.WebMailRecdRead) +
                             " WHERE SentOrReceived=" + POut.Int((int)EmailSentOrReceived.WebMailReceived) + " AND ProvNumWebMail=" + POut.Long(selectedUser.ProvNum) + " LIMIT 2";

            DataCore.NonQ(command);
            AlertItems_CreateAlertsForWebmailMethodCall();
            alertCount = DataCore.GetScalar("SELECT Description FROM alertitem WHERE Type=" + POut.Int((int)AlertType.WebMailRecieved) + " AND UserNum=" + selectedUser.UserNum);
            Assert.AreEqual("6", alertCount);
            //
            //Now we mark all of this user's emails as read, as if that user has read all of their webmail.
            command = "UPDATE emailmessage SET SentOrReceived=" + POut.Int((int)EmailSentOrReceived.WebMailRecdRead) +
                      " WHERE SentOrReceived=" + POut.Int((int)EmailSentOrReceived.WebMailReceived) + " AND ProvNumWebMail=" + POut.Long(selectedUser.ProvNum);
            DataCore.NonQ(command);
            AlertItems_CreateAlertsForWebmailMethodCall();
            alertCount = DataCore.GetScalar("SELECT COUNT(*) FROM alertitem WHERE Type=" + POut.Int((int)AlertType.WebMailRecieved) + " AND UserNum=" + selectedUser.UserNum);
            Assert.AreEqual("0", alertCount);
        }