diff --git a/tests/Tgstation.Server.Tests/Live/Instance/InstanceTest.cs b/tests/Tgstation.Server.Tests/Live/Instance/InstanceTest.cs index 8bcd5ae04b..f9188313d0 100644 --- a/tests/Tgstation.Server.Tests/Live/Instance/InstanceTest.cs +++ b/tests/Tgstation.Server.Tests/Live/Instance/InstanceTest.cs @@ -48,7 +48,7 @@ public async Task RunTests( await using var engineTest = new EngineTest(instanceClient.Engine, instanceClient.Jobs, fileDownloader, instanceClient.Metadata, testVersion.Engine.Value); await using var chatTest = new ChatTest(instanceClient.ChatBots, instanceManagerClient, instanceClient.Jobs, instanceClient.Metadata); var configTest = new ConfigurationTest(instanceClient.Configuration, instanceClient.Metadata); - await using var repoTest = new RepositoryTest(instanceClient.Repository, instanceClient.Jobs); + await using var repoTest = new RepositoryTest(instanceClient, instanceClient.Repository, instanceClient.Jobs); await using var dmTest = new DeploymentTest(instanceClient, instanceClient.Jobs, dmPort, ddPort, lowPrioDeployment, testVersion); var byondTask = engineTest.Run(cancellationToken, out var firstInstall); diff --git a/tests/Tgstation.Server.Tests/Live/Instance/RepositoryTest.cs b/tests/Tgstation.Server.Tests/Live/Instance/RepositoryTest.cs index f5599d88c9..cef8a33713 100644 --- a/tests/Tgstation.Server.Tests/Live/Instance/RepositoryTest.cs +++ b/tests/Tgstation.Server.Tests/Live/Instance/RepositoryTest.cs @@ -8,6 +8,7 @@ using Tgstation.Server.Api.Models; using Tgstation.Server.Api.Models.Request; using Tgstation.Server.Api.Models.Response; +using Tgstation.Server.Api.Rights; using Tgstation.Server.Client; using Tgstation.Server.Client.Components; @@ -15,11 +16,13 @@ namespace Tgstation.Server.Tests.Live.Instance { sealed class RepositoryTest : JobsRequiredTest { + readonly IInstanceClient instanceClient; readonly IRepositoryClient repositoryClient; - public RepositoryTest(IRepositoryClient repositoryClient, IJobsClient jobsClient) + public RepositoryTest(IInstanceClient instanceClient, IRepositoryClient repositoryClient, IJobsClient jobsClient) : base(jobsClient) { + this.instanceClient = instanceClient ?? throw new ArgumentNullException(nameof(instanceClient)); this.repositoryClient = repositoryClient ?? throw new ArgumentNullException(nameof(repositoryClient)); } @@ -141,6 +144,29 @@ await repositoryClient.Update(new RepositoryUpdateRequest var prNumber = 2; await TestMergeTests(updated, prNumber, cancellationToken); + + await RegressionTest2064(cancellationToken); + } + + async ValueTask RegressionTest2064(CancellationToken cancellationToken) + { + var oldPerms = await instanceClient.PermissionSets.Read(cancellationToken); + + var newPerms = await instanceClient.PermissionSets.Update(new InstancePermissionSetRequest + { + PermissionSetId = oldPerms.PermissionSetId, + RepositoryRights = RepositoryRights.SetSha, + }, cancellationToken); + + Assert.AreEqual(RepositoryRights.SetSha, newPerms.RepositoryRights); + + await ApiAssert.ThrowsException(async () => await repositoryClient.Read(cancellationToken)); + + await instanceClient.PermissionSets.Update(new InstancePermissionSetRequest + { + PermissionSetId = oldPerms.PermissionSetId, + RepositoryRights = oldPerms.RepositoryRights, + }, cancellationToken); } async ValueTask RecloneTest(CancellationToken cancellationToken) diff --git a/tests/Tgstation.Server.Tests/Live/TestLiveServer.cs b/tests/Tgstation.Server.Tests/Live/TestLiveServer.cs index 208a33cc76..d8042b4492 100644 --- a/tests/Tgstation.Server.Tests/Live/TestLiveServer.cs +++ b/tests/Tgstation.Server.Tests/Live/TestLiveServer.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; @@ -1942,7 +1942,7 @@ await adminClient.Execute( Assert.AreEqual(expectedStaged, currentDD.ActiveCompileJob.Job.Id.Value); Assert.IsNull(currentDD.StagedCompileJob); - await using var repoTestObj = new RepositoryTest(instanceClient.Repository, instanceClient.Jobs); + await using var repoTestObj = new RepositoryTest(instanceClient, instanceClient.Repository, instanceClient.Jobs); var repoTest = repoTestObj.RunPostTest(cancellationToken); await using var chatTestObj = new ChatTest(instanceClient.ChatBots, restAdminClient.Instances, instanceClient.Jobs, instance); await chatTestObj.RunPostTest(cancellationToken);