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 Record_Equality_WorksForSameValues() { // Arrange var session1 = new Session(AuthType.Token, "token", "app", "https://test.com", null, null); var session2 = new Session(AuthType.Token, "token", "app", "https://test.com", null, null); // Assert - Records use value equality session1.Should().Be(session2); } }