Skip to content

Commit 3f597ba

Browse files
Merge branch 'vnext' into safia/trimmable
2 parents 47ad39d + 0646b23 commit 3f597ba

File tree

15 files changed

+119
-22
lines changed

15 files changed

+119
-22
lines changed

.editorconfig

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,3 +121,14 @@ csharp_preserve_single_line_blocks = true
121121
[*.vb]
122122
# Modifier preferences
123123
visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:suggestion
124+
125+
126+
# Verify settings
127+
[*.{received,verified}.{txt,xml,json}]
128+
charset = "utf-8-bom"
129+
end_of_line = lf
130+
indent_size = unset
131+
indent_style = unset
132+
insert_final_newline = false
133+
tab_width = unset
134+
trim_trailing_whitespace = false

.gitattributes

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,6 @@
1515
*.PDF diff=astextplain
1616
*.rtf diff=astextplain
1717
*.RTF diff=astextplain
18+
19+
# VerifyTests
20+
*.verified.txt text eol=lf working-tree-encoding=UTF-8

.github/workflows/auto-merge-dependabot.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
steps:
2020
- name: Dependabot metadata
2121
id: metadata
22-
uses: dependabot/fetch-metadata@v2.1.0
22+
uses: dependabot/fetch-metadata@v2.2.0
2323
with:
2424
github-token: "${{ secrets.GITHUB_TOKEN }}"
2525

.github/workflows/docker.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ jobs:
3030
id: getversion
3131
- name: Push to GitHub Packages - Nightly
3232
if: ${{ github.ref == 'refs/heads/vnext' }}
33-
uses: docker/build-push-action@v6.2.0
33+
uses: docker/build-push-action@v6.4.0
3434
with:
3535
push: true
3636
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:nightly
3737
- name: Push to GitHub Packages - Release
3838
if: ${{ github.ref == 'refs/heads/master' }}
39-
uses: docker/build-push-action@v6.2.0
39+
uses: docker/build-push-action@v6.4.0
4040
with:
4141
push: true
4242
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest,${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.getversion.outputs.version }}

README.md

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,6 @@ In order to test the validity of an OpenApi document, we avail the following too
113113

114114
5. Copy and paste your OpenAPI descriptions in the **Input Content** window or paste the path to the descriptions file in the **Input File** textbox and click on `Convert` to render the results.
115115

