| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- using Diligent.WebAPI.Business.Services;
- using Diligent.WebAPI.Business.Services.Interfaces;
- using Diligent.WebAPI.Business.Settings;
- using Diligent.WebAPI.Contracts.Exceptions;
- using Diligent.WebAPI.Contracts.Models;
- using Microsoft.Extensions.Logging;
- using Microsoft.Extensions.Options;
- using NSubstitute.ExceptionExtensions;
- using System.Net.Mail;
-
- namespace Diligent.WebAPI.Tests.Services
- {
- public class EmailerTests
- {
- private readonly IOptions<MailSettings> _settings;
- private readonly ILogger<Emailer> _logger = Substitute.For<ILogger<Emailer>>();
- private readonly DiligEmail _email;
- private readonly MailMessage _message;
- private readonly List<string> _emailAddresses;
- private readonly List<string> _emailAddressesCC;
- private readonly MailSettings _mailSettings;
- public EmailerTests()
- {
- _emailAddresses = new List<string> { "dzenis@dilig.net", "meris@dilig.net" };
- _emailAddressesCC = new List<string> { "ermin@dilig.net", "safet@dilig.net" };
- _email = new DiligEmail
- {
- To = "dzenis@dilig.net;meris@dilig.net",
- Subject = "Forget password",
- Body = "Forget password"
- };
- _message = new MailMessage
- {
- Subject = "Forget password",
- Body = "Forget password",
- IsBodyHtml = false,
- Sender = new MailAddress("htcenter@dilig.net", "hrcenter"),
- From = new MailAddress("htcenter@dilig.net")
- };
- _message.To.Add(string.Join(",", _emailAddresses));
- _message.CC.Add(string.Join(",", _emailAddressesCC));
- _mailSettings = new MailSettings
- {
- SmtpFrom = "htcenter@dilig.net",
- SmtpFromName = "hrcenter",
- SmtpServer = "gmail",
- SmtpPassword = "Password123?",
- SmtpPort = 5000,
- SmtpUsername = "hrcenter",
- SmtpUseSSL = true
- };
- _settings = Options.Create<MailSettings>(_mailSettings);
- }
- [Fact]
- public void CreateEmail_ShouldReturnDiligEmail_WhenArgumentsAreSent()
- {
- Emailer emailer = new Emailer(_settings, _logger);
- var result = emailer.CreateEmail(new List<string>() { "dzenis@dilig.net","meris@dilig.net"},
- "Forget password","Forget password");
-
- result.Should().Be(_email);
- }
-
- [Fact]
- public void CreateEmail_ShouldThrowArgumentException_WhenListOfReceiveresIsEmpty()
- {
- Emailer emailer = new Emailer(_settings, _logger);
-
- Assert.Throws<ArgumentException>( () => emailer.CreateEmail(new List<string>(), "Forget password",
- "Forget password"));
- }
- [Fact]
- public void GetMailMessage_ShouldReturnMailMessage_WhenArgumentsAreSent()
- {
- Emailer emailer = new Emailer(_settings, _logger);
- var result = emailer.GetMailMessage(_emailAddresses,
- "Forget password","Forget password",false,_emailAddressesCC);
-
- result.Subject.Should().Be(_message.Subject);
- result.Body.Should().Be(_message.Body);
- result.IsBodyHtml.Should().Be(_message.IsBodyHtml);
- result.Sender.Should().Be(_message.Sender);
- result.From.Should().Be(_message.From);
- result.To.Should().HaveCount(_message.To.Count());
- result.CC.Should().HaveCount(_message.CC.Count());
- }
-
- [Fact]
- public void GetMailMessage_ShouldThrowArgumentException_WhenListOfReceiveresIsEmpty()
- {
- Emailer emailer = new Emailer(_settings, _logger);
-
- Assert.Throws<ArgumentException>(() => emailer.GetMailMessage(new List<string>(), "Forget password",
- "Forget password"));
- }
- [Fact]
- public void GetSmtpClient_ShouldReturnGetSmtpClient_WhenSettingsArePresent()
- {
- Emailer emailer = new Emailer(_settings, _logger);
- var result = emailer.GetSmtpClient();
-
- result.EnableSsl.Should().Be(_mailSettings.SmtpUseSSL);
- result.Port.Should().Be(_mailSettings.SmtpPort);
- result.Host.Should().Be(_mailSettings.SmtpServer);
- }
- [Fact]
- public void SendEmailAsync_ShouldThrowArgumentException_WhenListOfReceiveresIsEmpty()
- {
- Emailer emailer = new Emailer(_settings, _logger);
-
- Assert.ThrowsAsync<ArgumentException>(async () => await emailer.SendEmailAsync(new List<string>(), "Forget password",
- "Forget password"));
- }
- //[Fact]
- //public async Task SendEmailAndWriteToDbAsync_ShouldReturnDiligEmail_WhenArgumentsAreSent()
- //{
- // Emailer emailer = new Emailer(_settings, _logger);
-
- // emailer.When(x => x.SendEmailAsync(Arg.Any<List<string>>(),Arg.Any<string>(), Arg.Any<string>(), Arg.Any<bool>(), Arg.Any<List<string>>())).ReturnsForAll(true);
-
- // var result = emailer.SendEmailAndWriteToDbAsync(new List<string>() { "dzenis@dilig.net", "meris@dilig.net" },
- // "Forget password", "Forget password");
-
- // result.Should().Be(_email);
- //}
- }
- }
|