Skip to content

Commit 771d2f2

Browse files
committed
Fix FileSystemEgressExtension_DirectoryPath_Success
1 parent 0a621a4 commit 771d2f2

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

src/Microsoft.Diagnostics.Monitoring.Options/Microsoft.Diagnostics.Monitoring.Options.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
<InternalsVisibleTo Include="Microsoft.Diagnostics.Monitoring.Tool.FunctionalTests" />
2323
<InternalsVisibleTo Include="Microsoft.Diagnostics.Monitoring.Tool.UnitTestCommon" />
2424
<InternalsVisibleTo Include="Microsoft.Diagnostics.Monitoring.Tool.UnitTests" />
25+
<InternalsVisibleTo Include="Microsoft.Diagnostics.Monitoring.Tool.UnitTestsSample" />
2526
<InternalsVisibleTo Include="Microsoft.Diagnostics.Monitoring.WebApi" />
2627
<InternalsVisibleTo Include="Microsoft.Diagnostics.Monitoring.WebApi.UnitTests" />
2728
<InternalsVisibleTo Include="$(MoqInternalsVisibleTo)" Key="$(MoqInternalsVisibleToKey)" />

src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTests/FileSystemEgressExtensionTests.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
// Licensed to the .NET Foundation under one or more agreements.
22
// The .NET Foundation licenses this file to you under the MIT license.
33

4+
using Microsoft.AspNetCore.Http.Validation;
5+
using Microsoft.AspNetCore.Mvc.Testing;
46
using Microsoft.Diagnostics.Monitoring.TestCommon;
57
using Microsoft.Diagnostics.Tools.Monitor;
68
using Microsoft.Diagnostics.Tools.Monitor.Egress;
79
using Microsoft.Diagnostics.Tools.Monitor.Egress.Configuration;
810
using Microsoft.Diagnostics.Tools.Monitor.Egress.FileSystem;
911
using Microsoft.Extensions.Configuration;
12+
using Microsoft.Extensions.DependencyInjection;
1013
using Microsoft.Extensions.Logging;
1114
using Microsoft.Extensions.Options;
1215
using Moq;
@@ -22,8 +25,12 @@
2225

2326
namespace Microsoft.Diagnostics.Monitoring.Tool.UnitTests
2427
{
28+
public class FileSystemEgressExtensionFixture : WebApplicationFactory<Program>
29+
{
30+
}
31+
2532
[TargetFrameworkMonikerTrait(TargetFrameworkMonikerExtensions.CurrentTargetFrameworkMoniker)]
26-
public sealed class FileSystemEgressExtensionTests
33+
public sealed class FileSystemEgressExtensionTests : IClassFixture<FileSystemEgressExtensionFixture>
2734
{
2835
const string ProviderName = "TestProvider";
2936
const string ExpectedFileName = "EgressedData.txt";
@@ -35,10 +42,12 @@ public sealed class FileSystemEgressExtensionTests
3542
FileSystemEgressProviderOptions.CopyBufferSize_MaxValue.ToString());
3643

3744
private readonly ITestOutputHelper _outputHelper;
45+
private readonly FileSystemEgressExtensionFixture _fixture;
3846

39-
public FileSystemEgressExtensionTests(ITestOutputHelper outputHelper)
47+
public FileSystemEgressExtensionTests(ITestOutputHelper outputHelper, FileSystemEgressExtensionFixture fixture)
4048
{
4149
_outputHelper = outputHelper;
50+
_fixture = fixture;
4251
}
4352

4453
[Fact]
@@ -145,7 +154,7 @@ public async Task FileSystemEgressExtension_IntermediateDirectoryPath_Success()
145154
Assert.False(intermediateDirInfo.EnumerateFiles().Any(), "Intermediate directory should not contain any files.");
146155
}
147156

148-
private static IEgressExtension CreateExtension(Action<ConfigurationSection> callback = null)
157+
private IEgressExtension CreateExtension(Action<ConfigurationSection> callback = null)
149158
{
150159
List<IConfigurationProvider> configProviders = new()
151160
{
@@ -163,6 +172,8 @@ private static IEgressExtension CreateExtension(Action<ConfigurationSection> cal
163172

164173
Mock<ILogger<FileSystemEgressExtension>> mockLogger = new();
165174
Mock<IServiceProvider> mockServiceProvider = new();
175+
mockServiceProvider.Setup(provider => provider.GetService(typeof(IOptions<ValidationOptions>)))
176+
.Returns(_fixture.Services.GetRequiredService<IOptions<ValidationOptions>>());
166177

167178
return new FileSystemEgressExtension(mockServiceProvider.Object, mockConfigurationProvider.Object, mockLogger.Object);
168179
}

src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTestsSample/Program.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33

44
using Microsoft.AspNetCore.Http.Validation;
5+
using Microsoft.Diagnostics.Tools.Monitor;
56
using Microsoft.Diagnostics.Tools.Monitor.Extensibility;
7+
using Microsoft.Diagnostics.Tools.Monitor.Egress.FileSystem;
68

79
var builder = WebApplication.CreateBuilder(args);
810
builder.Services.AddValidation();
@@ -14,4 +16,8 @@ public partial class Program {}
1416
sealed class TestValidatableType
1517
{
1618
public required ExtensionManifest ExtensionManifest { get; init; }
19+
20+
// public RootOptions RootOptions { get; init; } // TODO: this hits bad generated code.
21+
// Take a more granular approach for now.
22+
public required FileSystemEgressProviderOptions FileSystemEgressProviderOptions { get; init; }
1723
}

0 commit comments

Comments
 (0)