116-
# Build Status
117-
118-
|**master**|
119-
|--|
120-
|[![Build status](https://ci.appveyor.com/api/projects/status/9l6hly3vjeu0tmtx/branch/master?svg=true)](https://ci.appveyor.com/project/MicrosoftOpenAPINETAdmin/openapi-net-54e7i/branch/master)|
121-
122116
# Contributing
123117

124118
This project welcomes contributions and suggestions. Most contributions require you to agree to a

src/Microsoft.OpenApi.Workbench/Microsoft.OpenApi.Workbench.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
</PropertyGroup>
1010
<ItemGroup>
1111
<PackageReference Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version="0.4.421302" PrivateAssets="all" />
12-
<PackageReference Include="Microsoft.Windows.Compatibility" Version="8.0.6" />
12+
<PackageReference Include="Microsoft.Windows.Compatibility" Version="8.0.7" />
1313
</ItemGroup>
1414
<ItemGroup>
1515
<Resource Include="Themes\Metro\HowToApplyTheme.txt" />

src/Microsoft.OpenApi/Any/OpenApiArray.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ public OpenApiArray() { }
2727
public OpenApiArray(OpenApiArray array)
2828
{
2929
AnyType = array.AnyType;
30+
foreach (var item in array)
31+
{
32+
Add(OpenApiAnyCloneHelper.CloneFromCopyConstructor(item));
33+
}
3034
}
3135

3236
/// <summary>

src/Microsoft.OpenApi/Any/OpenApiObject.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ public OpenApiObject() { }
2727
public OpenApiObject(OpenApiObject obj)
2828
{
2929
AnyType = obj.AnyType;
30+
foreach (var key in obj.Keys)
31+
{
32+
this[key] = OpenApiAnyCloneHelper.CloneFromCopyConstructor(obj[key]);
33+
}
3034
}
3135

3236
/// <summary>

src/Microsoft.OpenApi/Services/OpenApiFilterService.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ public static class OpenApiFilterService
6161
public static OpenApiDocument CreateFilteredDocument(OpenApiDocument source, Func<string, OperationType?, OpenApiOperation, bool> predicate)
6262
{
6363
// Fetch and copy title, graphVersion and server info from OpenApiDoc
64+
var components = source.Components is null
65+
? null
66+
: new OpenApiComponents() { SecuritySchemes = source.Components.SecuritySchemes };
67+
6468
var subset = new OpenApiDocument
6569
{
6670
Info = new()
@@ -74,7 +78,7 @@ public static OpenApiDocument CreateFilteredDocument(OpenApiDocument source, Fun
7478
Extensions = source.Info.Extensions
7579
},
7680

77-
Components = new() { SecuritySchemes = source.Components.SecuritySchemes },
81+
Components = components,
7882
SecurityRequirements = source.SecurityRequirements,
7983
Servers = source.Servers
8084
};

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
<PackageReference Include="coverlet.msbuild" Version="6.0.2" PrivateAssets="all" />
1515
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
1616
<PackageReference Include="Moq" Version="4.20.70" />
17-
<PackageReference Include="xunit" Version="2.8.1" />
18-
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.1" PrivateAssets="all" />
17+
<PackageReference Include="xunit" Version="2.9.0" />
18+
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2" PrivateAssets="all" />
1919
<PackageReference Include="coverlet.collector" Version="6.0.2" PrivateAssets="all" />
2020
</ItemGroup>
2121

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

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,46 @@ public async Task ReturnFilteredOpenApiDocBasedOnOperationIdsAndInputCsdlDocumen
6565
Assert.Equal(expectedPathCount, subsetOpenApiDocument.Paths.Count);
6666
}
6767

68+
[Fact]
69+
public void CreateFilteredDocumentOnMinimalOpenApi()
70+
{
71+
// Arrange
72+
73+
// We create a minimal OpenApiDocument with a single path and operation.
74+
var openApiDoc = new OpenApiDocument
75+
{
76+
Info = new()
77+
{
78+
Title = "Test",
79+
Version = "1.0.0"
80+
},
81+
Paths = new()
82+
{
83+
["/test"] = new OpenApiPathItem()
84+
{
85+
Operations = new Dictionary<OperationType, OpenApiOperation>
86+
{
87+
[OperationType.Get] = new OpenApiOperation()
88+
}
89+
}
90+
}
91+
};
92+
93+
// Act
94+
var requestUrls = new Dictionary<string, List<string>>()
95+
{
96+
{ "/test", ["GET"] }
97+
};
98+
var filterPredicate = OpenApiFilterService.CreatePredicate(null, null, requestUrls, openApiDoc);
99+
var filteredDocument = OpenApiFilterService.CreateFilteredDocument(openApiDoc, filterPredicate);
100+
101+
// Assert
102+
Assert.NotNull(filteredDocument);
103+
Assert.NotNull(filteredDocument.Paths);
104+
Assert.Single(filteredDocument.Paths);
105+
}
106+
107+
68108
[Theory]
69109
[InlineData("UtilityFiles/appsettingstest.json")]
70110
[InlineData(null)]

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
<PackageReference Include="FluentAssertions" Version="6.12.0" />
2222
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
2323
<PackageReference Include="SharpYaml" Version="2.1.1" />
24-
<PackageReference Include="xunit" Version="2.8.1" />
25-
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.1" PrivateAssets="all" />
24+
<PackageReference Include="xunit" Version="2.9.0" />
25+
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2" PrivateAssets="all" />
2626
</ItemGroup>
2727

2828
<ItemGroup>

test/Microsoft.OpenApi.SmokeTests/Microsoft.OpenApi.SmokeTests.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
<PackageReference Include="coverlet.msbuild" Version="6.0.2" PrivateAssets="all" />
1313
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
1414
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
15-
<PackageReference Include="xunit" Version="2.8.1" />
16-
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.1" PrivateAssets="all" />
15+
<PackageReference Include="xunit" Version="2.9.0" />
16+
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2" PrivateAssets="all" />
1717
</ItemGroup>
1818

1919
<ItemGroup>

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
<PackageReference Include="Moq" Version="4.20.70" />
1616
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
1717
<PackageReference Include="SharpYaml" Version="2.1.1" />
18-
<PackageReference Include="Verify.Xunit" Version="25.2.0" />
19-
<PackageReference Include="xunit" Version="2.8.1" />
20-
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.1" PrivateAssets="all" />
18+
<PackageReference Include="Verify.Xunit" Version="25.3.2" />
19+
<PackageReference Include="xunit" Version="2.9.0" />
20+
<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" />
2323
</ItemGroup>

test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT license.
33

4-
using System;
54
using System.Collections.Generic;
65
using System.Globalization;
76
using System.IO;
8-
using System.Linq;
97
using System.Threading.Tasks;
108
using FluentAssertions;
119
using Microsoft.OpenApi.Any;
@@ -485,6 +483,45 @@ public void OpenApiSchemaCopyConstructorSucceeds()
485483
Assert.True(actualSchema.Nullable);
486484
}
487485

486+
public static TheoryData<IOpenApiAny> SchemaExamples()
487+
{
488+
return new()
489+
{
490+
new OpenApiArray() { new OpenApiString("example") },
491+
new OpenApiBinary([0, 1, 2]),
492+
new OpenApiBoolean(true),
493+
new OpenApiByte(42),
494+
new OpenApiDate(new(2024, 07, 19, 12, 34, 56)),
495+
new OpenApiDateTime(new(2024, 07, 19, 12, 34, 56, new(01, 00, 00))),
496+
new OpenApiDouble(42.37),
497+
new OpenApiFloat(42.37f),
498+
new OpenApiInteger(42),
499+
new OpenApiLong(42),
500+
new OpenApiNull(),
501+
new OpenApiObject() { ["prop"] = new OpenApiString("example") },
502+
new OpenApiPassword("secret"),
503+
new OpenApiString("example"),
504+
};
505+
}
506+
507+
[Theory]
508+
[MemberData(nameof(SchemaExamples))]
509+
public void CloningSchemaExamplesWorks(IOpenApiAny example)
510+
{
511+
// Arrange
512+
var schema = new OpenApiSchema
513+
{
514+
Example = example
515+
};
516+
517+
// Act && Assert
518+
var schemaCopy = new OpenApiSchema(schema);
519+
Assert.NotNull(schemaCopy.Example);
520+
521+
// Act && Assert
522+
Assert.Equivalent(schema.Example, schemaCopy.Example);
523+
}
524+
488525
[Fact]
489526
public void CloningSchemaExtensionsWorks()
490527
{

0 commit comments

Comments
 (0)