Skip to content

Commit 233da50

Browse files
committed
Initialize a new Uri instance during copying
1 parent 17d4371 commit 233da50

File tree

6 files changed

+22
-7
lines changed

6 files changed

+22
-7
lines changed

src/Microsoft.OpenApi/Models/OpenApiContact.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public OpenApiContact() { }
4646
public OpenApiContact(OpenApiContact contact)
4747
{
4848
Name = contact.Name;
49-
Url = contact.Url;
49+
Url = new Uri(contact.Url.OriginalString);
5050
Email = contact.Email;
5151
Extensions = new Dictionary<string, IOpenApiExtension>(contact.Extensions);
5252
}

src/Microsoft.OpenApi/Models/OpenApiExternalDocs.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public OpenApiExternalDocs() {}
4040
public OpenApiExternalDocs(OpenApiExternalDocs externalDocs)
4141
{
4242
Description = externalDocs.Description;
43-
Url = externalDocs.Url;
43+
Url = new Uri(externalDocs.Url.OriginalString);
4444
Extensions = new Dictionary<string, IOpenApiExtension>(externalDocs.Extensions);
4545
}
4646

src/Microsoft.OpenApi/Models/OpenApiLicense.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public OpenApiLicense() {}
4040
public OpenApiLicense(OpenApiLicense license)
4141
{
4242
Name = license.Name;
43-
Url = license.Url;
43+
Url = new Uri(license.Url.OriginalString);
4444
Extensions = new Dictionary<string, IOpenApiExtension>(license.Extensions);
4545
}
4646

src/Microsoft.OpenApi/Models/OpenApiOAuthFlow.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ public OpenApiOAuthFlow() {}
5151
/// </summary>
5252
public OpenApiOAuthFlow(OpenApiOAuthFlow oAuthFlow)
5353
{
54-
AuthorizationUrl = oAuthFlow.AuthorizationUrl;
55-
TokenUrl = oAuthFlow.TokenUrl;
56-
RefreshUrl = oAuthFlow.RefreshUrl;
54+
AuthorizationUrl = new Uri(oAuthFlow.AuthorizationUrl.OriginalString);
55+
TokenUrl = new Uri(oAuthFlow.TokenUrl.OriginalString);
56+
RefreshUrl = new Uri(oAuthFlow.RefreshUrl.OriginalString);
5757
Scopes = new Dictionary<string, string>(oAuthFlow.Scopes);
5858
Extensions = new Dictionary<string, IOpenApiExtension>(oAuthFlow.Extensions);
5959
}

src/Microsoft.OpenApi/Models/OpenApiSecurityScheme.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public OpenApiSecurityScheme(OpenApiSecurityScheme securityScheme)
9191
Scheme = securityScheme.Scheme;
9292
BearerFormat = securityScheme.BearerFormat;
9393
Flows = new(securityScheme.Flows);
94-
OpenIdConnectUrl = securityScheme.OpenIdConnectUrl;
94+
OpenIdConnectUrl = new Uri(securityScheme.OpenIdConnectUrl.OriginalString);
9595
Extensions = new Dictionary<string, IOpenApiExtension>(securityScheme.Extensions);
9696
UnresolvedReference = securityScheme.UnresolvedReference;
9797
Reference = new(securityScheme.Reference);

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,5 +108,20 @@ public void SerializeAdvanceLicenseAsYamlWorks(OpenApiSpecVersion version)
108108
expected = expected.MakeLineBreaksEnvironmentNeutral();
109109
actual.Should().Be(expected);
110110
}
111+
112+
[Fact]
113+
public void ShouldCopyFromOriginalObjectWithoutMutating()
114+
{
115+
// Arrange
116+
var licenseCopy = new OpenApiLicense(AdvanceLicense);
117+
118+
// Act
119+
licenseCopy.Name = "";
120+
licenseCopy.Url = new Uri("https://exampleCopy.com");
121+
122+
// Assert
123+
Assert.NotEqual(AdvanceLicense.Name, licenseCopy.Name);
124+
Assert.NotEqual(AdvanceLicense.Url, licenseCopy.Url);
125+
}
111126
}
112127
}

0 commit comments

Comments
 (0)