mirror of
https://github.com/GoodOlClint/PSProxmoxVE.git
synced 2026-07-28 08:48:57 +00:00
d187b0de52
- CS8601: Add null-forgiving operator on guarded dictionary assignments in cmdlets where IsNullOrEmpty check precedes the assignment - CS8602: Add Assert.NotNull after JObject["data"] in xUnit model tests (JToken indexer returns nullable on net48) - CS8604: Add null-forgiving on guarded arguments in NodeService, WaitPveTaskCmdlet, GetPveTemplateCmdlet, and auth test parameters Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
113 lines
4.0 KiB
C#
113 lines
4.0 KiB
C#
using Xunit;
|
|
using Newtonsoft.Json.Linq;
|
|
using PSProxmoxVE.Core.Models.Nodes;
|
|
|
|
namespace PSProxmoxVE.Core.Tests.Models
|
|
{
|
|
public class NodeModelTests
|
|
{
|
|
[Fact]
|
|
public void PveNode_Deserialize_Pve9()
|
|
{
|
|
var json = TestHelper.LoadFixture("pve9_nodes.json");
|
|
var data = JObject.Parse(json)["data"];
|
|
Assert.NotNull(data);
|
|
var nodes = data.ToObject<PveNode[]>();
|
|
Assert.NotNull(nodes);
|
|
Assert.Equal(2, nodes.Length);
|
|
Assert.Equal("pve1", nodes[0].Name);
|
|
Assert.Equal("online", nodes[0].Status);
|
|
Assert.Equal(16, nodes[0].CpuCount);
|
|
Assert.Equal(68719476736L, nodes[0].MemoryTotal);
|
|
}
|
|
|
|
[Fact]
|
|
public void PveNode_Deserialize_Pve9_SecondNode()
|
|
{
|
|
var json = TestHelper.LoadFixture("pve9_nodes.json");
|
|
var data = JObject.Parse(json)["data"];
|
|
Assert.NotNull(data);
|
|
var nodes = data.ToObject<PveNode[]>();
|
|
Assert.NotNull(nodes);
|
|
Assert.Equal("pve2", nodes[1].Name);
|
|
Assert.Equal("online", nodes[1].Status);
|
|
Assert.Equal(8, nodes[1].CpuCount);
|
|
Assert.Equal(34359738368L, nodes[1].MemoryTotal);
|
|
}
|
|
|
|
[Fact]
|
|
public void PveNode_Deserialize_Pve8()
|
|
{
|
|
var json = TestHelper.LoadFixture("pve8_nodes.json");
|
|
var data = JObject.Parse(json)["data"];
|
|
Assert.NotNull(data);
|
|
var nodes = data.ToObject<PveNode[]>();
|
|
Assert.NotNull(nodes);
|
|
Assert.Single(nodes);
|
|
Assert.Equal("pve-old", nodes[0].Name);
|
|
}
|
|
|
|
[Fact]
|
|
public void PveNode_Deserialize_Pve8_HasExpectedCpuAndMemory()
|
|
{
|
|
var json = TestHelper.LoadFixture("pve8_nodes.json");
|
|
var data = JObject.Parse(json)["data"];
|
|
Assert.NotNull(data);
|
|
var nodes = data.ToObject<PveNode[]>();
|
|
Assert.NotNull(nodes);
|
|
Assert.Equal(4, nodes[0].CpuCount);
|
|
Assert.Equal(16106127360L, nodes[0].MemoryTotal);
|
|
}
|
|
|
|
[Fact]
|
|
public void PveNodeStatus_Deserialize_Pve9()
|
|
{
|
|
var json = TestHelper.LoadFixture("pve9_node_status.json");
|
|
var data = JObject.Parse(json)["data"];
|
|
Assert.NotNull(data);
|
|
var status = data.ToObject<PveNodeStatus>();
|
|
Assert.NotNull(status);
|
|
Assert.Equal(0.125, status.CpuUsage);
|
|
}
|
|
|
|
[Fact]
|
|
public void PveNodeStatus_Deserialize_Pve9_HasMemoryAndUptime()
|
|
{
|
|
var json = TestHelper.LoadFixture("pve9_node_status.json");
|
|
var data = JObject.Parse(json)["data"];
|
|
Assert.NotNull(data);
|
|
var status = data.ToObject<PveNodeStatus>();
|
|
Assert.NotNull(status);
|
|
Assert.Equal("pve1", status.Node);
|
|
Assert.Equal(68719476736L, status.MemoryTotal);
|
|
Assert.Equal(17179869184L, status.MemoryUsed);
|
|
Assert.Equal(864000L, status.Uptime);
|
|
}
|
|
|
|
[Fact]
|
|
public void PveNodeStatus_MemoryUsage_IsCalculated()
|
|
{
|
|
var json = TestHelper.LoadFixture("pve9_node_status.json");
|
|
var data = JObject.Parse(json)["data"];
|
|
Assert.NotNull(data);
|
|
var status = data.ToObject<PveNodeStatus>();
|
|
Assert.NotNull(status);
|
|
Assert.NotNull(status.MemoryUsage);
|
|
// 17179869184 / 68719476736 * 100 = 25.0
|
|
Assert.Equal(25.0, status.MemoryUsage!.Value, precision: 5);
|
|
}
|
|
|
|
[Fact]
|
|
public void PveNode_LoadAverage_IsDeserializedAsArray()
|
|
{
|
|
var json = TestHelper.LoadFixture("pve9_nodes.json");
|
|
var data = JObject.Parse(json)["data"];
|
|
Assert.NotNull(data);
|
|
var nodes = data.ToObject<PveNode[]>();
|
|
Assert.NotNull(nodes);
|
|
Assert.NotNull(nodes[0].LoadAverage);
|
|
Assert.Equal(3, nodes[0].LoadAverage!.Length);
|
|
}
|
|
}
|
|
}
|