From 9c4144eb9825950774c610ef859273896bdbdd40 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sun, 9 May 2021 09:58:56 -0400 Subject: [PATCH 1/4] Fix bad dereference of nullable value Fixes #1255 --- .../Components/Chat/Providers/IrcProvider.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs b/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs index a554d12637..8cac39f923 100644 --- a/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs +++ b/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs @@ -121,7 +121,7 @@ namespace Tgstation.Server.Host.Components.Chat.Providers nickname = ircBuilder.Nickname; password = ircBuilder.Password; - passwordType = ircBuilder.PasswordType.Value; + passwordType = ircBuilder.PasswordType; client = new IrcFeatures { From a250efefa6b7d03a661a0812a149d86305be65cc Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sun, 9 May 2021 10:08:13 -0400 Subject: [PATCH 2/4] Regression test for #1255 --- .../Chat/Providers/TestIrcProvider.cs | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestIrcProvider.cs 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(); + } + } +} From 60e8a3ade8e4705c944809f8e70d3c4ed4bdb3fb Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sun, 9 May 2021 10:08:25 -0400 Subject: [PATCH 3/4] Minor whitespace cleanup --- .../Components/Chat/Providers/IrcProvider.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs b/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs index 8cac39f923..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(); From 42686d6d34f7e8427dc4e0f8f2823df1b10a8f52 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sun, 9 May 2021 10:10:27 -0400 Subject: [PATCH 4/4] Remove unused usings --- .../Components/Chat/Providers/TestIrcProvider.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestIrcProvider.cs b/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestIrcProvider.cs index 198bd78fa8..68413a0809 100644 --- a/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestIrcProvider.cs +++ b/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestIrcProvider.cs @@ -2,8 +2,6 @@ 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;