diff --git a/build/Version.props b/build/Version.props index cc6fbcfcf7..7929f4741d 100644 --- a/build/Version.props +++ b/build/Version.props @@ -3,7 +3,7 @@ - 5.12.0 + 5.12.1 4.6.0 9.10.2 10.4.1 diff --git a/src/Tgstation.Server.Host/Controllers/ChatController.cs b/src/Tgstation.Server.Host/Controllers/ChatController.cs index b71f9817ae..d6a33f6fe8 100644 --- a/src/Tgstation.Server.Host/Controllers/ChatController.cs +++ b/src/Tgstation.Server.Host/Controllers/ChatController.cs @@ -220,7 +220,7 @@ namespace Tgstation.Server.Host.Controllers .OrderBy(x => x.Id))), chatBot => { - if (connectionStrings) + if (!connectionStrings) chatBot.ConnectionString = null; return Task.CompletedTask; diff --git a/tests/Tgstation.Server.Tests/Live/Instance/ChatTest.cs b/tests/Tgstation.Server.Tests/Live/Instance/ChatTest.cs index ee1b718d96..ab8553fc22 100644 --- a/tests/Tgstation.Server.Tests/Live/Instance/ChatTest.cs +++ b/tests/Tgstation.Server.Tests/Live/Instance/ChatTest.cs @@ -7,6 +7,7 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; using Tgstation.Server.Api.Models; using Tgstation.Server.Api.Models.Request; +using Tgstation.Server.Api.Rights; using Tgstation.Server.Client; using Tgstation.Server.Client.Components; @@ -30,7 +31,11 @@ namespace Tgstation.Server.Tests.Live.Instance var ircTask = RunIrc(cancellationToken); await RunDiscord(cancellationToken); await ircTask; + + var listTest = RunListTest(cancellationToken); await RunLimitTests(cancellationToken); + + await listTest; } async Task RunIrc(CancellationToken cancellationToken) @@ -190,6 +195,41 @@ namespace Tgstation.Server.Tests.Live.Instance Assert.AreEqual(0, nowBots.Count); } + async Task RunListTest(CancellationToken cancellationToken) + { + // regression test for GHSA-rv76-495p-g7cp + // test starts with all perms + var permsClient = instanceClient.CreateClient(metadata).PermissionSets; + var ourInstancePermissionSetTask = permsClient.Read(cancellationToken); + + var ourIPS = await ourInstancePermissionSetTask; + Assert.IsTrue(ourIPS.ChatBotRights.Value.HasFlag(ChatBotRights.ReadConnectionString)); + + var results = await chatClient.List(null, cancellationToken); + + Assert.IsTrue(results.Count > 0); + Assert.IsTrue(results.All(chatBot => chatBot.ConnectionString != null)); + + var result = await chatClient.GetId(results[0], cancellationToken); + + Assert.IsNotNull(result.ConnectionString); + + await permsClient.Update(new InstancePermissionSetRequest + { + PermissionSetId = ourIPS.PermissionSetId, + ChatBotRights = ourIPS.ChatBotRights.Value & (~ChatBotRights.ReadConnectionString), + }, cancellationToken); + + results = await chatClient.List(null, cancellationToken); + + Assert.IsTrue(results.Count > 0); + Assert.IsTrue(results.All(chatBot => chatBot.ConnectionString == null)); + + result = await chatClient.GetId(results[0], cancellationToken); + + Assert.IsNull(result.ConnectionString); + } + async Task RunLimitTests(CancellationToken cancellationToken) { await ApiAssert.ThrowsException(() => chatClient.Create(new ChatBotCreateRequest