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..198bd78fa8 --- /dev/null +++ b/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestIrcProvider.cs @@ -0,0 +1,51 @@ +using Microsoft.Extensions.Logging; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; +using System; +using System.Reflection; +using System.Threading; +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(); + } + } +}