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); }
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)); }
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; } }
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); }
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); }
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); } }
public ContactDetails CreateContactDetails(ContactForm contactForm, ContactDetails contactDetails) { return (ContactDetails)CreateComment(contactForm, contactDetails); }
public static string CreateEmailNotes(ContactDetails contactDetails) { return "ContactDetail - ID:" + contactDetails.ID + ", FORUM_URI:" + contactDetails.ForumUri; }
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); }
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); } }