Exemplo n.º 1
0
        public void ShouldWriteFailedJSONMessageEmailWithNoSMPTServerAvailable()
        {
            string siteContactEmail = "*****@*****.**";
            string sentTo = "*****@*****.**";
            ContactDetails info = new ContactDetails();
            info.ForumUri = "http://local.bbc.co.uk/dna/api/contactformservice.svc/";
            string[] testValue = { "First Key", "Value Of the First Item In the Message", "JSON string test contact" };
            info.text = "{\"body\":[{\"Key\":\"" + testValue[0] + "\",\"Value\":\"" + testValue[1] + "\"}],\"subject\":\"" + testValue[2] + "\"}";
            info.ID = new Random().Next(10000000);

            string subject = "";
            string body = "";
            string sentFrom = siteContactEmail;

            Contacts.TryParseContactFormMessage(info.text, false, ref subject, ref body, ref sentFrom);

            IList<object[]> FailedEmailDetails = SendEmail(info, siteContactEmail, sentTo);

            CheckDatabaseValues(sentFrom, sentTo, "", subject, body, Contacts.CreateEmailNotes(info), FailedEmailDetails);
        }
Exemplo n.º 2
0
        private IList<object[]> SendEmail(ContactDetails info, string siteContactEmail, string sentTo)
        {
            ISiteList siteList = mocks.DynamicMock<ISiteList>();
            siteList.Stub(x => x.GetSite("h2g2").ContactFormsEmail).Return(siteContactEmail);
            siteList.Stub(x => x.GetSiteOptionValueBool(1, "General", "UseAtosEmailIngester")).Return(true);

            IDnaDataReader reader = mocks.DynamicMock<IDnaDataReader>();
            IDnaDataReaderCreator creator = mocks.DynamicMock<IDnaDataReaderCreator>();
            creator.Stub(x => x.CreateDnaDataReader("QueueEmail")).Return(reader);
            mocks.ReplayAll();

            Contacts contacts = new Contacts(null, creator, null, siteList);
            contacts.EmailServerAddress = "";

            contacts.SendDetailstoContactEmail(info, sentTo, siteContactEmail, 1);
            return reader.GetArgumentsForCallsMadeOn(x => x.AddParameter("", null));
        }
Exemplo n.º 3
0
        public void ShouldDeserialiseToContactFormMessageString()
        {
            ContactForm contactForm = new ContactForm();
            contactForm.Id = "FirstContactForm_111";
            contactForm.ParentUri = "http://local.bbc.co.uk/dna/h2g2";
            contactForm.Title = "FirstContactForm+1";
            contactForm.contactDetailsList = new ContactDetailsList();
            contactForm.contactDetailsList.contacts = new List<ContactDetails>();
            ContactDetails contactDetail = new ContactDetails();
            contactForm.contactDetailsList.contacts.Add(contactDetail);
            
            ContactFormMessage msg = new ContactFormMessage();
            msg.Subject = "testing Subject";
            msg.Body = new Dictionary<string, string>();
            msg.Body.Add("Your Email","*****@*****.**");
            msg.Body.Add("Your Suggestions","Improve the contact form");
            msg.Body.Add("Your Favourite Social Network","facebook");
            msg.Body.Add("Favourite BBC site","sport");
            msg.Body.Add("Gender","m");

            contactDetail.text = StringUtils.SerializeToJsonReturnAsString(msg);

            string stringContactForm = StringUtils.SerializeToJsonReturnAsString(contactForm);

            string body = "";
            ContactFormMessage message = (ContactFormMessage)StringUtils.DeserializeJSONObject(contactDetail.text, typeof(ContactFormMessage));
            string subject = message.Subject;

            foreach (KeyValuePair<string, string> content in message.Body.ToList<KeyValuePair<string, string>>())
            {
                string messageLine = content.Key + " : " + content.Value + "\n";
                body += messageLine;
            }
        }
Exemplo n.º 4
0
        public void ShouldWriteFailedPlainMessageEmailWithNoSMPTServerAvailableAddressedToSiteEmail()
        {
            string siteContactEmail = "*****@*****.**";
            string sentTo = "*****@*****.**";
            ContactDetails info = new ContactDetails();
            info.ForumUri = "http://local.bbc.co.uk/dna/api/contactformservice.svc/";
            info.text = "This is a test email";
            info.ID = new Random().Next(10000000);

            IList<object[]> FailedEmailDetails = SendEmail(info, siteContactEmail, sentTo);

            CheckDatabaseValues(siteContactEmail, sentTo, "", info.ForumUri, info.text, Contacts.CreateEmailNotes(info), FailedEmailDetails);
        }
