Skip to content

Commit 9ff9789

Browse files
Merge pull request #1846 from microsoft/vnext
Release libs.
2 parents ef58bf6 + 9754cd1 commit 9ff9789

File tree

11 files changed

+125
-16
lines changed

11 files changed

+125
-16
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
## DO NOT MODIFY THIS FILE MANUALLY. This is part of auto-baselining from 1ES Pipeline Templates. Go to [https://aka.ms/1espt-autobaselining] for more details.
2+
3+
pipelines:
4+
107:
5+
usedNonDefaultBranch: true
6+
retail:
7+
source:
8+
credscan:
9+
lastModifiedDate: 2024-09-13
10+
eslint:
11+
lastModifiedDate: 2024-09-13
12+
psscriptanalyzer:
13+
lastModifiedDate: 2024-09-13
14+
armory:
15+
lastModifiedDate: 2024-09-13

src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<Nullable>enable</Nullable>
1010
<ToolCommandName>hidi</ToolCommandName>
1111
<PackageOutputPath>./../../artifacts</PackageOutputPath>
12-
<Version>1.4.9</Version>
12+
<Version>1.4.10</Version>
1313
<Description>OpenAPI.NET CLI tool for slicing OpenAPI documents</Description>
1414
<SignAssembly>true</SignAssembly>
1515
<!-- https://github.com/dotnet/sourcelink/blob/main/docs/README.md#embeduntrackedsources -->

src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<TargetFramework>netstandard2.0</TargetFramework>
44
<LangVersion>latest</LangVersion>
55
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
6-
<Version>1.6.21</Version>
6+
<Version>1.6.22</Version>
77
<Description>OpenAPI.NET Readers for JSON and YAML documents</Description>
88
<SignAssembly>true</SignAssembly>
99
<!-- https://github.com/dotnet/sourcelink/blob/main/docs/README.md#embeduntrackedsources -->

src/Microsoft.OpenApi/Microsoft.OpenApi.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<TargetFramework>netstandard2.0</TargetFramework>
44
<LangVersion>Latest</LangVersion>
55
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
6-
<Version>1.6.21</Version>
6+
<Version>1.6.22</Version>
77
<Description>.NET models with JSON and YAML writers for OpenAPI specification</Description>
88
<SignAssembly>true</SignAssembly>
99
<!-- https://github.com/dotnet/sourcelink/blob/main/docs/README.md#embeduntrackedsources -->

src/Microsoft.OpenApi/Services/OpenApiFilterService.cs

+4-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,10 @@ public static OpenApiDocument CreateFilteredDocument(OpenApiDocument source, Fun
112112
{
113113
foreach (var parameter in result.Parameters)
114114
{
115-
pathItem.Parameters.Add(parameter);
115+
if (!pathItem.Parameters.Contains(parameter))
116+
{
117+
pathItem.Parameters.Add(parameter);
118+
}
116119
}
117120
}
118121
}

src/Microsoft.OpenApi/Services/OpenApiUrlTreeNode.cs

+7
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,13 @@ public OpenApiUrlTreeNode Attach(string path,
150150
}
151151

152152
var segments = path.Split('/');
153+
if (path.EndsWith("/", StringComparison.OrdinalIgnoreCase))
154+
{
155+
// Remove the last element, which is empty, and append the trailing slash to the new last element
156+
// This is to support URLs with trailing slashes
157+
Array.Resize(ref segments, segments.Length - 1);
158+
segments[segments.Length - 1] += @"\";
159+
}
153160

154161
return Attach(segments: segments,
155162
pathItem: pathItem,

test/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212

1313
<ItemGroup>
1414
<PackageReference Include="coverlet.msbuild" Version="6.0.2" PrivateAssets="all" />
15-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.0" />
16-
<PackageReference Include="Moq" Version="4.20.71" />
15+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
16+
<PackageReference Include="Moq" Version="4.20.72" />
1717
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
18-
<PackageReference Include="xunit" Version="2.9.0" />
18+
<PackageReference Include="xunit" Version="2.9.2" />
1919
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2" PrivateAssets="all" />
2020
<PackageReference Include="coverlet.collector" Version="6.0.2" PrivateAssets="all" />
2121
</ItemGroup>

test/Microsoft.OpenApi.Hidi.Tests/Services/OpenApiFilterServiceTests.cs

+52-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) Microsoft Corporation. All rights reserved.
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT license.
33

44
using Microsoft.Extensions.Logging;
@@ -105,6 +105,57 @@ public void TestPredicateFiltersUsingRelativeRequestUrls()
105105
Assert.False(predicate("/foo", OperationType.Patch, null));
106106
}
107107

