diff --git a/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs b/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs index a554d12637..93bf03a260 100644 --- a/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs +++ b/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs @@ -110,6 +110,7 @@ namespace Tgstation.Server.Host.Components.Chat.Providers { if (assemblyInformationProvider == null) throw new ArgumentNullException(nameof(assemblyInformationProvider)); + this.asyncDelayer = asyncDelayer ?? throw new ArgumentNullException(nameof(asyncDelayer)); var builder = chatBot.CreateConnectionStringBuilder(); @@ -121,7 +122,7 @@ namespace Tgstation.Server.Host.Components.Chat.Providers nickname = ircBuilder.Nickname; password = ircBuilder.Password; - passwordType = ircBuilder.PasswordType.Value; + passwordType = ircBuilder.PasswordType; client = new IrcFeatures { diff --git a/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestIrcProvider.cs b/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestIrcProvider.cs new file mode 100644 index 0000000000..68413a0809 --- /dev/null +++ b/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestIrcProvider.cs @@ -0,0 +1,49 @@ +using Microsoft.Extensions.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; +using System; +using System.Threading.Tasks; +using Tgstation.Server.Api.Models; +using Tgstation.Server.Host.Core; +using Tgstation.Server.Host.Jobs; +using Tgstation.Server.Host.Models; +using Tgstation.Server.Host.System; + +namespace Tgstation.Server.Host.Components.Chat.Providers.Tests +{ + [TestClass] + public sealed class TestIrcProvider + { + [TestMethod] + public async Task TestConstructionAndDisposal() + { + Assert.ThrowsException(() => new IrcProvider(null, null, null, null, null)); + var mockJobManager = new Mock(); + Assert.ThrowsException(() => new IrcProvider(mockJobManager.Object, null, null, null, null)); + var mockAss = new Mock(); + Assert.ThrowsException(() => new IrcProvider(mockJobManager.Object, mockAss.Object, null, null, null)); + var mockAsyncDelayer = new Mock(); + Assert.ThrowsException(() => new IrcProvider(mockJobManager.Object, mockAss.Object, mockAsyncDelayer.Object, null, null)); + var mockLogger = new Mock>(); + Assert.ThrowsException(() => new IrcProvider(mockJobManager.Object, mockAss.Object, mockAsyncDelayer.Object, mockLogger.Object, null)); + + var mockBot = new ChatBot + { + Name = "test", + Provider = ChatProvider.Irc + }; + + Assert.ThrowsException(() => new IrcProvider(mockJobManager.Object, mockAss.Object, mockAsyncDelayer.Object, mockLogger.Object, mockBot)); + + mockBot.ConnectionString = new IrcConnectionStringBuilder + { + Address = "localhost", + Nickname = "test", + UseSsl = true, + Port = 6667 + }.ToString(); + + await new IrcProvider(mockJobManager.Object, mockAss.Object, mockAsyncDelayer.Object, mockLogger.Object, mockBot).DisposeAsync(); + } + } +}