Exemplo n.º 5
0
        public void ShouldWriteFailedXMLMessageEmailWithNoSMPTServerAvailableAddressedToSiteEmail()
        {
            string siteContactEmail = "*****@*****.**";
            string sentTo = "*****@*****.**";
            string body = "Body Text fro message";
            string subject = "XML Message Test";
            ContactDetails info = new ContactDetails();
            info.ForumUri = "http://local.bbc.co.uk/dna/api/contactformservice.svc/";
            info.text = "<message><subject>" + subject + "</subject><body>" + body + "</body></message>";
            info.ID = new Random().Next(10000000);

            IList<object[]> FailedEmailDetails = SendEmail(info, siteContactEmail, sentTo);

            CheckDatabaseValues(siteContactEmail, sentTo, "", subject, "body:\r\n" + body + "\r\n\r\n", Contacts.CreateEmailNotes(info), FailedEmailDetails);
        }
Exemplo n.º 6
0
        public Stream CreateContactDetails(string siteName, string contactFormId, ContactDetails newContactDetails)
        {
            ISite site = GetSite(siteName);
            if (site == null)
            {
                throw ApiException.GetError(ErrorType.UnknownSite);
            }

            try
            {
                contactFormComments.CallingUser = GetCallingUser(site);
                ContactForm contactForm = contactFormComments.GetContactFormFromFormID(contactFormId, site);

                if (contactForm == null)
                {
                    throw ApiException.GetError(ErrorType.ForumUnknown);
                }

                if (contactForm.ContactEmail == null || contactForm.ContactEmail.Length == 0)
                {
                    throw ApiException.GetError(ErrorType.MissingContactEmail);
                }

                ContactDetails contactDetails = contactFormComments.CreateContactDetails(contactForm, newContactDetails);

                contactFormComments.SendDetailstoContactEmail(contactDetails, contactForm.ContactEmail, site.ContactFormsEmail, site.SiteID);
                WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Created;
                return GetOutputStream(contactDetails);
            }
            catch (ApiException ex)
            {
                throw new DnaWebProtocolException(ex);
            }
        }
Exemplo n.º 7
0
 public ContactDetails CreateContactDetails(ContactForm contactForm, ContactDetails contactDetails)
 {
     return (ContactDetails)CreateComment(contactForm, contactDetails);
 }
Exemplo n.º 8
0
 public static string CreateEmailNotes(ContactDetails contactDetails)
 {
     return "ContactDetail - ID:" + contactDetails.ID + ", FORUM_URI:" + contactDetails.ForumUri;
 }
Exemplo n.º 9
0
 private static void CreateEmailSubjectAndBodies(ContactDetails contactDetails, bool sendAsRawDetails, out string subject, out string body, out string notes, ref string sentFrom)
 {
     // Do the default thing
     subject = contactDetails.ForumUri;
     body = contactDetails.text;
     notes = CreateEmailNotes(contactDetails);
     TryParseContactFormMessage(contactDetails.text, sendAsRawDetails, ref subject, ref body, ref sentFrom);
 }
Exemplo n.º 10
0
        public void SendDetailstoContactEmail(ContactDetails contactDetails, string recipient, string sender, int siteID)
        {
            string subject;
            string body;
            string notes;

            bool sendAsRawDetails = SiteList.GetSiteOptionValueBool(siteID, "General", "UseAtosEmailIngester");

            // BODGE FIX
            // As there is only one contact form that needs the send raw functionality, WatchDog, we need to bodge it so that the siteoption
            // only gets applied to emails being sent to WatchDog
            if (siteID <= 606)
            {
                sendAsRawDetails &= recipient.ToLower().Contains("watchdog");
            }
            // BODGE FIX

            string sentFrom = sender;

            CreateEmailSubjectAndBodies(contactDetails, sendAsRawDetails, out subject, out body, out notes, ref sender);

            if (SiteList.GetSiteOptionValueBool(siteID, "General", "SendEmailsViaDatabaseQueue"))
            {
                SendEmailViaDatabase(sender, recipient, null, subject, body, notes, DatabaseEmailQueue.EmailPriority.Medium);
            }
            else
            {
                SendEmailWithFailMessageOverride(sender, recipient, null, subject, body, "ContactDetails-", notes);
            }
        }