feat(client): standardize connection outcomes (#13)
quality-gate / quality (push) Successful in 59s
quality-gate / quality (push) Successful in 59s
This commit is contained in:
@@ -22,6 +22,7 @@ public sealed class OpenApiCompatibilityTests
|
||||
"buildVersion",
|
||||
"capacity",
|
||||
"contractVersion",
|
||||
"dedicatedFallback",
|
||||
"displayName",
|
||||
"environmentId",
|
||||
"gameId",
|
||||
@@ -63,14 +64,46 @@ public sealed class OpenApiCompatibilityTests
|
||||
Assert.Equal(ExpectedListingProperties, listingProperties);
|
||||
Assert.DoesNotContain(listingProperties, static property =>
|
||||
property.Contains("token", StringComparison.OrdinalIgnoreCase)
|
||||
|| property.Contains("endpoint", StringComparison.OrdinalIgnoreCase)
|
||||
|| property.Contains("playerId", StringComparison.OrdinalIgnoreCase));
|
||||
JsonElement dedicatedFallback = schemas.GetProperty("SessionListing")
|
||||
.GetProperty("properties")
|
||||
.GetProperty("dedicatedFallback");
|
||||
JsonElement fallbackReference = Assert.Single(
|
||||
dedicatedFallback.GetProperty("oneOf").EnumerateArray(),
|
||||
static schema => schema.TryGetProperty("$ref", out _));
|
||||
Assert.Equal(
|
||||
"#/components/schemas/NetworkEndpoint",
|
||||
fallbackReference.GetProperty("$ref").GetString());
|
||||
|
||||
JsonElement outcomeReportProperties = schemas.GetProperty("ReportConnectionOutcomeRequest")
|
||||
.GetProperty("properties");
|
||||
Assert.True(outcomeReportProperties.TryGetProperty("elapsedBucket", out _));
|
||||
Assert.True(outcomeReportProperties.TryGetProperty("elapsedMilliseconds", out _));
|
||||
Assert.True(outcomeReportProperties.TryGetProperty("diagnosticCode", out _));
|
||||
string[] outcomeNames = schemas.GetProperty("ConnectionOutcomeKind")
|
||||
.GetProperty("enum")
|
||||
.EnumerateArray()
|
||||
.Select(static value => value.GetString()!)
|
||||
.ToArray();
|
||||
Assert.Contains("timedOut", outcomeNames);
|
||||
Assert.Contains("staleHost", outcomeNames);
|
||||
Assert.Contains("transportFailed", outcomeNames);
|
||||
Assert.Contains("punchTimedOut", outcomeNames);
|
||||
Assert.Contains("directConnectTimedOut", outcomeNames);
|
||||
Assert.Contains("transportError", outcomeNames);
|
||||
|
||||
JsonElement publisherBearer = root.GetProperty("components")
|
||||
.GetProperty("securitySchemes")
|
||||
.GetProperty("PublisherBearer");
|
||||
Assert.Equal("http", publisherBearer.GetProperty("type").GetString());
|
||||
Assert.Equal("bearer", publisherBearer.GetProperty("scheme").GetString());
|
||||
JsonElement attemptCapability = root.GetProperty("components")
|
||||
.GetProperty("securitySchemes")
|
||||
.GetProperty("JoinAttemptCapability");
|
||||
Assert.Equal("apiKey", attemptCapability.GetProperty("type").GetString());
|
||||
Assert.Equal(
|
||||
"X-Rendezvous-Client-Punch-Capability",
|
||||
attemptCapability.GetProperty("name").GetString());
|
||||
(string Path, string Method)[] publisherOperations =
|
||||
[
|
||||
("/v1/sessions", "post"),
|
||||
@@ -96,6 +129,18 @@ public sealed class OpenApiCompatibilityTests
|
||||
&& parameter.GetProperty("name").GetString()
|
||||
== "X-Rendezvous-Client-Punch-Capability");
|
||||
Assert.True(cancelCapability.GetProperty("required").GetBoolean());
|
||||
foreach ((string operationPath, string method) in new[]
|
||||
{
|
||||
("/v1/join-attempts/{attemptId}", "delete"),
|
||||
("/v1/join-attempts/{attemptId}/outcome", "post"),
|
||||
})
|
||||
{
|
||||
JsonElement security = root.GetProperty("paths")
|
||||
.GetProperty(operationPath)
|
||||
.GetProperty(method)
|
||||
.GetProperty("security");
|
||||
Assert.True(security[0].TryGetProperty("JoinAttemptCapability", out _));
|
||||
}
|
||||
JsonElement hostPollParameters = root.GetProperty("paths")
|
||||
.GetProperty("/v1/sessions/{listingId}/join-attempts")
|
||||
.GetProperty("get")
|
||||
|
||||
Reference in New Issue
Block a user