Files
libnftables-dotnet/tests/LibNftables.Tests/NftContextTests.cs
Vibe Myass 3b523b78df
All checks were successful
smoke / smoke (push) Successful in 29s
Add root-aware privileged CI test lane
2026-03-16 04:36:14 +00:00

85 lines
2.4 KiB
C#

namespace LibNftables.Tests;
public sealed class NftContextTests
{
[Fact]
public void ContextFlagsRoundTrip_Works()
{
if (!NativeTestSupport.TryCreateContext(out var ctx))
{
return;
}
using (ctx)
{
ctx.DryRun = true;
Assert.True(ctx.DryRun);
ctx.OptimizeFlags = NftOptimizeFlags.Enabled;
Assert.True(ctx.OptimizeFlags.HasFlag(NftOptimizeFlags.Enabled));
ctx.InputFlags = NftInputFlags.NoDns | NftInputFlags.Json;
Assert.True(ctx.InputFlags.HasFlag(NftInputFlags.NoDns));
Assert.True(ctx.InputFlags.HasFlag(NftInputFlags.Json));
ctx.OutputFlags = NftOutputFlags.Json | NftOutputFlags.Echo | NftOutputFlags.Terse;
Assert.True(ctx.OutputFlags.HasFlag(NftOutputFlags.Json));
Assert.True(ctx.OutputFlags.HasFlag(NftOutputFlags.Echo));
Assert.True(ctx.OutputFlags.HasFlag(NftOutputFlags.Terse));
ctx.DebugFlags = NftDebugLevel.Parser | NftDebugLevel.Scanner;
Assert.True(ctx.DebugFlags.HasFlag(NftDebugLevel.Parser));
Assert.True(ctx.DebugFlags.HasFlag(NftDebugLevel.Scanner));
}
}
[Fact]
public void InvalidCommand_ThrowsNftExceptionWithErrorBuffer()
{
if (!NativeTestSupport.TryCreateContext(out var ctx))
{
return;
}
using (ctx)
{
ctx.DryRun = true;
ctx.BufferError();
var ex = Assert.ThrowsAny<NftException>(() => ctx.RunCommand("this is not valid nft syntax"));
Assert.NotEqual(0, ex.NativeErrorCode);
Assert.False(string.IsNullOrWhiteSpace(ex.NativeErrorOutput));
}
}
[Fact]
[Trait("Category", "Privileged")]
public void ValidDryRunCommand_CanExecuteAndBufferOutput()
{
if (!NativeTestSupport.TryCreateContext(out var ctx))
{
return;
}
if (!NativeTestSupport.ShouldRunPrivilegedTests())
{
return;
}
using (ctx)
{
ctx.DryRun = true;
ctx.BufferOutput();
ctx.BufferError();
ctx.RunCommand("add table inet swig_test");
var output = ctx.GetOutputBuffer();
var error = ctx.GetErrorBuffer();
Assert.NotNull(output);
Assert.True(string.IsNullOrEmpty(error), $"Unexpected error buffer: {error}");
}
}
}