namespace LmxFakeProxy.Tests; using LmxFakeProxy.Sessions; public class SessionManagerTests { [Fact] public void Connect_ReturnsUniqueSessionId() { var mgr = new SessionManager(null); var (ok1, _, id1) = mgr.Connect("client1", ""); var (ok2, _, id2) = mgr.Connect("client2", ""); Assert.True(ok1); Assert.True(ok2); Assert.NotEqual(id1, id2); } [Fact] public void Connect_WithValidApiKey_Succeeds() { var mgr = new SessionManager("secret"); var (ok, _, _) = mgr.Connect("client1", "secret"); Assert.True(ok); } [Fact] public void Connect_WithInvalidApiKey_Fails() { var mgr = new SessionManager("secret"); var (ok, msg, id) = mgr.Connect("client1", "wrong"); Assert.False(ok); Assert.Empty(id); Assert.Contains("Invalid API key", msg); } [Fact] public void Connect_WithNoKeyConfigured_AcceptsAnyKey() { var mgr = new SessionManager(null); var (ok1, _, _) = mgr.Connect("c1", "anykey"); var (ok2, _, _) = mgr.Connect("c2", ""); Assert.True(ok1); Assert.True(ok2); } [Fact] public void Disconnect_RemovesSession() { var mgr = new SessionManager(null); var (_, _, id) = mgr.Connect("client1", ""); Assert.True(mgr.ValidateSession(id)); var ok = mgr.Disconnect(id); Assert.True(ok); Assert.False(mgr.ValidateSession(id)); } [Fact] public void Disconnect_UnknownSession_ReturnsFalse() { var mgr = new SessionManager(null); Assert.False(mgr.Disconnect("nonexistent")); } [Fact] public void ValidateSession_ValidId_ReturnsTrue() { var mgr = new SessionManager(null); var (_, _, id) = mgr.Connect("client1", ""); Assert.True(mgr.ValidateSession(id)); } [Fact] public void ValidateSession_InvalidId_ReturnsFalse() { var mgr = new SessionManager(null); Assert.False(mgr.ValidateSession("bogus")); } [Fact] public void GetConnectionState_ReturnsCorrectInfo() { var mgr = new SessionManager(null); var (_, _, id) = mgr.Connect("myClient", ""); var (found, clientId, ticks) = mgr.GetConnectionState(id); Assert.True(found); Assert.Equal("myClient", clientId); Assert.True(ticks > 0); } [Fact] public void GetConnectionState_UnknownSession_ReturnsNotConnected() { var mgr = new SessionManager(null); var (found, clientId, ticks) = mgr.GetConnectionState("unknown"); Assert.False(found); Assert.Empty(clientId); Assert.Equal(0, ticks); } [Fact] public void CheckApiKey_NoKeyConfigured_AlwaysValid() { var mgr = new SessionManager(null); Assert.True(mgr.CheckApiKey("anything")); Assert.True(mgr.CheckApiKey("")); } [Fact] public void CheckApiKey_WithKeyConfigured_ValidatesCorrectly() { var mgr = new SessionManager("mykey"); Assert.True(mgr.CheckApiKey("mykey")); Assert.False(mgr.CheckApiKey("wrong")); Assert.False(mgr.CheckApiKey("")); } }