refactor(worker): OnlineTokenStore zu DpapiTokenStore verallgemeinert
This commit is contained in:
@@ -1,53 +0,0 @@
|
||||
using ClaudeDo.Worker.Online;
|
||||
|
||||
namespace ClaudeDo.Worker.Tests.Online;
|
||||
|
||||
public sealed class OnlineTokenStoreTests : IDisposable
|
||||
{
|
||||
private readonly string _tokenPath = Path.Combine(Path.GetTempPath(), $"online_token_{Guid.NewGuid():N}.bin");
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
try { File.Delete(_tokenPath); } catch { }
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Save_Read_RoundTrips()
|
||||
{
|
||||
if (!OperatingSystem.IsWindows()) return; // DPAPI is Windows-only
|
||||
|
||||
var store = new OnlineTokenStore(_tokenPath);
|
||||
store.Save("my-refresh-token");
|
||||
var result = store.Read();
|
||||
Assert.Equal("my-refresh-token", result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Clear_Removes_Token()
|
||||
{
|
||||
if (!OperatingSystem.IsWindows()) return;
|
||||
|
||||
var store = new OnlineTokenStore(_tokenPath);
|
||||
store.Save("token");
|
||||
store.Clear();
|
||||
Assert.Null(store.Read());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Read_WhenFileAbsent_Returns_Null()
|
||||
{
|
||||
if (!OperatingSystem.IsWindows()) return;
|
||||
|
||||
var store = new OnlineTokenStore(_tokenPath);
|
||||
Assert.Null(store.Read());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Clear_WhenFileAbsent_DoesNotThrow()
|
||||
{
|
||||
if (!OperatingSystem.IsWindows()) return;
|
||||
|
||||
var store = new OnlineTokenStore(_tokenPath);
|
||||
store.Clear(); // no exception expected
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using ClaudeDo.Worker;
|
||||
using ClaudeDo.Worker.Online;
|
||||
using Microsoft.Extensions.Logging.Abstractions;
|
||||
|
||||
@@ -8,8 +9,8 @@ namespace ClaudeDo.Worker.Tests.Online;
|
||||
|
||||
/// <summary>
|
||||
/// Tests for <see cref="ZitadelAuthProvider"/> using a stub <see cref="HttpMessageHandler"/>.
|
||||
/// Token-store tests use a real temp-dir <see cref="OnlineTokenStore"/> (DPAPI) and are
|
||||
/// Windows-only, consistent with <see cref="OnlineTokenStoreTests"/>.
|
||||
/// Token-store tests use a real temp-dir <see cref="DpapiTokenStore"/> (DPAPI) and are
|
||||
/// Windows-only.
|
||||
/// </summary>
|
||||
public sealed class ZitadelAuthProviderTests : IDisposable
|
||||
{
|
||||
@@ -86,14 +87,14 @@ public sealed class ZitadelAuthProviderTests : IDisposable
|
||||
},
|
||||
};
|
||||
|
||||
private (ZitadelAuthProvider Provider, StubHandler Handler, OnlineTokenStore Store) Build()
|
||||
private (ZitadelAuthProvider Provider, StubHandler Handler, DpapiTokenStore Store) Build()
|
||||
{
|
||||
var handler = new StubHandler();
|
||||
var factory = new StubHttpClientFactory(handler);
|
||||
var store = new OnlineTokenStore(_tokenPath);
|
||||
var store = new DpapiTokenStore(_tokenPath);
|
||||
var config = MakeConfig();
|
||||
var provider = new ZitadelAuthProvider(
|
||||
factory, store, config, NullLogger<ZitadelAuthProvider>.Instance);
|
||||
factory, new OnlineRefreshTokenStore(store), config, NullLogger<ZitadelAuthProvider>.Instance);
|
||||
return (provider, handler, store);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user