已完成管理后台第二批 ASP.NET Core 10 迁移:

学校创建、修改
班级创建、修改
管理员创建、修改
管理员密码重置
自主注册开关
写入与审计日志保持同一事务
停用或重置管理员后自动清除其会话
This commit is contained in:
2026-07-23 08:08:26 +08:00 Unverified
parent 712bd1a3a2
commit 875e59b6ce
12 changed files with 885 additions and 20 deletions
@@ -7,7 +7,7 @@ public sealed class AdminMigrationOptionsTests
[Fact]
public void DisabledByDefault()
{
WithEnvironment(null, null, () =>
WithEnvironment(null, null, null, () =>
{
var options = AdminMigrationOptions.FromEnvironment(
configuredNativeReadsEnabled: false,
@@ -21,7 +21,7 @@ public sealed class AdminMigrationOptionsTests
[Fact]
public void RequiresNativeAuthentication()
{
WithEnvironment("true", "true", () =>
WithEnvironment("true", null, "true", () =>
{
var exception = Assert.Throws<InvalidOperationException>(() =>
AdminMigrationOptions.FromEnvironment(
@@ -36,7 +36,7 @@ public sealed class AdminMigrationOptionsTests
[Fact]
public void RequiresSharedSessionsOutsideIsolatedTests()
{
WithEnvironment("true", null, () =>
WithEnvironment("true", null, null, () =>
{
var exception = Assert.Throws<InvalidOperationException>(() =>
AdminMigrationOptions.FromEnvironment(
@@ -51,7 +51,7 @@ public sealed class AdminMigrationOptionsTests
[Fact]
public void AllowsSharedRedisSessions()
{
WithEnvironment("true", null, () =>
WithEnvironment("true", null, null, () =>
{
var options = AdminMigrationOptions.FromEnvironment(
configuredNativeReadsEnabled: false,
@@ -62,22 +62,56 @@ public sealed class AdminMigrationOptionsTests
});
}
[Fact]
public void OrganizationWritesRequireNativeReads()
{
WithEnvironment("false", "true", null, () =>
{
var exception = Assert.Throws<InvalidOperationException>(() =>
AdminMigrationOptions.FromEnvironment(
configuredNativeReadsEnabled: false,
authenticationNativeEnabled: true,
sharesLegacySessions: true));
Assert.Contains("ADMIN_NATIVE_READS_ENABLED=true", exception.Message);
});
}
[Fact]
public void EnablesOrganizationWritesWithReadsAndSharedSessions()
{
WithEnvironment("true", "true", null, () =>
{
var options = AdminMigrationOptions.FromEnvironment(
configuredNativeReadsEnabled: false,
authenticationNativeEnabled: true,
sharesLegacySessions: true);
Assert.True(options.NativeReadsEnabled);
Assert.True(options.NativeOrganizationWritesEnabled);
});
}
private static void WithEnvironment(
string? nativeReadsEnabled,
string? nativeOrganizationWritesEnabled,
string? allowMemory,
Action test)
{
var previousNativeReadsEnabled = Environment.GetEnvironmentVariable("ADMIN_NATIVE_READS_ENABLED");
var previousNativeOrganizationWritesEnabled = Environment.GetEnvironmentVariable("ADMIN_NATIVE_ORGANIZATION_WRITES_ENABLED");
var previousAllowMemory = Environment.GetEnvironmentVariable("ADMIN_NATIVE_ALLOW_MEMORY");
try
{
Environment.SetEnvironmentVariable("ADMIN_NATIVE_READS_ENABLED", nativeReadsEnabled);
Environment.SetEnvironmentVariable("ADMIN_NATIVE_ORGANIZATION_WRITES_ENABLED", nativeOrganizationWritesEnabled);
Environment.SetEnvironmentVariable("ADMIN_NATIVE_ALLOW_MEMORY", allowMemory);
test();
}
finally
{
Environment.SetEnvironmentVariable("ADMIN_NATIVE_READS_ENABLED", previousNativeReadsEnabled);
Environment.SetEnvironmentVariable("ADMIN_NATIVE_ORGANIZATION_WRITES_ENABLED", previousNativeOrganizationWritesEnabled);
Environment.SetEnvironmentVariable("ADMIN_NATIVE_ALLOW_MEMORY", previousAllowMemory);
}
}