108+
[Fact]
109+
public void CreateFilteredDocumentUsingPredicateFromRequestUrl()
110+
{
111+
// Arrange
112+
var openApiDocument = new OpenApiDocument
113+
{
114+
Info = new() { Title = "Test", Version = "1.0" },
115+
Servers = new List<OpenApiServer> { new() { Url = "https://localhost/" } },
116+
Paths = new()
117+
{
118+
["/test/{id}"] = new()
119+
{
120+
Operations = new Dictionary<OperationType, OpenApiOperation>
121+
{
122+
{ OperationType.Get, new() },
123+
{ OperationType.Patch, new() }
124+
},
125+
Parameters = new List<OpenApiParameter>
126+
{
127+
new()
128+
{
129+
Name = "id",
130+
In = ParameterLocation.Path,
131+
Required = true,
132+
Schema = new()
133+
{
134+
Type = "string"
135+
}
136+
}
137+
}
138+
}
139+
140+
141+
}
142+
};
143+
144+
var requestUrls = new Dictionary<string, List<string>>
145+
{
146+
{"/test/{id}", new List<string> {"GET","PATCH"}}
147+
};
148+
149+
// Act
150+
var predicate = OpenApiFilterService.CreatePredicate(requestUrls: requestUrls, source: openApiDocument);
151+
var subsetDoc = OpenApiFilterService.CreateFilteredDocument(openApiDocument, predicate);
152+
153+
// Assert that there's only 1 parameter in the subset document
154+
Assert.NotNull(subsetDoc);
155+
Assert.NotEmpty(subsetDoc.Paths);
156+
Assert.Single(subsetDoc.Paths.First().Value.Parameters);
157+
}
158+
108159
[Fact]
109160
public void ShouldParseNestedPostmanCollection()
110161
{

test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717
<ItemGroup>
1818
<PackageReference Include="coverlet.collector" Version="6.0.2" PrivateAssets="all" />
1919
<PackageReference Include="coverlet.msbuild" Version="6.0.2" PrivateAssets="all" />
20-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.0" />
21-
<PackageReference Include="FluentAssertions" Version="6.12.0" />
20+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
21+
<PackageReference Include="FluentAssertions" Version="6.12.1" />
2222
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
2323
<PackageReference Include="SharpYaml" Version="2.1.1" />
24-
<PackageReference Include="xunit" Version="2.9.0" />
24+
<PackageReference Include="xunit" Version="2.9.2" />
2525
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2" PrivateAssets="all" />
2626
<!--STJ required until Microsoft.Extensions.Logging.Console and Microsoft.Extensions.Configuration.Json update their dependencies -->
2727
<PackageReference Include="System.Text.Json" Version="8.0.4" />

test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj

+5-5
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010
<ItemGroup>
1111
<PackageReference Include="coverlet.collector" Version="6.0.2" PrivateAssets="all" />
1212
<PackageReference Include="coverlet.msbuild" Version="6.0.2" PrivateAssets="all" />
13-
<PackageReference Include="FluentAssertions" Version="6.12.0" />
14-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.0" />
15-
<PackageReference Include="Moq" Version="4.20.71" />
13+
<PackageReference Include="FluentAssertions" Version="6.12.1" />
14+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
15+
<PackageReference Include="Moq" Version="4.20.72" />
1616
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
1717
<PackageReference Include="SharpYaml" Version="2.1.1" />
18-
<PackageReference Include="Verify.Xunit" Version="26.3.1" />
19-
<PackageReference Include="xunit" Version="2.9.0" />
18+
<PackageReference Include="Verify.Xunit" Version="26.6.0" />
19+
<PackageReference Include="xunit" Version="2.9.2" />
2020
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2" PrivateAssets="all" />
2121
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
2222
<PackageReference Include="PublicApiGenerator" Version="11.1.0" />

test/Microsoft.OpenApi.Tests/Services/OpenApiUrlTreeNodeTests.cs

+33
Original file line numberDiff line numberDiff line change
@@ -466,5 +466,38 @@ public async Task VerifyDiagramFromSampleOpenAPIAsync()
466466

467467
await Verifier.Verify(diagram);
468468
}
469+
470+
public static TheoryData<string, string[], string, string> SupportsTrailingSlashesInPathData => new TheoryData<string, string[], string, string>
471+
{
472+
// Path, children up to second to leaf, last expected leaf node name, expected leaf node path
473+
{ "/cars/{car-id}/build/", ["cars", "{car-id}"], @"build\", @"\cars\{car-id}\build\" },
474+
{ "/cars/", [], @"cars\", @"\cars\" },
475+
};
476+
477+
[Theory]
478+
[MemberData(nameof(SupportsTrailingSlashesInPathData))]
479+
public void SupportsTrailingSlashesInPath(string path, string[] childrenBeforeLastNode, string expectedLeafNodeName, string expectedLeafNodePath)
480+
{
481+
var openApiDocument = new OpenApiDocument
482+
{
483+
Paths = new()
484+
{
485+
[path] = new()
486+
}
487+
};
488+
489+
var label = "trailing-slash";
490+
var rootNode = OpenApiUrlTreeNode.Create(openApiDocument, label);
491+
492+
var secondToLeafNode = rootNode;
493+
foreach (var childName in childrenBeforeLastNode)
494+
{
495+
secondToLeafNode = secondToLeafNode.Children[childName];
496+
}
497+
498+
Assert.True(secondToLeafNode.Children.TryGetValue(expectedLeafNodeName, out var leafNode));
499+
Assert.Equal(expectedLeafNodePath, leafNode.Path);
500+
Assert.Empty(leafNode.Children);
501+
}
469502
}
470503
}

0 commit comments

Comments
 (0)