34 lines
1.3 KiB
C#
34 lines
1.3 KiB
C#
using System.Runtime.CompilerServices;
|
|
using ClawdDotNet.Core.Security;
|
|
|
|
namespace ClawdDotNet.Core.Tests.Infrastructure;
|
|
|
|
/// <summary>
|
|
/// Hält den Schlüssel von <see cref="SecretKeyStore"/> aus den Tests heraus.
|
|
///
|
|
/// Zwei Dinge müssen zusammenkommen:
|
|
///
|
|
/// 1. <see cref="Init"/> verlegt den Schlüssel <b>einmal beim Laden</b> der
|
|
/// Testassembly in ein Wegwerfverzeichnis. Ohne das würden die Tests den echten
|
|
/// Benutzerschlüssel anlegen oder lesen — auf dem Entwicklungsrechner wie auf dem
|
|
/// Bauserver.
|
|
///
|
|
/// 2. Wer den Schlüssel <em>während</em> eines Tests wechselt (etwa um zu prüfen, dass
|
|
/// ein fremder Schlüssel nicht liest), muss in dieser Sammlung laufen. Der Speicher
|
|
/// ist statisch; ohne abgeschaltete Parallelität zöge ein solcher Wechsel einer
|
|
/// gleichzeitig laufenden Klasse den Schlüssel unter den Füßen weg. Genau das ist
|
|
/// zwischen den Geheimnis- und den Sicherungstests passiert.
|
|
/// </summary>
|
|
[CollectionDefinition(Name, DisableParallelization = true)]
|
|
public sealed class SecretKeyCollection
|
|
{
|
|
public const string Name = "SecretKey";
|
|
|
|
[ModuleInitializer]
|
|
internal static void Init()
|
|
{
|
|
SecretKeyStore.UseDirectory(Path.Combine(
|
|
Path.GetTempPath(), "clawd-tests", "keys", Guid.NewGuid().ToString("N")));
|
|
}
|
|
}
|