Skip to content

Commit 8dcf35d

Browse files
authored
Use Guid.TryParseExact with format "D" (#1148)
1 parent 4b12f34 commit 8dcf35d

File tree

5 files changed

+37
-8
lines changed

5 files changed

+37
-8
lines changed

Directory.Build.props

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@
4444
</Choose>
4545

4646
<ItemGroup>
47+
<PackageReference Include="JetBrains.Annotations" Version="2023.3.0" PrivateAssets="All" />
48+
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All" />
49+
</ItemGroup>
50+
51+
<ItemGroup Condition=" '$(TargetFramework)' == 'net8.0' ">
4752
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.29.0.95321">
4853
<PrivateAssets>all</PrivateAssets>
4954
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
@@ -52,7 +57,5 @@
5257
<PrivateAssets>all</PrivateAssets>
5358
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
5459
</PackageReference> -->
55-
<PackageReference Include="JetBrains.Annotations" Version="2023.3.0" PrivateAssets="All" />
56-
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All" />
5760
</ItemGroup>
5861
</Project>

src/WireMock.Net/Server/WireMockServer.Admin.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ public bool ReadStaticMappingAndAddOrUpdate(string path)
225225
if (FileHelper.TryReadMappingFileWithRetryAndDelay(_settings.FileSystemHandler, path, out var value))
226226
{
227227
var mappingModels = DeserializeJsonToArray<MappingModel>(value);
228-
if (mappingModels.Length == 1 && Guid.TryParse(filenameWithoutExtension, out Guid guidFromFilename))
228+
if (mappingModels.Length == 1 && Guid.TryParse(filenameWithoutExtension, out var guidFromFilename))
229229
{
230230
ConvertMappingAndRegisterAsRespondProvider(mappingModels[0], guidFromFilename, path);
231231
}
@@ -783,7 +783,7 @@ private void EnhancedFileSystemWatcherDeleted(object sender, FileSystemEventArgs
783783
_settings.Logger.Info("MappingFile deleted : '{0}'", args.FullPath);
784784
string filenameWithoutExtension = Path.GetFileNameWithoutExtension(args.FullPath);
785785

786-
if (Guid.TryParse(filenameWithoutExtension, out Guid guidFromFilename))
786+
if (Guid.TryParse(filenameWithoutExtension, out var guidFromFilename))
787787
{
788788
DeleteMapping(guidFromFilename);
789789
}

src/WireMock.Net/Util/StringUtils.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ internal static class StringUtils
2323
s => int.TryParse(s, out var result) ? (true, result) : (false, s),
2424
s => long.TryParse(s, out var result) ? (true, result) : (false, s),
2525
s => double.TryParse(s, out var result) ? (true, result) : (false, s),
26-
s => Guid.TryParse(s, out var result) ? (true, result) : (false, s),
26+
s => Guid.TryParseExact(s, "D", out var result) ? (true, result) : (false, s),
2727
s => TimeSpan.TryParse(s, out var result) ? (true, result) : (false, s),
2828
s => DateTime.TryParse(s, out var result) ? (true, result) : (false, s),
2929
s =>

test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsRandomTests.cs

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ public async Task Response_ProvideResponseAsync_Handlebars_Random1_Integer(Repla
105105
[Theory]
106106
[InlineData(ReplaceNodeOptions.EvaluateAndTryToConvert, JTokenType.Guid)]
107107
[InlineData(ReplaceNodeOptions.Evaluate, JTokenType.String)]
108-
public async Task Response_ProvideResponseAsync_Handlebars_Random1_Guid(ReplaceNodeOptions options, JTokenType expected)
108+
public async Task Response_ProvideResponseAsync_Handlebars_Random_Guid(ReplaceNodeOptions options, JTokenType expected)
109109
{
110110
// Assign
111111
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "GET", ClientIp);
@@ -114,7 +114,8 @@ public async Task Response_ProvideResponseAsync_Handlebars_Random1_Guid(ReplaceN
114114
.WithBodyAsJson(new
115115
{
116116
Guid1 = "{{Random Type=\"Guid\" Uppercase=false}}",
117-
Guid2 = "{{Random Type=\"Guid\"}}"
117+
Guid2 = "{{Random Type=\"Guid\"}}",
118+
Guid3 = "{{ String.Replace (Random Type=\"Guid\") \"-\" \"\" }}"
118119
})
119120
.WithTransformer(options);
120121

@@ -127,6 +128,27 @@ public async Task Response_ProvideResponseAsync_Handlebars_Random1_Guid(ReplaceN
127128
jObject["Guid2"]!.Type.Should().Be(expected);
128129
}
129130

131+
[Fact]
132+
public async Task Response_ProvideResponseAsync_Handlebars_Random_StringReplaceGuid()
133+
{
134+
// Assign
135+
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "GET", ClientIp);
136+
137+
var responseBuilder = Response.Create()
138+
.WithBodyAsJson(new
139+
{
140+
MyGuid = "{{ String.Replace (Random Type=\"Guid\") \"-\" \"\" }}"
141+
})
142+
.WithTransformer();
143+
144+
// Act
145+
var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
146+
147+
// Assert
148+
var jObject = JObject.FromObject(response.Message.BodyData!.BodyAsJson!);
149+
jObject["MyGuid"]!.Type.Should().Be(JTokenType.String);
150+
}
151+
130152
[Fact]
131153
public async Task Response_ProvideResponseAsync_Handlebars_Random1_StringList()
132154
{

test/WireMock.Net.Tests/Util/StringUtilsTests.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public void TryConvertToDouble_ShouldWorkCorrectly(string input, double expected
9797
isConverted.Should().Be(expectedConversion);
9898
if (isConverted)
9999
{
100-
((double) convertedValue).Should().BeApproximately(expectedValue, 0.01);
100+
((double)convertedValue).Should().BeApproximately(expectedValue, 0.01);
101101
}
102102
else
103103
{
@@ -106,6 +106,10 @@ public void TryConvertToDouble_ShouldWorkCorrectly(string input, double expected
106106
}
107107

108108
[Theory]
109+
[InlineData("3F2504E04F8911D39A0C0305E82C3301", false)]
110+
[InlineData("{3F2504E04F8911D39A0C0305E82C3301}", false)]
111+
[InlineData("(3F2504E04F8911D39A0C0305E82C3301)", false)]
112+
[InlineData("{0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}", false)]
109113
[InlineData("3F2504E0-4F89-11D3-9A0C-0305E82C3301", true)]
110114
[InlineData("00000000-0000-0000-0000-000000000000", true)]
111115
[InlineData("3f2504e0-4f89-11d3-9a0c-0305e82c3301", true)] // Lowercase Guid

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy