| File: Utils\IsolatedUserSecretsHelperTests.cs | Web Access |
| Project: src\tests\Aspire.Cli.Tests\Aspire.Cli.Tests.csproj (Aspire.Cli.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Aspire.Shared.UserSecrets; namespace Aspire.Cli.Tests.Utils; public class IsolatedUserSecretsHelperTests : IDisposable { private readonly List<string> _createdSecretIds = []; public void Dispose() { // Clean up any secrets created during tests foreach (var secretId in _createdSecretIds) { IsolatedUserSecretsHelper.CleanupIsolatedUserSecrets(secretId); } } [Fact] public void CreateIsolatedUserSecrets_WithNullId_ReturnsNull() { var result = IsolatedUserSecretsHelper.CreateIsolatedUserSecrets(null); Assert.Null(result); } [Fact] public void CreateIsolatedUserSecrets_WithEmptyId_ReturnsNull() { var result = IsolatedUserSecretsHelper.CreateIsolatedUserSecrets(""); Assert.Null(result); } [Fact] public void CreateIsolatedUserSecrets_WithWhitespaceId_ReturnsNull() { var result = IsolatedUserSecretsHelper.CreateIsolatedUserSecrets(" "); Assert.Null(result); } [Fact] public void CreateIsolatedUserSecrets_WithNonExistentSecrets_ReturnsNull() { var nonExistentId = Guid.NewGuid().ToString(); var result = IsolatedUserSecretsHelper.CreateIsolatedUserSecrets(nonExistentId); Assert.Null(result); } [Fact] public void CreateIsolatedUserSecrets_WithExistingSecrets_CreatesIsolatedCopy() { // Arrange - create a source secrets file var sourceId = Guid.NewGuid().ToString(); var sourcePath = UserSecretsPathHelper.GetSecretsPathFromSecretsId(sourceId); var sourceDir = Path.GetDirectoryName(sourcePath)!; Directory.CreateDirectory(sourceDir); File.WriteAllText(sourcePath, """{"TestKey": "TestValue"}"""); _createdSecretIds.Add(sourceId); // Act var isolatedId = IsolatedUserSecretsHelper.CreateIsolatedUserSecrets(sourceId); // Assert Assert.NotNull(isolatedId); Assert.NotEqual(sourceId, isolatedId); _createdSecretIds.Add(isolatedId); var isolatedPath = UserSecretsPathHelper.GetSecretsPathFromSecretsId(isolatedId); Assert.True(File.Exists(isolatedPath)); var content = File.ReadAllText(isolatedPath); Assert.Contains("TestKey", content); Assert.Contains("TestValue", content); } [Fact] public void CleanupIsolatedUserSecrets_WithNullId_DoesNotThrow() { var exception = Record.Exception(() => IsolatedUserSecretsHelper.CleanupIsolatedUserSecrets(null)); Assert.Null(exception); } [Fact] public void CleanupIsolatedUserSecrets_WithEmptyId_DoesNotThrow() { var exception = Record.Exception(() => IsolatedUserSecretsHelper.CleanupIsolatedUserSecrets("")); Assert.Null(exception); } [Fact] public void CleanupIsolatedUserSecrets_WithNonExistentSecrets_DoesNotThrow() { var nonExistentId = Guid.NewGuid().ToString(); var exception = Record.Exception(() => IsolatedUserSecretsHelper.CleanupIsolatedUserSecrets(nonExistentId)); Assert.Null(exception); } [Fact] public void CleanupIsolatedUserSecrets_WithExistingSecrets_DeletesSecretsFileAndDirectory() { // Arrange - create a secrets file var secretId = Guid.NewGuid().ToString(); var secretsPath = UserSecretsPathHelper.GetSecretsPathFromSecretsId(secretId); var secretsDir = Path.GetDirectoryName(secretsPath)!; Directory.CreateDirectory(secretsDir); File.WriteAllText(secretsPath, """{"TestKey": "TestValue"}"""); // Verify file exists before cleanup Assert.True(File.Exists(secretsPath)); Assert.True(Directory.Exists(secretsDir)); // Act IsolatedUserSecretsHelper.CleanupIsolatedUserSecrets(secretId); // Assert Assert.False(File.Exists(secretsPath)); Assert.False(Directory.Exists(secretsDir)); } }