forked from xiongyuxing/tiku-backend.net
68 lines
2.3 KiB
C#
68 lines
2.3 KiB
C#
using System.Net;
|
|
using System.Text.Json;
|
|
|
|
namespace Tiku.IntegrationTests.Api;
|
|
|
|
public sealed class OpenApiDocumentationTests
|
|
{
|
|
[Fact]
|
|
public async Task Openapi_includes_request_schema_property_descriptions()
|
|
{
|
|
await using var factory = new ApiTestFactory();
|
|
using var client = factory.CreateClient();
|
|
|
|
using var response = await client.GetAsync("/openapi/v1.json");
|
|
var document = JsonDocument.Parse(await response.Content.ReadAsStringAsync());
|
|
|
|
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
|
Assert.Contains(
|
|
"租户 ID",
|
|
GetSchemaPropertyDescription(document, "PasswordLoginDto", "tenantId"),
|
|
StringComparison.Ordinal);
|
|
Assert.Contains(
|
|
"手机号",
|
|
GetSchemaPropertyDescription(document, "PasswordLoginDto", "phone"),
|
|
StringComparison.Ordinal);
|
|
Assert.Contains(
|
|
"refresh token",
|
|
GetSchemaPropertyDescription(document, "RefreshSessionDto", "refreshToken"),
|
|
StringComparison.OrdinalIgnoreCase);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task Openapi_includes_response_schema_property_descriptions()
|
|
{
|
|
await using var factory = new ApiTestFactory();
|
|
using var client = factory.CreateClient();
|
|
|
|
using var response = await client.GetAsync("/openapi/v1.json");
|
|
var document = JsonDocument.Parse(await response.Content.ReadAsStringAsync());
|
|
|
|
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
|
Assert.Contains(
|
|
"access token",
|
|
GetSchemaPropertyDescription(document, "AuthTokenPair", "accessToken"),
|
|
StringComparison.OrdinalIgnoreCase);
|
|
Assert.Contains(
|
|
"租户名称",
|
|
GetSchemaPropertyDescription(document, "PublicTenantDto", "name"),
|
|
StringComparison.Ordinal);
|
|
}
|
|
|
|
private static string GetSchemaPropertyDescription(
|
|
JsonDocument document,
|
|
string schemaName,
|
|
string propertyName)
|
|
{
|
|
return document
|
|
.RootElement
|
|
.GetProperty("components")
|
|
.GetProperty("schemas")
|
|
.GetProperty(schemaName)
|
|
.GetProperty("properties")
|
|
.GetProperty(propertyName)
|
|
.GetProperty("description")
|
|
.GetString() ?? string.Empty;
|
|
}
|
|
}
|