Files
douyin/tests/dy.net.Tests/DataProtectionPersistenceTests.cs

35 lines
1.2 KiB
C#

using dy.net.model.entity;
using dy.net.service;
using dy.net.Tests.TestInfrastructure;
using Microsoft.AspNetCore.DataProtection;
namespace dy.net.Tests;
public class DataProtectionPersistenceTests
{
[Fact]
public async Task WebDavPassword_DecryptsAfterProviderReconstructionFromPersistentKeys()
{
using var temporaryDirectory = new TemporaryDirectory();
var keyDirectory = new DirectoryInfo(Path.Combine(temporaryDirectory.Path, "keys"));
const string password = "持久化-password-123";
var firstProvider = CreateProvider(keyDirectory);
var protectedPassword = firstProvider
.CreateProtector("dysync.webdav.password.v1")
.Protect(password);
var reconstructedProvider = CreateProvider(keyDirectory);
var service = new WebDavSettingsService(null, reconstructedProvider);
var decrypted = await service.GetPasswordAsync(new WebDavSettings
{
ProtectedPassword = protectedPassword
});
Assert.Equal(password, decrypted);
}
private static IDataProtectionProvider CreateProvider(DirectoryInfo directory) =>
DataProtectionProvider.Create(directory, builder => builder.SetApplicationName("dysync.net"));
}