-
Notifications
You must be signed in to change notification settings - Fork 24
Expand file tree
/
Copy pathStatusControllerTests.cs
More file actions
57 lines (49 loc) · 1.92 KB
/
Copy pathStatusControllerTests.cs
File metadata and controls
57 lines (49 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
using System.Net;
using System.Text.Json;
using Microsoft.AspNetCore.Mvc.Testing;
namespace Robust.Cdn.Tests.Controllers;
/// <summary>
/// Integration tests for <c>StatusController</c>.
///
/// Endpoint: GET /control/status
/// </summary>
[Trait("Category", "Integration")]
public sealed class StatusControllerTests(WebApplicationFactory<Program> factory, DatabaseFixture database)
: TestBase(factory, database)
{
protected override string ForkName => "testfork";
protected override Dictionary<string, string?> GetConfigurationOverrides()
{
var baseDir = Database.CreateTestVersionOnDisk(ForkName, "1.0.0");
return new()
{
["Manifest:FileDiskPath"] = baseDir,
};
}
[Fact]
public async Task GetControlStatus_ReturnsOkWithVersionInfo()
{
var client = Factory.CreateClient();
var response = await client.GetAsync("/control/status");
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var content = await response.Content.ReadAsStringAsync();
Assert.Contains("OK", content);
Assert.Contains("contentVersions", content);
Assert.Contains("version", content, StringComparison.OrdinalIgnoreCase);
}
[Fact]
public async Task GetControlStatus_WithExistingVersion_ReturnsNonZeroCount()
{
var client = Factory.CreateClient();
// The ingest job runs asynchronously at startup. Poll until we see version info.
await PollUntilCondition(() => client.GetAsync("/control/status"), async response =>
{
var body = await response.Content.ReadAsStringAsync();
var deserialized = JsonSerializer.Deserialize<Dictionary<string, object>>(body);
return deserialized != null
&& deserialized.TryGetValue("contentVersions", out var raw)
&& int.TryParse(raw?.ToString(), out var count)
&& count > 0;
});
}
}