diff --git a/.gitignore b/.gitignore index c5305f08..5190392f 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,7 @@ PublishProfiles *.GhostDoc.xml *.log *.nupkg +!.packages/*.nupkg *.opensdf *.[Pp]ublish.xml *.publishproj diff --git a/.packages/Swashbuckle.AspNetCore.9.0.0-pr.3283.1370.nupkg b/.packages/Swashbuckle.AspNetCore.9.0.0-pr.3283.1370.nupkg new file mode 100644 index 00000000..bc15faf0 Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.9.0.0-pr.3283.1370.nupkg differ diff --git a/.packages/Swashbuckle.AspNetCore.Annotations.9.0.0-pr.3283.1370.nupkg b/.packages/Swashbuckle.AspNetCore.Annotations.9.0.0-pr.3283.1370.nupkg new file mode 100644 index 00000000..1ec614f3 Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.Annotations.9.0.0-pr.3283.1370.nupkg differ diff --git a/.packages/Swashbuckle.AspNetCore.Annotations.9.0.0-pr.3283.1370.snupkg b/.packages/Swashbuckle.AspNetCore.Annotations.9.0.0-pr.3283.1370.snupkg new file mode 100644 index 00000000..122cbc5d Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.Annotations.9.0.0-pr.3283.1370.snupkg differ diff --git a/.packages/Swashbuckle.AspNetCore.ApiTesting.9.0.0-pr.3283.1370.nupkg b/.packages/Swashbuckle.AspNetCore.ApiTesting.9.0.0-pr.3283.1370.nupkg new file mode 100644 index 00000000..553fb5be Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.ApiTesting.9.0.0-pr.3283.1370.nupkg differ diff --git a/.packages/Swashbuckle.AspNetCore.ApiTesting.9.0.0-pr.3283.1370.snupkg b/.packages/Swashbuckle.AspNetCore.ApiTesting.9.0.0-pr.3283.1370.snupkg new file mode 100644 index 00000000..15706586 Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.ApiTesting.9.0.0-pr.3283.1370.snupkg differ diff --git a/.packages/Swashbuckle.AspNetCore.ApiTesting.Xunit.9.0.0-pr.3283.1370.nupkg b/.packages/Swashbuckle.AspNetCore.ApiTesting.Xunit.9.0.0-pr.3283.1370.nupkg new file mode 100644 index 00000000..80458dba Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.ApiTesting.Xunit.9.0.0-pr.3283.1370.nupkg differ diff --git a/.packages/Swashbuckle.AspNetCore.ApiTesting.Xunit.9.0.0-pr.3283.1370.snupkg b/.packages/Swashbuckle.AspNetCore.ApiTesting.Xunit.9.0.0-pr.3283.1370.snupkg new file mode 100644 index 00000000..9d4fd327 Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.ApiTesting.Xunit.9.0.0-pr.3283.1370.snupkg differ diff --git a/.packages/Swashbuckle.AspNetCore.Cli.9.0.0-pr.3283.1370.nupkg b/.packages/Swashbuckle.AspNetCore.Cli.9.0.0-pr.3283.1370.nupkg new file mode 100644 index 00000000..ad89fc95 Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.Cli.9.0.0-pr.3283.1370.nupkg differ diff --git a/.packages/Swashbuckle.AspNetCore.Cli.9.0.0-pr.3283.1370.snupkg b/.packages/Swashbuckle.AspNetCore.Cli.9.0.0-pr.3283.1370.snupkg new file mode 100644 index 00000000..e5421902 Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.Cli.9.0.0-pr.3283.1370.snupkg differ diff --git a/.packages/Swashbuckle.AspNetCore.Newtonsoft.9.0.0-pr.3283.1370.nupkg b/.packages/Swashbuckle.AspNetCore.Newtonsoft.9.0.0-pr.3283.1370.nupkg new file mode 100644 index 00000000..be9aa678 Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.Newtonsoft.9.0.0-pr.3283.1370.nupkg differ diff --git a/.packages/Swashbuckle.AspNetCore.Newtonsoft.9.0.0-pr.3283.1370.snupkg b/.packages/Swashbuckle.AspNetCore.Newtonsoft.9.0.0-pr.3283.1370.snupkg new file mode 100644 index 00000000..00202010 Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.Newtonsoft.9.0.0-pr.3283.1370.snupkg differ diff --git a/.packages/Swashbuckle.AspNetCore.ReDoc.9.0.0-pr.3283.1370.nupkg b/.packages/Swashbuckle.AspNetCore.ReDoc.9.0.0-pr.3283.1370.nupkg new file mode 100644 index 00000000..1106f97b Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.ReDoc.9.0.0-pr.3283.1370.nupkg differ diff --git a/.packages/Swashbuckle.AspNetCore.ReDoc.9.0.0-pr.3283.1370.snupkg b/.packages/Swashbuckle.AspNetCore.ReDoc.9.0.0-pr.3283.1370.snupkg new file mode 100644 index 00000000..98af00cb Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.ReDoc.9.0.0-pr.3283.1370.snupkg differ diff --git a/.packages/Swashbuckle.AspNetCore.Swagger.9.0.0-pr.3283.1370.nupkg b/.packages/Swashbuckle.AspNetCore.Swagger.9.0.0-pr.3283.1370.nupkg new file mode 100644 index 00000000..9f293fed Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.Swagger.9.0.0-pr.3283.1370.nupkg differ diff --git a/.packages/Swashbuckle.AspNetCore.Swagger.9.0.0-pr.3283.1370.snupkg b/.packages/Swashbuckle.AspNetCore.Swagger.9.0.0-pr.3283.1370.snupkg new file mode 100644 index 00000000..0ff3e750 Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.Swagger.9.0.0-pr.3283.1370.snupkg differ diff --git a/.packages/Swashbuckle.AspNetCore.SwaggerGen.9.0.0-pr.3283.1370.nupkg b/.packages/Swashbuckle.AspNetCore.SwaggerGen.9.0.0-pr.3283.1370.nupkg new file mode 100644 index 00000000..9d6ce3cb Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.SwaggerGen.9.0.0-pr.3283.1370.nupkg differ diff --git a/.packages/Swashbuckle.AspNetCore.SwaggerGen.9.0.0-pr.3283.1370.snupkg b/.packages/Swashbuckle.AspNetCore.SwaggerGen.9.0.0-pr.3283.1370.snupkg new file mode 100644 index 00000000..1079f58d Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.SwaggerGen.9.0.0-pr.3283.1370.snupkg differ diff --git a/.packages/Swashbuckle.AspNetCore.SwaggerUI.9.0.0-pr.3283.1370.nupkg b/.packages/Swashbuckle.AspNetCore.SwaggerUI.9.0.0-pr.3283.1370.nupkg new file mode 100644 index 00000000..69bb6d3d Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.SwaggerUI.9.0.0-pr.3283.1370.nupkg differ diff --git a/.packages/Swashbuckle.AspNetCore.SwaggerUI.9.0.0-pr.3283.1370.snupkg b/.packages/Swashbuckle.AspNetCore.SwaggerUI.9.0.0-pr.3283.1370.snupkg new file mode 100644 index 00000000..7d8b5ea1 Binary files /dev/null and b/.packages/Swashbuckle.AspNetCore.SwaggerUI.9.0.0-pr.3283.1370.snupkg differ diff --git a/NuGet.config b/NuGet.config index 3d72cb4f..8aef45aa 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,6 +4,7 @@ + @@ -14,6 +15,9 @@ + + + diff --git a/global.json b/global.json index efdbd0d5..a7076365 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "10.0.100-preview.3.25201.16", + "version": "10.0.100-preview.4.25258.110", "allowPrerelease": false, "rollForward": "latestMajor" } diff --git a/src/TodoApp/OpenApi/AspNetCore/AspNetCoreOpenApiEndpoints.cs b/src/TodoApp/OpenApi/AspNetCore/AspNetCoreOpenApiEndpoints.cs index 8fc8d2e1..21a78cbd 100644 --- a/src/TodoApp/OpenApi/AspNetCore/AspNetCoreOpenApiEndpoints.cs +++ b/src/TodoApp/OpenApi/AspNetCore/AspNetCoreOpenApiEndpoints.cs @@ -46,11 +46,12 @@ public static IServiceCollection AddAspNetCoreOpenApi(this IServiceCollection se Type = SecuritySchemeType.Http, }; - var reference = new OpenApiSecuritySchemeReference("Bearer", document); + var referenceId = "Bearer"; + var reference = new OpenApiSecuritySchemeReference(referenceId, document); document.Components ??= new(); - document.Components.SecuritySchemes ??= new Dictionary(); - document.Components.SecuritySchemes[reference.Reference.Id] = scheme; + document.Components.SecuritySchemes ??= []; + document.Components.SecuritySchemes[referenceId] = scheme; document.Security ??= []; document.Security.Add(new() { [reference] = [] }); diff --git a/src/TodoApp/OpenApi/ExamplesProcessor.cs b/src/TodoApp/OpenApi/ExamplesProcessor.cs index ed8dc9bf..f5ff54bc 100644 --- a/src/TodoApp/OpenApi/ExamplesProcessor.cs +++ b/src/TodoApp/OpenApi/ExamplesProcessor.cs @@ -94,7 +94,10 @@ private static void TryAddRequestExamples( ApiDescription description, IList examples) { - if (!body.Content.TryGetValue("application/json", out var mediaType) || mediaType.Example is not null) + if (body is null || + body.Content is null || + !body.Content.TryGetValue("application/json", out var mediaType) || + mediaType.Example is not null) { return; } @@ -131,7 +134,7 @@ private static void TryAddResponseExamples( foreach (var responseFormat in schemaResponse.ApiResponseFormats) { if (responses.TryGetValue(schemaResponse.StatusCode.ToString(CultureInfo.InvariantCulture), out var response) && - response.Content.TryGetValue(responseFormat.MediaType, out var mediaType)) + response.Content?.TryGetValue(responseFormat.MediaType, out var mediaType) is true) { mediaType.Example ??= (metadata ?? examples.SingleOrDefault((p) => p.SchemaType == schemaResponse.Type))?.GenerateExample(Context); } diff --git a/src/TodoApp/TodoApp.csproj b/src/TodoApp/TodoApp.csproj index f6462c4e..ea2856f1 100644 --- a/src/TodoApp/TodoApp.csproj +++ b/src/TodoApp/TodoApp.csproj @@ -14,14 +14,14 @@ latest - - - - + + + + - - + + diff --git a/tests/TodoApp.Tests/OpenApiTests.cs b/tests/TodoApp.Tests/OpenApiTests.cs index 8097ce35..06a2f654 100644 --- a/tests/TodoApp.Tests/OpenApiTests.cs +++ b/tests/TodoApp.Tests/OpenApiTests.cs @@ -65,7 +65,10 @@ public async Task Schema_Has_No_Validation_Warnings(string schemaUrl) // Assert var actual = await OpenApiDocument.LoadAsync(schema, "json", cancellationToken: TestContext.Current.CancellationToken); + Assert.NotNull(actual); + Assert.NotNull(actual.Diagnostic); Assert.Empty(actual.Diagnostic.Errors); + Assert.NotNull(actual.Document); var errors = actual.Document.Validate(ruleSet); diff --git a/tests/TodoApp.Tests/TodoApp.Tests.csproj b/tests/TodoApp.Tests/TodoApp.Tests.csproj index 63602b21..d3e93996 100644 --- a/tests/TodoApp.Tests/TodoApp.Tests.csproj +++ b/tests/TodoApp.Tests/TodoApp.Tests.csproj @@ -10,7 +10,7 @@ - +