namespace PS.IPAM.Tests.Models; using FluentAssertions; using PS.IPAM; using Xunit; public class SessionTests { [Fact] public void Constructor_WithCredentialsAuth_SetsAllProperties() { // Arrange var authType = AuthType.credentials; var token = "test-token-123"; var appId = "myApp"; var url = "https://ipam.example.com"; var expires = new DateTime(2026, 12, 31, 23, 59, 59); var credentials = new object(); // Mock credentials // Act var session = new Session(authType, token, appId, url, expires, credentials); // Assert session.AuthType.Should().Be(AuthType.credentials); session.Token.Should().Be(token); session.AppID.Should().Be(appId); session.URL.Should().Be(url); session.Expires.Should().Be(expires); session.Credentials.Should().BeSameAs(credentials); } [Fact] public void Constructor_WithTokenAuth_SetsAllProperties() { // Arrange var authType = AuthType.token; var token = "static-api-token"; var appId = "apiApp"; var url = "https://ipam.test.com"; // Act var session = new Session(authType, token, appId, url, null, null); // Assert session.AuthType.Should().Be(AuthType.token); session.Token.Should().Be(token); session.AppID.Should().Be(appId); session.URL.Should().Be(url); session.Expires.Should().BeNull(); session.Credentials.Should().BeNull(); } [Fact] public void Token_CanBeModified() { // Arrange var session = new Session(AuthType.credentials, "old-token", "app", "https://test.com", null, null); // Act session.Token = "new-token"; // Assert session.Token.Should().Be("new-token"); } [Fact] public void Expires_CanBeModified() { // Arrange var session = new Session(AuthType.credentials, "token", "app", "https://test.com", null, null); var newExpiry = new DateTime(2027, 1, 1); // Act session.Expires = newExpiry; // Assert session.Expires.Should().Be(newExpiry); } [Fact] public void ToString_ReturnsDefaultObjectString() { // Arrange var session = new Session(AuthType.token, "token", "app", "https://test.com", null, null); // Act var result = session.ToString(); // Assert result.Should().Contain("PS.IPAM.Session"); } }