Skip to content

Commit 04e2580

Browse files
Verify Kiota-generated code
Add a snapshot test for the code generated by Kiota.
1 parent 26356d5 commit 04e2580

14 files changed

Lines changed: 997 additions & 0 deletions

test/Swashbuckle.AspNetCore.IntegrationTests/CodeGenerationTests.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,15 @@ await WithTodoAppClientAsync(async (client) =>
288288
});
289289
}
290290

291+
[Fact]
292+
public async Task VerifyKiotaTodoAppClient()
293+
{
294+
await VerifyDirectory(
295+
Path.Combine(GetProjectRoot(), "TodoClient"),
296+
pattern: "*.cs",
297+
options: new() { RecurseSubdirectories = true }).UseDirectory("snapshots");
298+
}
299+
291300
private static string GetProjectRoot() =>
292301
typeof(CodeGenerationTests).Assembly
293302
.GetCustomAttributes<AssemblyMetadataAttribute>()

test/Swashbuckle.AspNetCore.IntegrationTests/Swashbuckle.AspNetCore.IntegrationTests.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@
2626
<PackageReference Include="xunit.v3.mtp-off" />
2727
</ItemGroup>
2828

29+
<ItemGroup>
30+
<Compile Remove="snapshots\**\*.cs" />
31+
</ItemGroup>
32+
2933
<ItemGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))">
3034
<AssemblyMetadata Include="ProjectRoot" Value="$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)'))" />
3135
<AssemblyMetadata Include="SolutionRoot" Value="$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)\..\..'))" />
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// <auto-generated/>
2+
#pragma warning disable CS0618
3+
using Microsoft.Kiota.Abstractions.Extensions;
4+
using Microsoft.Kiota.Abstractions;
5+
using System.Collections.Generic;
6+
using System.IO;
7+
using System.Threading.Tasks;
8+
using System;
9+
using TodoApp.Client.Api.Items;
10+
namespace TodoApp.Client.Api
11+
{
12+
/// <summary>
13+
/// Builds and executes requests for operations under \api
14+
/// </summary>
15+
[global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
16+
public partial class ApiRequestBuilder : BaseRequestBuilder
17+
{
18+
/// <summary>The items property</summary>
19+
public global::TodoApp.Client.Api.Items.ItemsRequestBuilder Items
20+
{
21+
get => new global::TodoApp.Client.Api.Items.ItemsRequestBuilder(PathParameters, RequestAdapter);
22+
}
23+
/// <summary>
24+
/// Instantiates a new <see cref="global::TodoApp.Client.Api.ApiRequestBuilder"/> and sets the default values.
25+
/// </summary>
26+
/// <param name="pathParameters">Path parameters for the request</param>
27+
/// <param name="requestAdapter">The request adapter to use to execute the requests.</param>
28+
public ApiRequestBuilder(Dictionary<string, object> pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/api", pathParameters)
29+
{
30+
}
31+
/// <summary>
32+
/// Instantiates a new <see cref="global::TodoApp.Client.Api.ApiRequestBuilder"/> and sets the default values.
33+
/// </summary>
34+
/// <param name="rawUrl">The raw URL to use for the request builder.</param>
35+
/// <param name="requestAdapter">The request adapter to use to execute the requests.</param>
36+
public ApiRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/api", rawUrl)
37+
{
38+
}
39+
}
40+
}
41+
#pragma warning restore CS0618
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
// <auto-generated/>
2+
#pragma warning disable CS0618
3+
using Microsoft.Kiota.Abstractions.Extensions;
4+
using Microsoft.Kiota.Abstractions.Serialization;
5+
using Microsoft.Kiota.Abstractions;
6+
using System.Collections.Generic;
7+
using System.IO;
8+
using System.Threading.Tasks;
9+
using System.Threading;
10+
using System;
11+
using TodoApp.Client.Models;
12+
namespace TodoApp.Client.Api.Items.Find
13+
{
14+
/// <summary>
15+
/// Builds and executes requests for operations under \api\items\find
16+
/// </summary>
17+
[global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
18+
public partial class FindRequestBuilder : BaseRequestBuilder
19+
{
20+
/// <summary>
21+
/// Instantiates a new <see cref="global::TodoApp.Client.Api.Items.Find.FindRequestBuilder"/> and sets the default values.
22+
/// </summary>
23+
/// <param name="pathParameters">Path parameters for the request</param>
24+
/// <param name="requestAdapter">The request adapter to use to execute the requests.</param>
25+
public FindRequestBuilder(Dictionary<string, object> pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/api/items/find?IsCompleted={IsCompleted}&Text={Text}", pathParameters)
26+
{
27+
}
28+
/// <summary>
29+
/// Instantiates a new <see cref="global::TodoApp.Client.Api.Items.Find.FindRequestBuilder"/> and sets the default values.
30+
/// </summary>
31+
/// <param name="rawUrl">The raw URL to use for the request builder.</param>
32+
/// <param name="requestAdapter">The request adapter to use to execute the requests.</param>
33+
public FindRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/api/items/find?IsCompleted={IsCompleted}&Text={Text}", rawUrl)
34+
{
35+
}
36+
/// <returns>A <see cref="global::TodoApp.Client.Models.TodoListViewModel"/></returns>
37+
/// <param name="cancellationToken">Cancellation token to use when cancelling requests</param>
38+
/// <param name="requestConfiguration">Configuration for the request such as headers, query parameters, and middleware options.</param>
39+
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
40+
#nullable enable
41+
public async Task<global::TodoApp.Client.Models.TodoListViewModel?> GetAsync(Action<RequestConfiguration<global::TodoApp.Client.Api.Items.Find.FindRequestBuilder.FindRequestBuilderGetQueryParameters>>? requestConfiguration = default, CancellationToken cancellationToken = default)
42+
{
43+
#nullable restore
44+
#else
45+
public async Task<global::TodoApp.Client.Models.TodoListViewModel> GetAsync(Action<RequestConfiguration<global::TodoApp.Client.Api.Items.Find.FindRequestBuilder.FindRequestBuilderGetQueryParameters>> requestConfiguration = default, CancellationToken cancellationToken = default)
46+
{
47+
#endif
48+
var requestInfo = ToGetRequestInformation(requestConfiguration);
49+
return await RequestAdapter.SendAsync<global::TodoApp.Client.Models.TodoListViewModel>(requestInfo, global::TodoApp.Client.Models.TodoListViewModel.CreateFromDiscriminatorValue, default, cancellationToken).ConfigureAwait(false);
50+
}
51+
/// <returns>A <see cref="RequestInformation"/></returns>
52+
/// <param name="requestConfiguration">Configuration for the request such as headers, query parameters, and middleware options.</param>
53+
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
54+
#nullable enable
55+
public RequestInformation ToGetRequestInformation(Action<RequestConfiguration<global::TodoApp.Client.Api.Items.Find.FindRequestBuilder.FindRequestBuilderGetQueryParameters>>? requestConfiguration = default)
56+
{
57+
#nullable restore
58+
#else
59+
public RequestInformation ToGetRequestInformation(Action<RequestConfiguration<global::TodoApp.Client.Api.Items.Find.FindRequestBuilder.FindRequestBuilderGetQueryParameters>> requestConfiguration = default)
60+
{
61+
#endif
62+
var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
63+
requestInfo.Configure(requestConfiguration);
64+
requestInfo.Headers.TryAdd("Accept", "application/json");
65+
return requestInfo;
66+
}
67+
/// <summary>
68+
/// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
69+
/// </summary>
70+
/// <returns>A <see cref="global::TodoApp.Client.Api.Items.Find.FindRequestBuilder"/></returns>
71+
/// <param name="rawUrl">The raw URL to use for the request builder.</param>
72+
public global::TodoApp.Client.Api.Items.Find.FindRequestBuilder WithUrl(string rawUrl)
73+
{
74+
return new global::TodoApp.Client.Api.Items.Find.FindRequestBuilder(rawUrl, RequestAdapter);
75+
}
76+
[global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
77+
#pragma warning disable CS1591
78+
public partial class FindRequestBuilderGetQueryParameters
79+
#pragma warning restore CS1591
80+
{
81+
/// <summary>Gets or sets a value indicating whether to search completed Todo items.</summary>
82+
public bool? IsCompleted { get; set; }
83+
/// <summary>Gets or sets the text of the filter.</summary>
84+
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
85+
#nullable enable
86+
public string? Text { get; set; }
87+
#nullable restore
88+
#else
89+
public string Text { get; set; }
90+
#endif
91+
}
92+
}
93+
}
94+
#pragma warning restore CS0618
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
// <auto-generated/>
2+
#pragma warning disable CS0618
3+
using Microsoft.Kiota.Abstractions.Extensions;
4+
using Microsoft.Kiota.Abstractions.Serialization;
5+
using Microsoft.Kiota.Abstractions;
6+
using System.Collections.Generic;
7+
using System.IO;
8+
using System.Threading.Tasks;
9+
using System.Threading;
10+
using System;
11+
using TodoApp.Client.Models;
12+
namespace TodoApp.Client.Api.Items.GetAfter
13+
{
14+
/// <summary>
15+
/// Builds and executes requests for operations under \api\items\getAfter
16+
/// </summary>
17+
[global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
18+
public partial class GetAfterRequestBuilder : BaseRequestBuilder
19+
{
20+
/// <summary>
21+
/// Instantiates a new <see cref="global::TodoApp.Client.Api.Items.GetAfter.GetAfterRequestBuilder"/> and sets the default values.
22+
/// </summary>
23+
/// <param name="pathParameters">Path parameters for the request</param>
24+
/// <param name="requestAdapter">The request adapter to use to execute the requests.</param>
25+
public GetAfterRequestBuilder(Dictionary<string, object> pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/api/items/getAfter?value={value}", pathParameters)
26+
{
27+
}
28+
/// <summary>
29+
/// Instantiates a new <see cref="global::TodoApp.Client.Api.Items.GetAfter.GetAfterRequestBuilder"/> and sets the default values.
30+
/// </summary>
31+
/// <param name="rawUrl">The raw URL to use for the request builder.</param>
32+
/// <param name="requestAdapter">The request adapter to use to execute the requests.</param>
33+
public GetAfterRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/api/items/getAfter?value={value}", rawUrl)
34+
{
35+
}
36+
/// <returns>A <see cref="global::TodoApp.Client.Models.TodoListViewModel"/></returns>
37+
/// <param name="cancellationToken">Cancellation token to use when cancelling requests</param>
38+
/// <param name="requestConfiguration">Configuration for the request such as headers, query parameters, and middleware options.</param>
39+
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
40+
#nullable enable
41+
public async Task<global::TodoApp.Client.Models.TodoListViewModel?> GetAsync(Action<RequestConfiguration<global::TodoApp.Client.Api.Items.GetAfter.GetAfterRequestBuilder.GetAfterRequestBuilderGetQueryParameters>>? requestConfiguration = default, CancellationToken cancellationToken = default)
42+
{
43+
#nullable restore
44+
#else
45+
public async Task<global::TodoApp.Client.Models.TodoListViewModel> GetAsync(Action<RequestConfiguration<global::TodoApp.Client.Api.Items.GetAfter.GetAfterRequestBuilder.GetAfterRequestBuilderGetQueryParameters>> requestConfiguration = default, CancellationToken cancellationToken = default)
46+
{
47+
#endif
48+
var requestInfo = ToGetRequestInformation(requestConfiguration);
49+
return await RequestAdapter.SendAsync<global::TodoApp.Client.Models.TodoListViewModel>(requestInfo, global::TodoApp.Client.Models.TodoListViewModel.CreateFromDiscriminatorValue, default, cancellationToken).ConfigureAwait(false);
50+
}
51+
/// <returns>A <see cref="RequestInformation"/></returns>
52+
/// <param name="requestConfiguration">Configuration for the request such as headers, query parameters, and middleware options.</param>
53+
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
54+
#nullable enable
55+
public RequestInformation ToGetRequestInformation(Action<RequestConfiguration<global::TodoApp.Client.Api.Items.GetAfter.GetAfterRequestBuilder.GetAfterRequestBuilderGetQueryParameters>>? requestConfiguration = default)
56+
{
57+
#nullable restore
58+
#else
59+
public RequestInformation ToGetRequestInformation(Action<RequestConfiguration<global::TodoApp.Client.Api.Items.GetAfter.GetAfterRequestBuilder.GetAfterRequestBuilderGetQueryParameters>> requestConfiguration = default)
60+
{
61+
#endif
62+
var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
63+
requestInfo.Configure(requestConfiguration);
64+
requestInfo.Headers.TryAdd("Accept", "application/json");
65+
return requestInfo;
66+
}
67+
/// <summary>
68+
/// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
69+
/// </summary>
70+
/// <returns>A <see cref="global::TodoApp.Client.Api.Items.GetAfter.GetAfterRequestBuilder"/></returns>
71+
/// <param name="rawUrl">The raw URL to use for the request builder.</param>
72+
public global::TodoApp.Client.Api.Items.GetAfter.GetAfterRequestBuilder WithUrl(string rawUrl)
73+
{
74+
return new global::TodoApp.Client.Api.Items.GetAfter.GetAfterRequestBuilder(rawUrl, RequestAdapter);
75+
}
76+
[global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
77+
#pragma warning disable CS1591
78+
public partial class GetAfterRequestBuilderGetQueryParameters
79+
#pragma warning restore CS1591
80+
{
81+
[QueryParameter("value")]
82+
public DateTimeOffset? Value { get; set; }
83+
}
84+
}
85+
}
86+
#pragma warning restore CS0618
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
// <auto-generated/>
2+
#pragma warning disable CS0618
3+
using Microsoft.Kiota.Abstractions.Extensions;
4+
using Microsoft.Kiota.Abstractions.Serialization;
5+
using Microsoft.Kiota.Abstractions;
6+
using System.Collections.Generic;
7+
using System.IO;
8+
using System.Threading.Tasks;
9+
using System.Threading;
10+
using System;
11+
using TodoApp.Client.Models;
12+
namespace TodoApp.Client.Api.Items.Item.Complete
13+
{
14+
/// <summary>
15+
/// Builds and executes requests for operations under \api\items\{id}\complete
16+
/// </summary>
17+
[global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
18+
public partial class CompleteRequestBuilder : BaseRequestBuilder
19+
{
20+
/// <summary>
21+
/// Instantiates a new <see cref="global::TodoApp.Client.Api.Items.Item.Complete.CompleteRequestBuilder"/> and sets the default values.
22+
/// </summary>
23+
/// <param name="pathParameters">Path parameters for the request</param>
24+
/// <param name="requestAdapter">The request adapter to use to execute the requests.</param>
25+
public CompleteRequestBuilder(Dictionary<string, object> pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/api/items/{id}/complete", pathParameters)
26+
{
27+
}
28+
/// <summary>
29+
/// Instantiates a new <see cref="global::TodoApp.Client.Api.Items.Item.Complete.CompleteRequestBuilder"/> and sets the default values.
30+
/// </summary>
31+
/// <param name="rawUrl">The raw URL to use for the request builder.</param>
32+
/// <param name="requestAdapter">The request adapter to use to execute the requests.</param>
33+
public CompleteRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/api/items/{id}/complete", rawUrl)
34+
{
35+
}
36+
/// <summary>
37+
/// Marks the todo item with the specified ID as complete.
38+
/// </summary>
39+
/// <param name="cancellationToken">Cancellation token to use when cancelling requests</param>
40+
/// <param name="requestConfiguration">Configuration for the request such as headers, query parameters, and middleware options.</param>
41+
/// <exception cref="global::TodoApp.Client.Models.ProblemDetails">When receiving a 400 status code</exception>
42+
/// <exception cref="global::TodoApp.Client.Models.ProblemDetails">When receiving a 404 status code</exception>
43+
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
44+
#nullable enable
45+
public async Task PostAsync(Action<RequestConfiguration<DefaultQueryParameters>>? requestConfiguration = default, CancellationToken cancellationToken = default)
46+
{
47+
#nullable restore
48+
#else
49+
public async Task PostAsync(Action<RequestConfiguration<DefaultQueryParameters>> requestConfiguration = default, CancellationToken cancellationToken = default)
50+
{
51+
#endif
52+
var requestInfo = ToPostRequestInformation(requestConfiguration);
53+
var errorMapping = new Dictionary<string, ParsableFactory<IParsable>>
54+
{
55+
{ "400", global::TodoApp.Client.Models.ProblemDetails.CreateFromDiscriminatorValue },
56+
{ "404", global::TodoApp.Client.Models.ProblemDetails.CreateFromDiscriminatorValue },
57+
};
58+
await RequestAdapter.SendNoContentAsync(requestInfo, errorMapping, cancellationToken).ConfigureAwait(false);
59+
}
60+
/// <summary>
61+
/// Marks the todo item with the specified ID as complete.
62+
/// </summary>
63+
/// <returns>A <see cref="RequestInformation"/></returns>
64+
/// <param name="requestConfiguration">Configuration for the request such as headers, query parameters, and middleware options.</param>
65+
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
66+
#nullable enable
67+
public RequestInformation ToPostRequestInformation(Action<RequestConfiguration<DefaultQueryParameters>>? requestConfiguration = default)
68+
{
69+
#nullable restore
70+
#else
71+
public RequestInformation ToPostRequestInformation(Action<RequestConfiguration<DefaultQueryParameters>> requestConfiguration = default)
72+
{
73+
#endif
74+
var requestInfo = new RequestInformation(Method.POST, UrlTemplate, PathParameters);
75+
requestInfo.Configure(requestConfiguration);
76+
requestInfo.Headers.TryAdd("Accept", "application/problem+json");
77+
return requestInfo;
78+
}
79+
/// <summary>
80+
/// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
81+
/// </summary>
82+
/// <returns>A <see cref="global::TodoApp.Client.Api.Items.Item.Complete.CompleteRequestBuilder"/></returns>
83+
/// <param name="rawUrl">The raw URL to use for the request builder.</param>
84+
public global::TodoApp.Client.Api.Items.Item.Complete.CompleteRequestBuilder WithUrl(string rawUrl)
85+
{
86+
return new global::TodoApp.Client.Api.Items.Item.Complete.CompleteRequestBuilder(rawUrl, RequestAdapter);
87+
}
88+
}
89+
}
90+
#pragma warning restore CS0618

0 commit comments

Comments
 (0)