public void ApplyConfigurationSection_CreatesExpectedOptions() { var options = new SendGridOptions(); var dict = new Dictionary <string, string>(); var builder = new ConfigurationBuilder(); builder.AddInMemoryCollection(dict); var config = builder.Build(); SendGridHelpers.ApplyConfiguration(config, options); Assert.Null(options.FromAddress); Assert.Null(options.ToAddress); dict = new Dictionary <string, string> { { "to", "Testing1 <*****@*****.**>" }, { "from", "Testing2 <*****@*****.**>" }, }; builder = new ConfigurationBuilder(); builder.AddInMemoryCollection(dict); config = builder.Build(); SendGridHelpers.ApplyConfiguration(config, options); Assert.Equal("*****@*****.**", options.ToAddress.Email); Assert.Equal("Testing1", options.ToAddress.Name); Assert.Equal("*****@*****.**", options.FromAddress.Email); Assert.Equal("Testing2", options.FromAddress.Name); }
/// <inheritdoc /> public void Initialize(ExtensionConfigContext context) { if (context == null) { throw new ArgumentNullException("context"); } var metadata = new ConfigMetadata(); context.ApplyConfig(metadata, "sendgrid"); this.ToAddress = SendGridHelpers.Apply(this.ToAddress, metadata.To); this.FromAddress = SendGridHelpers.Apply(this.FromAddress, metadata.From); if (string.IsNullOrEmpty(this.ApiKey)) { INameResolver nameResolver = context.Config.NameResolver; this.ApiKey = nameResolver.Resolve(AzureWebJobsSendGridApiKeyName); } context .AddConverter <string, SendGridMessage>(SendGridHelpers.CreateMessage) .AddConverter <JObject, SendGridMessage>(SendGridHelpers.CreateMessage) .AddBindingRule <SendGridAttribute>() .AddValidator(ValidateBinding) .BindToCollector <SendGridMessage>(CreateCollector); }
public void TryParseAddress_Failure(string value) { EmailAddress address = null; bool result = SendGridHelpers.TryParseAddress(value, out address); Assert.False(result); Assert.Null(address); }
public void TryParseAddress_Success() { EmailAddress address = null; SendGridHelpers.TryParseAddress("*****@*****.**", out address); Assert.Equal("*****@*****.**", address.Email); Assert.Null(address.Name); address = null; SendGridHelpers.TryParseAddress("Test Account <*****@*****.**>", out address); Assert.Equal("*****@*****.**", address.Email); Assert.Equal("Test Account", address.Name); }
public void TryParseAddress_Success() { MailAddress address = null; SendGridHelpers.TryParseAddress("*****@*****.**", out address); Assert.Equal("*****@*****.**", address.Address); Assert.Equal(string.Empty, address.DisplayName); address = null; SendGridHelpers.TryParseAddress("Test Account <*****@*****.**>", out address); Assert.Equal("*****@*****.**", address.Address); Assert.Equal("Test Account", address.DisplayName); }
public void IsToValid() { // Null Personalization SendGridMessage mail = new SendGridMessage(); mail.Personalizations = null; Assert.False(SendGridHelpers.IsToValid(mail)); // Empty Personalization mail.Personalizations = new List <Personalization>(); Assert.False(SendGridHelpers.IsToValid(mail)); // 'To' with no address Personalization personalization = new Personalization(); personalization.Tos = new List <EmailAddress> { new EmailAddress() }; mail.Personalizations.Add(personalization); Assert.False(SendGridHelpers.IsToValid(mail)); // Personalization with no 'To' mail = new SendGridMessage(); mail.Personalizations = new List <Personalization>(); Personalization personalization1 = new Personalization(); personalization1.Tos = new List <EmailAddress> { new EmailAddress("*****@*****.**") }; mail.Personalizations.Add(personalization1); Personalization personalization2 = new Personalization(); personalization2.Bccs = new List <EmailAddress> { new EmailAddress("*****@*****.**") }; mail.Personalizations.Add(personalization2); Assert.False(SendGridHelpers.IsToValid(mail)); // valid personalization2.Tos = new List <EmailAddress> { new EmailAddress("*****@*****.**") }; Assert.True(SendGridHelpers.IsToValid(mail)); }
public void CreateMessage_CreatesExpectedMessage() { // multiple recipients JObject input = new JObject { { "to", new JArray { "*****@*****.**", "Test Account 2 <*****@*****.**>" } }, { "from", "Test Account 3 <*****@*****.**>" }, { "subject", "Test Subject" }, { "text", "Test Text" } }; SendGridMessage result = SendGridHelpers.CreateMessage(input); Assert.Equal(2, result.To.Length); Assert.Equal("*****@*****.**", result.To[0].Address); Assert.Equal("*****@*****.**", result.To[1].Address); Assert.Equal("Test Account 2", result.To[1].DisplayName); Assert.Equal("*****@*****.**", result.From.Address); Assert.Equal("Test Account 3", result.From.DisplayName); Assert.Equal("Test Subject", result.Subject); Assert.Equal("Test Text", result.Text); // single recipient input = new JObject { { "to", "Test Account 2 <*****@*****.**>" }, { "from", "Test Account 3 <*****@*****.**>" }, { "subject", "Test Subject" }, { "text", "Test Text" } }; result = SendGridHelpers.CreateMessage(input); Assert.Equal(1, result.To.Length); Assert.Equal("*****@*****.**", result.To[0].Address); Assert.Equal("Test Account 2", result.To[0].DisplayName); Assert.Equal("*****@*****.**", result.From.Address); Assert.Equal("Test Account 3", result.From.DisplayName); Assert.Equal("Test Subject", result.Subject); Assert.Equal("Test Text", result.Text); }
/// <summary> /// Adds the SendGrid extension to the provided <see cref="IWebJobsBuilder"/>. /// </summary> /// <param name="builder">The <see cref="IWebJobsBuilder"/> to configure.</param> public static IWebJobsBuilder AddSendGrid(this IWebJobsBuilder builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } builder.AddExtension <SendGridExtensionConfigProvider>() .ConfigureOptions <SendGridOptions>((section, options) => { SendGridHelpers.ApplyConfiguration(section, options); }); builder.Services.AddSingleton <ISendGridClientFactory, DefaultSendGridClientFactory>(); return(builder); }
/// <summary> /// Adds the SendGrid extension to the provided <see cref="IWebJobsBuilder"/>. /// </summary> /// <param name="builder">The <see cref="IWebJobsBuilder"/> to configure.</param> public static IWebJobsBuilder AddSendGrid(this IWebJobsBuilder builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } builder.AddExtension <SendGridExtensionConfigProvider>() .ConfigureOptions <SendGridOptions>((rootConfig, extensionPath, options) => { // Set the default, which can be overridden. options.ApiKey = rootConfig[SendGridExtensionConfigProvider.AzureWebJobsSendGridApiKeyName]; IConfigurationSection section = rootConfig.GetSection(extensionPath); SendGridHelpers.ApplyConfiguration(section, options); }); builder.Services.AddSingleton <ISendGridClientFactory, DefaultSendGridClientFactory>(); return(builder); }
public void DefaultMessageProperties_CreatesExpectedMessage() { SendGridAttribute attribute = new SendGridAttribute(); SendGridConfiguration config = new SendGridConfiguration { ApiKey = "12345", FromAddress = new EmailAddress("*****@*****.**", "Test2"), ToAddress = new EmailAddress("*****@*****.**", "Test") }; SendGridMessage message = new SendGridMessage(); message.Subject = "TestSubject"; message.AddContent("text/plain", "TestText"); SendGridHelpers.DefaultMessageProperties(message, config, attribute); Assert.Same(config.FromAddress, config.FromAddress); Assert.Equal("*****@*****.**", message.Personalizations.Single().Tos.Single().Email); Assert.Equal("TestSubject", message.Subject); Assert.Equal("TestText", message.Contents.Single().Value); }
public void DefaultMessageProperties_CreatesExpectedMessage() { SendGridAttribute attribute = new SendGridAttribute(); SendGridConfiguration config = new SendGridConfiguration { ApiKey = "12345", FromAddress = new MailAddress("*****@*****.**", "Test2"), ToAddress = new MailAddress("*****@*****.**", "Test") }; SendGridMessage message = new SendGridMessage { Subject = "TestSubject", Text = "TestText" }; SendGridHelpers.DefaultMessageProperties(message, config, attribute); Assert.Same(config.FromAddress, config.FromAddress); Assert.Equal("*****@*****.**", message.To.Single().Address); Assert.Equal("TestSubject", message.Subject); Assert.Equal("TestText", message.Text); }
public void IsToValid() { // Null Personalization Mail mail = new Mail(); mail.Personalization = null; Assert.False(SendGridHelpers.IsToValid(mail)); // Empty Personalization mail.Personalization = new List <Personalization>(); Assert.False(SendGridHelpers.IsToValid(mail)); // 'To' with no address Personalization personalization = new Personalization(); personalization.AddTo(new Email()); mail.AddPersonalization(personalization); Assert.False(SendGridHelpers.IsToValid(mail)); // Personalization with no 'To' mail = new Mail(); Personalization personalization1 = new Personalization(); personalization1.AddTo(new Email("*****@*****.**")); Personalization personalization2 = new Personalization(); personalization2.AddBcc(new Email("*****@*****.**")); mail.AddPersonalization(personalization1); mail.AddPersonalization(personalization2); Assert.False(SendGridHelpers.IsToValid(mail)); // valid personalization2.AddTo(new Email("*****@*****.**")); Assert.True(SendGridHelpers.IsToValid(mail)); }
public void CreateConfiguration_CreatesExpectedConfiguration() { JObject config = new JObject(); var result = SendGridHelpers.CreateConfiguration(config); Assert.Null(result.FromAddress); Assert.Null(result.ToAddress); config = new JObject { { "sendGrid", new JObject { { "to", "Testing1 <*****@*****.**>" }, { "from", "Testing2 <*****@*****.**>" } } } }; result = SendGridHelpers.CreateConfiguration(config); Assert.Equal("*****@*****.**", result.ToAddress.Email); Assert.Equal("Testing1", result.ToAddress.Name); Assert.Equal("*****@*****.**", result.FromAddress.Email); Assert.Equal("Testing2", result.FromAddress.Name); }
public void CreateMessage_CreatesExpectedMessage() { // multiple recipients string mail = @"{ 'personalizations': [ { 'to': [ { 'email': '*****@*****.**' }, { 'email': '*****@*****.**', 'name': 'Test Account 2' } ] } ], 'from': { 'email': '*****@*****.**', 'name': 'Test Account 3' }, 'subject': 'Test Subject', 'content': [ { 'type': 'text/plain', 'value': 'Test Text' } ] }"; SendGridMessage result = SendGridHelpers.CreateMessage(mail); Personalization p = result.Personalizations.Single(); Assert.Equal(2, p.Tos.Count); Assert.Equal("*****@*****.**", p.Tos[0].Email); Assert.Equal("*****@*****.**", p.Tos[1].Email); Assert.Equal("Test Account 2", p.Tos[1].Name); Assert.Equal("*****@*****.**", result.From.Email); Assert.Equal("Test Account 3", result.From.Name); Assert.Equal("Test Subject", result.Subject); Assert.Equal("Test Text", result.Contents.Single().Value); // single recipient mail = @"{ 'personalizations': [ { 'to': [ { 'email': '*****@*****.**', 'name': 'Test Account 2' } ] } ], 'from': { 'email': '*****@*****.**', 'name': 'Test Account 3' }, 'subject': 'Test Subject', 'content': [ { 'type': 'text/plain', 'value': 'Test Text' } ] }"; result = SendGridHelpers.CreateMessage(mail); p = result.Personalizations.Single(); Assert.Equal(1, p.Tos.Count); Assert.Equal("*****@*****.**", p.Tos[0].Email); Assert.Equal("Test Account 2", p.Tos[0].Name); Assert.Equal("*****@*****.**", result.From.Email); Assert.Equal("Test Account 3", result.From.Name); Assert.Equal("Test Subject", result.Subject); Assert.Equal("Test Text", result.Contents.Single().Value); }