Refactor IPAM model classes to use records for Address, Subnetwork, Vlan, Vrf, Section, Tag, Domain, Nameserver, and Session; enhance documentation and implement value equality for records.

This commit is contained in:
2026-01-19 17:25:18 +03:00
parent 694822f0d6
commit f56784f2aa
44 changed files with 1601 additions and 1905 deletions

View File

@@ -109,6 +109,13 @@ public class GetAddressCmdletTests : IDisposable
cmdlet.SubnetCIDR.Should().Be("192.168.1.0/24");
}
[Fact]
public void GetAddressCmdlet_InheritsFromBaseCmdlet()
{
var cmdlet = new GetAddressCmdlet();
cmdlet.Should().BeAssignableTo<BaseCmdlet>();
}
// Test the underlying RequestHelper functionality that the cmdlet uses
[Fact]
@@ -129,8 +136,8 @@ public class GetAddressCmdletTests : IDisposable
// Act
var result = await RequestHelper.InvokeRequest(
"GET",
controllers.addresses,
types.Address,
ApiController.Addresses,
ModelType.Address,
null,
null,
new[] { "1" }
@@ -155,8 +162,8 @@ public class GetAddressCmdletTests : IDisposable
// Act
await RequestHelper.InvokeRequest(
"GET",
controllers.addresses,
types.Address,
ApiController.Addresses,
ModelType.Address,
null,
null,
new[] { "42" }
@@ -177,8 +184,8 @@ public class GetAddressCmdletTests : IDisposable
// Act
await RequestHelper.InvokeRequest(
"GET",
controllers.addresses,
types.Address,
ApiController.Addresses,
ModelType.Address,
null,
null,
new[] { "search", "192.168.1.50" }
@@ -199,8 +206,8 @@ public class GetAddressCmdletTests : IDisposable
// Act
await RequestHelper.InvokeRequest(
"GET",
controllers.addresses,
types.Address,
ApiController.Addresses,
ModelType.Address,
null,
null,
new[] { "search_hostname", "myserver.example.com" }
@@ -221,8 +228,8 @@ public class GetAddressCmdletTests : IDisposable
// Act
await RequestHelper.InvokeRequest(
"GET",
controllers.subnets,
types.Address,
ApiController.Subnets,
ModelType.Address,
null,
null,
new[] { "10", "addresses" }
@@ -243,8 +250,8 @@ public class GetAddressCmdletTests : IDisposable
// Act
await RequestHelper.InvokeRequest(
"GET",
controllers.addresses,
types.Address,
ApiController.Addresses,
ModelType.Address,
null,
null,
new[] { "tags", "2", "addresses" }
@@ -269,8 +276,8 @@ public class GetAddressCmdletTests : IDisposable
// Act
var result = await RequestHelper.InvokeRequest(
"GET",
controllers.subnets,
types.Address,
ApiController.Subnets,
ModelType.Address,
null,
null,
new[] { "10", "addresses" }
@@ -294,8 +301,8 @@ public class GetAddressCmdletTests : IDisposable
// Act
var result = await RequestHelper.InvokeRequest(
"GET",
controllers.addresses,
types.Address,
ApiController.Addresses,
ModelType.Address,
null,
null,
new[] { "999" }
@@ -313,11 +320,11 @@ public class GetAddressCmdletTests : IDisposable
// Act
var action = async () => await RequestHelper.InvokeRequest(
"GET",
controllers.addresses,
types.Address
ApiController.Addresses,
ModelType.Address
);
// Assert
await action.Should().ThrowAsync<Exception>().WithMessage("No session available!");
await action.Should().ThrowAsync<InvalidOperationException>().WithMessage("No session available!");
}
}

View File

@@ -93,11 +93,18 @@ public class NewSessionCmdletTests : IDisposable
session.URL.Should().Be("https://ipam.example.com");
session.AppID.Should().Be("testapp");
session.Token.Should().Be("my-api-token");
session.AuthType.Should().Be(AuthType.token);
session.AuthType.Should().Be(AuthType.Token);
session.Expires.Should().BeNull();
session.Credentials.Should().BeNull();
// Verify it was set as current session
SessionManager.CurrentSession.Should().BeSameAs(session);
}
[Fact]
public void NewSessionCmdlet_InheritsFromBaseCmdlet()
{
var cmdlet = new NewSessionCmdlet();
cmdlet.Should().BeAssignableTo<BaseCmdlet>();
}
}