Add admin roles, user management, and campaign deletion

This commit is contained in:
2026-02-26 17:15:10 +01:00
parent 3026221cd6
commit 2e2f364c5e
26 changed files with 1127 additions and 31 deletions

View File

@@ -82,6 +82,9 @@ public sealed class HostingCoverageTests
"Breakdown" TEXT NOT NULL,
"TimestampUtc" TEXT NOT NULL
);
INSERT INTO "Users" ("Id", "Username", "UsernameNormalized", "PasswordHash", "DisplayName", "ActiveCharacterId")
VALUES ('00000000-0000-0000-0000-000000000001', 'legacy-admin', 'LEGACY-ADMIN', 'hash', 'Legacy Admin', NULL);
""";
_ = command.ExecuteNonQuery();
}
@@ -115,6 +118,35 @@ public sealed class HostingCoverageTests
Assert.Contains("Dice", rollColumns);
using var usersTableInfoCommand = verifyConnection.CreateCommand();
usersTableInfoCommand.CommandText = "PRAGMA table_info('Users');";
using var usersTableInfoReader = usersTableInfoCommand.ExecuteReader();
var usersColumns = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
while (usersTableInfoReader.Read())
usersColumns.Add(usersTableInfoReader.GetString(1));
Assert.Contains("Roles", usersColumns);
using var usersRoleCommand = verifyConnection.CreateCommand();
usersRoleCommand.CommandText = "SELECT Roles FROM Users WHERE UsernameNormalized = 'LEGACY-ADMIN';";
var roles = Convert.ToString(usersRoleCommand.ExecuteScalar());
Assert.Equal("admin", roles);
using var charactersTableInfoCommand = verifyConnection.CreateCommand();
charactersTableInfoCommand.CommandText = "PRAGMA table_info('Characters');";
using var charactersTableInfoReader = charactersTableInfoCommand.ExecuteReader();
var campaignIdNotNull = true;
while (charactersTableInfoReader.Read())
{
if (!string.Equals(charactersTableInfoReader.GetString(1), "CampaignId", StringComparison.OrdinalIgnoreCase))
continue;
campaignIdNotNull = charactersTableInfoReader.GetInt32(3) == 1;
break;
}
Assert.False(campaignIdNotNull);
using var historyCommand = verifyConnection.CreateCommand();
historyCommand.CommandText = "SELECT COUNT(*) FROM \"__EFMigrationsHistory\" WHERE \"MigrationId\" = '20260226084000_InitialSchema';";
var historyCount = Convert.ToInt32(historyCommand.ExecuteScalar());
@@ -129,5 +161,10 @@ public sealed class HostingCoverageTests
rollDiceHistoryCommand.CommandText = "SELECT COUNT(*) FROM \"__EFMigrationsHistory\" WHERE \"MigrationId\" = '20260226100000_AddRollLogDice';";
var rollDiceHistoryCount = Convert.ToInt32(rollDiceHistoryCommand.ExecuteScalar());
Assert.Equal(1, rollDiceHistoryCount);
using var rolesHistoryCommand = verifyConnection.CreateCommand();
rolesHistoryCommand.CommandText = "SELECT COUNT(*) FROM \"__EFMigrationsHistory\" WHERE \"MigrationId\" = '20260226160859_AddAuthorizationRolesAndCampaignDeletion';";
var rolesHistoryCount = Convert.ToInt32(rolesHistoryCommand.ExecuteScalar());
Assert.Equal(1, rolesHistoryCount);
}
}
}