mirror of
https://github.com/JogmansonReal/Radicade.git
synced 2026-10-25 23:18:56 -07:00
57 lines
2.7 KiB
Markdown
57 lines
2.7 KiB
Markdown
# ServerTests
|
|
|
|
xUnit suite for the server and for the parts of the client patch that must agree with
|
|
it. The folder is `ServerTests/` but the project file (and assembly) is
|
|
`Server.Tests.csproj` / `Server.Tests.dll`, root namespace `RadicadeServer.Tests`.
|
|
|
|
## Running
|
|
|
|
```bash
|
|
# whole suite
|
|
dotnet test ServerTests/Server.Tests.csproj
|
|
|
|
# a single feature area
|
|
dotnet test ServerTests/Server.Tests.csproj --filter FullyQualifiedName~GiftTests
|
|
|
|
# one test
|
|
dotnet test ServerTests/Server.Tests.csproj --filter DisplayName~WeeklyChallenge
|
|
```
|
|
|
|
Around 1,600 tests run in well under a minute. On the current checkout roughly
|
|
1,605 pass, 1 is skipped and a handful fail (storefront capture count, some
|
|
catalog/locker and weekly-challenge rollover tests) — treat the run output as the
|
|
source of truth rather than the README.
|
|
|
|
## How the tests are wired
|
|
|
|
- **Database providers.** Tests never touch SQL Server. They build a context through
|
|
`TestDbContextFactory`, which uses `Microsoft.EntityFrameworkCore.InMemory` where a
|
|
fast stand-in is enough and `Microsoft.EntityFrameworkCore.Sqlite` where real
|
|
relational behaviour matters.
|
|
- **Static configuration.** A lot of server behaviour is configured through static
|
|
fields on `DBConfig` (for example `DBConfig.SteamApiKey`, `DBConfig.AdminApiKey`,
|
|
`DBConfig.JwtKey`). Tests assign throwaway values such as `"unit-test-steam-api-key"`
|
|
and restore the previous value in a `finally` block.
|
|
- **Fixtures.** `Fixtures/*.json` are linked from `Server/RadicadeServer-Config/`
|
|
(`avatar.json`, `merged-avatar.json`, `equipment*.json`, `consumables.json`,
|
|
`avatar-item-lookup.json`, `2022-avatar.json`) and copied to the output directory;
|
|
`Fixtures/split-tests-20230301.json` lives in the repository itself.
|
|
- **Shared client sources.** `NameserverRedirect.cs` and `ImageSignatureRequest.cs`
|
|
from `2023Patch/RadicadeEacBypass/` are compiled into this test assembly, so the
|
|
host-redirect map and image-signature contract are asserted server-side.
|
|
- **Test doubles.** Helpers such as `TestDbContextFactory`, `SetBody`, `CreateEventAsync`
|
|
and the various request builders keep test bodies focused on the assertion.
|
|
|
|
## Adding tests
|
|
|
|
Follow the existing shape: one class per feature area, `[Fact]`/`[Theory]` per case,
|
|
names that read as a sentence about the behaviour (`AvatarUnlockCatalog_Preserves…`).
|
|
Prefer asserting the exact JSON shape the 2023 client expects over asserting internal
|
|
state, since response-shape conformance is what most of this suite protects.
|
|
|
|
## Known warnings
|
|
|
|
The build emits `xUnit1031` warnings in `RecNetShapeConformanceTests.cs` where tests
|
|
block on tasks (`.Result`/`.GetAwaiter().GetResult()`). They are pre-existing; the
|
|
inline fix is to make the test `async` and `await`.
|