using System; using NUnit.Framework; using SendGrid.Helpers.Mail; using System.Collections.Generic; namespace UnitTest { // Test the initialization of the Client [TestFixture] public class APIKeys { static string _apiKey = Environment.GetEnvironmentVariable("SENDGRID_APIKEY"); public dynamic sg = new SendGrid.SendGridAPIClient(_apiKey); [Test] public void TestSendGridAPIClient() { Assert.AreEqual(sg.client.Host, "https://api.sendgrid.com"); Assert.AreEqual(sg.client.Version, "v3"); Assert.AreEqual(sg.client.RequestHeaders["Authorization"], "Bearer " + _apiKey); Assert.AreEqual(sg.client.RequestHeaders["Content-Type"], "application/json"); Assert.AreEqual(sg.client.RequestHeaders["User-Agent"], "sendgrid/" + sg.Version + " csharp"); } } // Test the building of the v3/mail/send request body [TestFixture] public class Mail { static string _apiKey = Environment.GetEnvironmentVariable("SENDGRID_APIKEY"); public dynamic sg = new SendGrid.SendGridAPIClient(_apiKey); // Base case for sending an email [Test] public void TestHelloEmail() { SendGrid.Helpers.Mail.Mail mail = new SendGrid.Helpers.Mail.Mail(); Email email = new Email(); email.Address = "dx@sendgrid.com"; mail.From = email; Personalization personalization = new Personalization(); email = new Email(); email.Address = "elmer.thomas@sendgrid.com"; personalization.AddTo(email); mail.AddPersonalization(personalization); mail.Subject = "Hello World from the SendGrid CSharp Library"; Content content = new Content(); content.Type = "text/plain"; content.Value = "Textual content"; mail.AddContent(content); content = new Content(); content.Type = "text/html"; content.Value = "
HTML content"; mail.AddContent(content); String ret = mail.Get(); Assert.AreEqual(ret, "{\"from\":{\"email\":\"dx@sendgrid.com\"},\"subject\":\"Hello World from the SendGrid CSharp Library\",\"personalization\":[{\"to\":[{\"email\":\"elmer.thomas@sendgrid.com\"}]}],\"content\":[{\"type\":\"text/plain\",\"value\":\"Textual content\"},{\"type\":\"text/html\",\"value\":\"HTML content\"}]}"); } // All paramaters available for sending an email [Test] public void TestKitchenSink() { SendGrid.Helpers.Mail.Mail mail = new SendGrid.Helpers.Mail.Mail(); Email email = new Email(); email.Name = "DX"; email.Address = "dx@sendgrid.com"; mail.From = email; mail.Subject = "Hello World from the SendGrid CSharp Library"; Personalization personalization = new Personalization(); email = new Email(); email.Name = "Elmer Thomas"; email.Address = "elmer.thomas@sendgrid.com"; personalization.AddTo(email); email = new Email(); email.Name = "Matt Bernier"; email.Address = "matt.bernier@sendgrid.com"; personalization.AddCc(email); email = new Email(); email.Name = "Eric Shallock"; email.Address = "eric.shallock@sendgrid.com"; personalization.AddCc(email); email = new Email(); email.Name = "Elmer Thomas Secret"; email.Address = "elmer.thomas + secret@sengrid.com"; personalization.AddBcc(email); email = new Email(); email.Name = "Elmer Thomas Secret 2"; email.Address = "elmer.thomas+secret@elmer.thomas.com"; personalization.AddBcc(email); personalization.Subject = "Thank you for signing up, %name%"; personalization.AddHeader("X-Test", "True"); personalization.AddHeader("X-Mock", "True"); personalization.AddSubstitution("%name%", "Elmer"); personalization.AddSubstitution("%city%", "Moreno Valley"); personalization.AddCustomArgs("marketing", "false"); personalization.AddCustomArgs("transactional", "true"); personalization.SendAt = 1461775051; mail.AddPersonalization(personalization); personalization = new Personalization(); email = new Email(); email.Name = "Elmer Thomas"; email.Address = "elmer.thomas@gmail.com"; personalization.AddTo(email); email = new Email(); email.Name = "Matt Bernier"; email.Address = "matt.bernier@sendgrid.com"; personalization.AddCc(email); email = new Email(); email.Name = "Eric Shallock"; email.Address = "eric.shallock@sendgrid.com"; personalization.AddCc(email); email = new Email(); email.Name = "Elmer Thomas Secret"; email.Address = "elmer.thomas + secret@sengrid.com"; personalization.AddBcc(email); email = new Email(); email.Name = "Elmer Thomas Secret 2"; email.Address = "elmer.thomas+secret@elmer.thomas.com"; personalization.AddBcc(email); personalization.Subject = "Thank you for signing up, %name%"; personalization.AddHeader("X-Test", "True"); personalization.AddHeader("X-Mock", "True"); personalization.AddSubstitution("%name%", "Elmer"); personalization.AddSubstitution("%city%", "Moreno Valley"); personalization.AddCustomArgs("marketing", "false"); personalization.AddCustomArgs("transactional", "true"); personalization.SendAt = 1461775051; mail.AddPersonalization(personalization); Content content = new Content(); content.Type = "text/plain"; content.Value = "Textual content"; mail.AddContent(content); content = new Content(); content.Type = "text/html"; content.Value = "HTML content"; mail.AddContent(content); content = new Content(); content.Type = "text/calendar"; content.Value = "Party Time!!"; mail.AddContent(content); Attachment attachment = new Attachment(); attachment.Content = "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gQ3JhcyBwdW12"; attachment.Type = "application/pdf"; attachment.Filename = "balance_001.pdf"; attachment.Disposition = "attachment"; attachment.ContentId = "Balance Sheet"; mail.AddAttachment(attachment); attachment = new Attachment(); attachment.Content = "BwdW"; attachment.Type = "image/png"; attachment.Filename = "banner.png"; attachment.Disposition = "inline"; attachment.ContentId = "Banner"; mail.AddAttachment(attachment); mail.TemplateId = "13b8f94f-bcae-4ec6-b752-70d6cb59f932"; mail.AddHeader("X-Day", "Monday"); mail.AddHeader("X-Month", "January"); mail.AddSection("%section1", "Substitution for Section 1 Tag"); mail.AddSection("%section2", "Substitution for Section 2 Tag"); mail.AddCategory("customer"); mail.AddCategory("vip"); mail.AddCustomArgs("campaign", "welcome"); mail.AddCustomArgs("sequence", "2"); ASM asm = new ASM(); asm.GroupId = 3; List