Skip to content

Commit 593e825

Browse files
Added DocumentFilter in integration test
1 parent e777bd7 commit 593e825

File tree

4 files changed

+86
-0
lines changed

4 files changed

+86
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using System.Net.Http;
2+
using System.Threading.Tasks;
3+
4+
using FluentAssertions;
5+
6+
using Microsoft.VisualStudio.TestTools.UnitTesting;
7+
8+
using Newtonsoft.Json;
9+
using Newtonsoft.Json.Linq;
10+
11+
namespace Microsoft.Azure.WebJobs.Extensions.OpenApi.Document.Tests
12+
{
13+
[TestClass]
14+
[TestCategory(Constants.TestCategory)]
15+
public class Get_DocumentFilter_Tests
16+
{
17+
private static HttpClient http = new HttpClient();
18+
19+
private JObject _doc;
20+
21+
[TestInitialize]
22+
public async Task Init()
23+
{
24+
var json = await http.GetStringAsync(Constants.OpenApiDocEndpoint).ConfigureAwait(false);
25+
this._doc = JsonConvert.DeserializeObject<JObject>(json);
26+
}
27+
28+
[TestMethod]
29+
public void Given_Rewritten_OpenApiDocument_Then_It_Should_Have_Modified_Description()
30+
{
31+
var modifiedDescription = this._doc["paths"]["/get-documentfilter"]["get"]["responses"]["200"].Value<string>("description");
32+
33+
modifiedDescription.Should().Be("The OK response rewritten");
34+
}
35+
}
36+
}

test-integration/Microsoft.Azure.WebJobs.Extensions.OpenApi.TestApp/Configurations/OpenApiConfigurationOptions.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Configurations;
44
using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Enums;
5+
using Microsoft.Azure.WebJobs.Extensions.OpenApi.TestApp.DocumentFilters;
56
using Microsoft.OpenApi.Models;
67

78
namespace Microsoft.Azure.WebJobs.Extensions.OpenApi.TestApp.Configurations
@@ -19,6 +20,11 @@ public class OpenApiConfigurationOptions : DefaultOpenApiConfigurationOptions
1920
public const string LicenseUrl = "http://opensource.org/licenses/MIT";
2021
public const OpenApiVersionType OpenApiSpecVersion = OpenApiVersionType.V3;
2122

23+
public OpenApiConfigurationOptions()
24+
{
25+
this.AddDocumentFilter<RewriteDescriptionDocumentFilter>();
26+
}
27+
2228
public override OpenApiInfo Info { get; set; } = new OpenApiInfo()
2329
{
2430
Version = DocVersion,
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Abstractions;
2+
using Microsoft.OpenApi.Models;
3+
4+
namespace Microsoft.Azure.WebJobs.Extensions.OpenApi.TestApp.DocumentFilters
5+
{
6+
internal class RewriteDescriptionDocumentFilter : IDocumentFilter
7+
{
8+
public void Apply(IHttpRequestDataObject request, OpenApiDocument document)
9+
{
10+
document
11+
.Paths["/get-documentfilter"]
12+
.Operations[OperationType.Get]
13+
.Responses["200"]
14+
.Description += " rewritten";
15+
}
16+
}
17+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System.Net;
2+
using System.Threading.Tasks;
3+
4+
using Microsoft.AspNetCore.Http;
5+
using Microsoft.AspNetCore.Mvc;
6+
using Microsoft.Azure.WebJobs.Extensions.Http;
7+
using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Attributes;
8+
using Microsoft.Extensions.Logging;
9+
using Microsoft.OpenApi.Models;
10+
11+
namespace Microsoft.Azure.WebJobs.Extensions.OpenApi.TestApp
12+
{
13+
public static class Get_DocumentFilter_HttpTrigger
14+
{
15+
[FunctionName(nameof(Get_DocumentFilter_HttpTrigger))]
16+
[OpenApiOperation(operationId: nameof(Get_DocumentFilter_HttpTrigger.Get_DocumentFilter), tags: new[] { "documentFilter" })]
17+
[OpenApiResponseWithBody(statusCode: HttpStatusCode.OK, contentType: "text/plain", bodyType: typeof(string), Description = "The OK response")]
18+
public static async Task<IActionResult> Get_DocumentFilter(
19+
[HttpTrigger(AuthorizationLevel.Anonymous, "GET", Route = "get-documentfilter")] HttpRequest req,
20+
ILogger log)
21+
{
22+
var result = new OkResult();
23+
24+
return await Task.FromResult(result).ConfigureAwait(false);
25+
}
26+
}
27+
}

0 commit comments

Comments
 (0)