Files
git.stella-ops.org/src/__Tests/StellaOps.Audit.ReplayToken.Tests/ReplayCliSnippetGeneratorTests.cs

41 lines
1.4 KiB
C#

using FluentAssertions;
namespace StellaOps.Audit.ReplayToken.Tests;
public sealed class ReplayCliSnippetGeneratorTests
{
[Fact]
public void GenerateDecisionReplay_QuotesValuesAndOmitsPlus()
{
var generator = new ReplayCliSnippetGenerator();
var token = new ReplayToken("abc123", DateTimeOffset.UnixEpoch);
var output = generator.GenerateDecisionReplay(
token,
"alert 1",
"file:///tmp/with space",
"policy v1");
// Multiline output with backslash continuation, check each part separately
output.Should().Contain("'abc123'");
output.Should().Contain("'alert 1'");
output.Should().Contain("'file:///tmp/with space'");
output.Should().Contain("'policy v1'");
output.Should().NotContain("\n+");
}
[Fact]
public void GenerateScoringReplay_EscapesSingleQuotes()
{
var generator = new ReplayCliSnippetGenerator();
var token = new ReplayToken("abc123", DateTimeOffset.UnixEpoch);
var output = generator.GenerateScoringReplay(token, "subject'key", "config'v1");
// Check for the escaped single quotes (bash-style escaping: '...'\"'\"'...')
// The single quote inside is escaped as '"'"' (end quote, double-quote single-quote, start quote)
output.Should().Contain("subject'\"'\"'key");
output.Should().Contain("config'\"'\"'v1");
}
}