Regression test for #2064

This commit is contained in:
Jordan Dominion
2025-01-03 18:27:47 -05:00
parent 4a89ff526a
commit 4605afe2ce
3 changed files with 30 additions and 4 deletions
@@ -48,7 +48,7 @@ namespace Tgstation.Server.Tests.Live.Instance
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);
@@ -8,6 +8,7 @@ using System.Threading.Tasks;
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 @@ namespace Tgstation.Server.Tests.Live.Instance
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<InsufficientPermissionsException>(async () => await repositoryClient.Read(cancellationToken));
await instanceClient.PermissionSets.Update(new InstancePermissionSetRequest
{
PermissionSetId = oldPerms.PermissionSetId,
RepositoryRights = oldPerms.RepositoryRights,
}, cancellationToken);
}
async ValueTask RecloneTest(CancellationToken cancellationToken)
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
@@ -1942,7 +1942,7 @@ namespace Tgstation.Server.Tests.Live
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);