using System.Text.Json; using FreeCode.Core.Enums; using FreeCode.Core.Models; using Xunit; [assembly: CollectionBehavior(DisableTestParallelization = true)] namespace FreeCode.Core.Tests; public class BasicTests { [Fact] public void ToolPermissionContext_UsesEmptySetsByDefault() { var context = new ToolPermissionContext(); Assert.Empty(context.DeniedTools); Assert.Empty(context.AllowedTools); } [Fact] public void BridgeEnvironment_UsesRecordEquality() { var metadata = new Dictionary { ["shell"] = "zsh" }; var left = new BridgeEnvironment("env-1", "Local", SpawnMode.Worktree, "/tmp/work", metadata); var right = new BridgeEnvironment("env-1", "Local", SpawnMode.Worktree, "/tmp/work", metadata); Assert.Equal(left, right); } [Fact] public void WorkItem_StoresPayloadAndOptionalSessionToken() { using var document = JsonDocument.Parse("{" + "\"command\":\"build\"" + "}"); var workItem = new WorkItem("work-1", "shell", document.RootElement.Clone(), "session-token"); Assert.Equal("work-1", workItem.Id); Assert.Equal("shell", workItem.Type); Assert.Equal("build", workItem.Payload.GetProperty("command").GetString()); Assert.Equal("session-token", workItem.SessionToken); } [Fact] public void SessionHandle_UsesNullUrlByDefault() { var handle = new SessionHandle("session-1", "token-1"); Assert.Equal("session-1", handle.SessionId); Assert.Equal("token-1", handle.SessionToken); Assert.Null(handle.Url); } [Fact] public void PermissionMode_EnumValuesMatchExpectedOrder() { Assert.Equal(0, (int)PermissionMode.Default); Assert.Equal(1, (int)PermissionMode.Plan); Assert.Equal(2, (int)PermissionMode.AutoAccept); Assert.Equal(3, (int)PermissionMode.BypassPermissions); } }