fix: resolve net48-only nullable warnings (CS8601, CS8602, CS8604)

- 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>
This commit is contained in:
Clint Branham
2026-03-19 08:32:57 -05:00
parent 3075c12768
commit d187b0de52
26 changed files with 165 additions and 57 deletions
+1 -1
View File
@@ -52,7 +52,7 @@ namespace PSProxmoxVE.Core.Services
var versionStr = data?["version"]?.ToString();
if (string.IsNullOrEmpty(versionStr))
throw new InvalidOperationException("Failed to retrieve PVE version from API response.");
return PveVersion.Parse(versionStr);
return PveVersion.Parse(versionStr!);
}
}
}
@@ -73,11 +73,11 @@ namespace PSProxmoxVE.Cmdlets.CloudInit
var config = new Dictionary<string, object>();
if (!string.IsNullOrEmpty(CiUser)) config["ciuser"] = CiUser;
if (!string.IsNullOrEmpty(Hostname)) config["name"] = Hostname;
if (!string.IsNullOrEmpty(IpConfig0)) config["ipconfig0"] = IpConfig0;
if (!string.IsNullOrEmpty(Nameserver)) config["nameserver"] = Nameserver;
if (!string.IsNullOrEmpty(Searchdomain)) config["searchdomain"] = Searchdomain;
if (!string.IsNullOrEmpty(CiUser)) config["ciuser"] = CiUser!;
if (!string.IsNullOrEmpty(Hostname)) config["name"] = Hostname!;
if (!string.IsNullOrEmpty(IpConfig0)) config["ipconfig0"] = IpConfig0!;
if (!string.IsNullOrEmpty(Nameserver)) config["nameserver"] = Nameserver!;
if (!string.IsNullOrEmpty(Searchdomain)) config["searchdomain"] = Searchdomain!;
if (Password != null)
{
@@ -78,15 +78,15 @@ namespace PSProxmoxVE.Cmdlets.Network
["type"] = Type
};
if (!string.IsNullOrEmpty(Address)) data["address"] = Address;
if (!string.IsNullOrEmpty(Netmask)) data["netmask"] = Netmask;
if (!string.IsNullOrEmpty(Gateway)) data["gateway"] = Gateway;
if (!string.IsNullOrEmpty(BridgePorts)) data["bridge_ports"] = BridgePorts;
if (!string.IsNullOrEmpty(BondSlaves)) data["slaves"] = BondSlaves;
if (!string.IsNullOrEmpty(Address)) data["address"] = Address!;
if (!string.IsNullOrEmpty(Netmask)) data["netmask"] = Netmask!;
if (!string.IsNullOrEmpty(Gateway)) data["gateway"] = Gateway!;
if (!string.IsNullOrEmpty(BridgePorts)) data["bridge_ports"] = BridgePorts!;
if (!string.IsNullOrEmpty(BondSlaves)) data["slaves"] = BondSlaves!;
if (VlanId.HasValue) data["vlan-id"] = VlanId.Value.ToString();
if (Mtu.HasValue) data["mtu"] = Mtu.Value.ToString();
if (Autostart.IsPresent) data["autostart"] = "1";
if (!string.IsNullOrEmpty(Comments)) data["comments"] = Comments;
if (!string.IsNullOrEmpty(Comments)) data["comments"] = Comments!;
client.PostAsync($"nodes/{Node}/network", data).GetAwaiter().GetResult();
}
@@ -48,7 +48,7 @@ namespace PSProxmoxVE.Cmdlets.Network
};
if (Tag.HasValue) data["tag"] = Tag.Value.ToString();
if (!string.IsNullOrEmpty(Alias)) data["alias"] = Alias;
if (!string.IsNullOrEmpty(Alias)) data["alias"] = Alias!;
if (VlanAware.IsPresent) data["vlanaware"] = "1";
client.PostAsync("cluster/sdn/vnets", data).GetAwaiter().GetResult();
@@ -64,13 +64,13 @@ namespace PSProxmoxVE.Cmdlets.Network
["type"] = Type
};
if (!string.IsNullOrEmpty(Peers)) data["peers"] = Peers;
if (!string.IsNullOrEmpty(Bridge)) data["bridge"] = Bridge;
if (!string.IsNullOrEmpty(Peers)) data["peers"] = Peers!;
if (!string.IsNullOrEmpty(Bridge)) data["bridge"] = Bridge!;
if (Mtu.HasValue) data["mtu"] = Mtu.Value.ToString();
if (!string.IsNullOrEmpty(Dns)) data["dns"] = Dns;
if (!string.IsNullOrEmpty(ReverseDns)) data["reversedns"] = ReverseDns;
if (!string.IsNullOrEmpty(DnsZone)) data["dnszone"] = DnsZone;
if (!string.IsNullOrEmpty(Ipam)) data["ipam"] = Ipam;
if (!string.IsNullOrEmpty(Dns)) data["dns"] = Dns!;
if (!string.IsNullOrEmpty(ReverseDns)) data["reversedns"] = ReverseDns!;
if (!string.IsNullOrEmpty(DnsZone)) data["dnszone"] = DnsZone!;
if (!string.IsNullOrEmpty(Ipam)) data["ipam"] = Ipam!;
client.PostAsync("cluster/sdn/zones", data).GetAwaiter().GetResult();
}
@@ -76,17 +76,17 @@ namespace PSProxmoxVE.Cmdlets.Network
var data = new Dictionary<string, string>();
if (!string.IsNullOrEmpty(Address)) data["address"] = Address;
if (!string.IsNullOrEmpty(Netmask)) data["netmask"] = Netmask;
if (!string.IsNullOrEmpty(Gateway)) data["gateway"] = Gateway;
if (!string.IsNullOrEmpty(Address6)) data["address6"] = Address6;
if (!string.IsNullOrEmpty(Address)) data["address"] = Address!;
if (!string.IsNullOrEmpty(Netmask)) data["netmask"] = Netmask!;
if (!string.IsNullOrEmpty(Gateway)) data["gateway"] = Gateway!;
if (!string.IsNullOrEmpty(Address6)) data["address6"] = Address6!;
if (Netmask6.HasValue) data["netmask6"] = Netmask6.Value.ToString();
if (!string.IsNullOrEmpty(Gateway6)) data["gateway6"] = Gateway6;
if (!string.IsNullOrEmpty(BridgePorts)) data["bridge_ports"] = BridgePorts;
if (!string.IsNullOrEmpty(BondSlaves)) data["slaves"] = BondSlaves;
if (!string.IsNullOrEmpty(Gateway6)) data["gateway6"] = Gateway6!;
if (!string.IsNullOrEmpty(BridgePorts)) data["bridge_ports"] = BridgePorts!;
if (!string.IsNullOrEmpty(BondSlaves)) data["slaves"] = BondSlaves!;
if (Mtu.HasValue) data["mtu"] = Mtu.Value.ToString();
if (Autostart.IsPresent) data["autostart"] = "1";
if (!string.IsNullOrEmpty(Comments)) data["comments"] = Comments;
if (!string.IsNullOrEmpty(Comments)) data["comments"] = Comments!;
client.PutAsync($"nodes/{Node}/network/{Iface}", data).GetAwaiter().GetResult();
}
@@ -54,7 +54,7 @@ namespace PSProxmoxVE.Cmdlets.Snapshots
{
["snapname"] = Name
};
if (!string.IsNullOrEmpty(Description)) data["description"] = Description;
if (!string.IsNullOrEmpty(Description)) data["description"] = Description!;
if (IncludeVmState.IsPresent) data["vmstate"] = "1";
var json = client.PostAsync($"nodes/{Node}/qemu/{VmId}/snapshot", data).GetAwaiter().GetResult();
@@ -89,16 +89,16 @@ namespace PSProxmoxVE.Cmdlets.Storage
["type"] = Type
};
if (!string.IsNullOrEmpty(Content)) data["content"] = Content;
if (!string.IsNullOrEmpty(Path)) data["path"] = Path;
if (!string.IsNullOrEmpty(Server)) data["server"] = Server;
if (!string.IsNullOrEmpty(Export)) data["export"] = Export;
if (!string.IsNullOrEmpty(VgName)) data["vgname"] = VgName;
if (!string.IsNullOrEmpty(ThinPool)) data["thinpool"] = ThinPool;
if (!string.IsNullOrEmpty(Pool)) data["pool"] = Pool;
if (!string.IsNullOrEmpty(CephPool)) data["pool"] = CephPool;
if (!string.IsNullOrEmpty(MonHost)) data["monhost"] = MonHost;
if (!string.IsNullOrEmpty(Nodes)) data["nodes"] = Nodes;
if (!string.IsNullOrEmpty(Content)) data["content"] = Content!;
if (!string.IsNullOrEmpty(Path)) data["path"] = Path!;
if (!string.IsNullOrEmpty(Server)) data["server"] = Server!;
if (!string.IsNullOrEmpty(Export)) data["export"] = Export!;
if (!string.IsNullOrEmpty(VgName)) data["vgname"] = VgName!;
if (!string.IsNullOrEmpty(ThinPool)) data["thinpool"] = ThinPool!;
if (!string.IsNullOrEmpty(Pool)) data["pool"] = Pool!;
if (!string.IsNullOrEmpty(CephPool)) data["pool"] = CephPool!;
if (!string.IsNullOrEmpty(MonHost)) data["monhost"] = MonHost!;
if (!string.IsNullOrEmpty(Nodes)) data["nodes"] = Nodes!;
if (Shared.IsPresent) data["shared"] = "1";
if (Disable.IsPresent) data["disable"] = "1";
@@ -108,7 +108,7 @@ namespace PSProxmoxVE.Cmdlets.Tasks
};
if (!task.IsSuccessful && !string.IsNullOrEmpty(exitStatus) && exitStatus != "OK")
throw new PveTaskFailedException(Upid, exitStatus);
throw new PveTaskFailedException(Upid, exitStatus!);
WriteObject(task);
return;
@@ -33,7 +33,7 @@ namespace PSProxmoxVE.Cmdlets.Templates
if (!string.IsNullOrEmpty(Node))
{
nodesToQuery.Add(Node);
nodesToQuery.Add(Node!);
}
else
{
@@ -62,7 +62,7 @@ namespace PSProxmoxVE.Cmdlets.Templates
if (!string.IsNullOrEmpty(Name) && vm.Name != null)
{
var pattern = Name.Replace("*", "");
var pattern = Name!.Replace("*", "");
if (Name.Contains("*"))
{
if (vm.Name.IndexOf(pattern, System.StringComparison.OrdinalIgnoreCase) < 0)
@@ -53,7 +53,7 @@ namespace PSProxmoxVE.Cmdlets.Users
if (string.IsNullOrEmpty(UserId))
return true;
if (UserId.Contains("*"))
if (UserId!.Contains("*"))
{
var pattern = UserId.Replace("*", "");
return user.UserId.IndexOf(pattern, System.StringComparison.OrdinalIgnoreCase) >= 0;
@@ -38,7 +38,7 @@ namespace PSProxmoxVE.Cmdlets.Users
{
["roleid"] = RoleId
};
if (!string.IsNullOrEmpty(Privileges)) data["privs"] = Privileges;
if (!string.IsNullOrEmpty(Privileges)) data["privs"] = Privileges!;
client.PostAsync("access/roles", data).GetAwaiter().GetResult();
@@ -63,11 +63,11 @@ namespace PSProxmoxVE.Cmdlets.Users
finally { Marshal.ZeroFreeGlobalAllocUnicode(ptr); }
}
if (!string.IsNullOrEmpty(FirstName)) config["firstname"] = FirstName;
if (!string.IsNullOrEmpty(LastName)) config["lastname"] = LastName;
if (!string.IsNullOrEmpty(Email)) config["email"] = Email;
if (!string.IsNullOrEmpty(Groups)) config["groups"] = Groups;
if (!string.IsNullOrEmpty(Comment)) config["comment"] = Comment;
if (!string.IsNullOrEmpty(FirstName)) config["firstname"] = FirstName!;
if (!string.IsNullOrEmpty(LastName)) config["lastname"] = LastName!;
if (!string.IsNullOrEmpty(Email)) config["email"] = Email!;
if (!string.IsNullOrEmpty(Groups)) config["groups"] = Groups!;
if (!string.IsNullOrEmpty(Comment)) config["comment"] = Comment!;
if (Expire.HasValue) config["expire"] = Expire.Value;
var session = GetSession();
@@ -65,11 +65,11 @@ namespace PSProxmoxVE.Cmdlets.Users
finally { Marshal.ZeroFreeGlobalAllocUnicode(ptr); }
}
if (!string.IsNullOrEmpty(FirstName)) config["firstname"] = FirstName;
if (!string.IsNullOrEmpty(LastName)) config["lastname"] = LastName;
if (!string.IsNullOrEmpty(Email)) config["email"] = Email;
if (!string.IsNullOrEmpty(Groups)) config["groups"] = Groups;
if (!string.IsNullOrEmpty(Comment)) config["comment"] = Comment;
if (!string.IsNullOrEmpty(FirstName)) config["firstname"] = FirstName!;
if (!string.IsNullOrEmpty(LastName)) config["lastname"] = LastName!;
if (!string.IsNullOrEmpty(Email)) config["email"] = Email!;
if (!string.IsNullOrEmpty(Groups)) config["groups"] = Groups!;
if (!string.IsNullOrEmpty(Comment)) config["comment"] = Comment!;
if (Expire.HasValue) config["expire"] = Expire.Value;
if (Enable.HasValue) config["enable"] = Enable.Value ? "1" : "0";
@@ -59,7 +59,7 @@ namespace PSProxmoxVE.Core.Tests.Authentication
public void ValidateHostname_NullOrEmpty_Throws_ForCredentials(string? hostname)
{
Assert.Throws<ArgumentException>(() =>
PveAuthenticator.AuthenticateWithCredentials(hostname, ValidPort, false, "root@pam", "password"));
PveAuthenticator.AuthenticateWithCredentials(hostname!, ValidPort, false, "root@pam", "password"));
}
[Theory]
@@ -69,7 +69,7 @@ namespace PSProxmoxVE.Core.Tests.Authentication
public void ValidateHostname_NullOrEmpty_Throws_ForApiToken(string? hostname)
{
Assert.Throws<ArgumentException>(() =>
PveAuthenticator.AuthenticateWithApiToken(hostname, ValidPort, false, "root@pam!mytoken=uuid"));
PveAuthenticator.AuthenticateWithApiToken(hostname!, ValidPort, false, "root@pam!mytoken=uuid"));
}
[Theory]
@@ -79,7 +79,7 @@ namespace PSProxmoxVE.Core.Tests.Authentication
public void ValidateApiToken_NullOrEmpty_Throws(string? token)
{
Assert.Throws<ArgumentException>(() =>
PveAuthenticator.AuthenticateWithApiToken(ValidHostname, ValidPort, false, token));
PveAuthenticator.AuthenticateWithApiToken(ValidHostname, ValidPort, false, token!));
}
}
}
@@ -44,7 +44,7 @@ namespace PSProxmoxVE.Core.Tests.Authentication
[InlineData(" ")]
public void Parse_NullOrEmpty_Throws(string? input)
{
Assert.Throws<ArgumentException>(() => PveVersion.Parse(input));
Assert.Throws<ArgumentException>(() => PveVersion.Parse(input!));
}
[Fact]
@@ -11,6 +11,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_cluster_status.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var entries = data.ToObject<PveClusterStatus[]>();
Assert.NotNull(entries);
Assert.Equal(4, entries.Length);
@@ -21,6 +22,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_cluster_status.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var entries = data.ToObject<PveClusterStatus[]>();
Assert.NotNull(entries);
Assert.Equal("cluster", entries[0].Type);
@@ -31,6 +33,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_cluster_status.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var entries = data.ToObject<PveClusterStatus[]>();
Assert.NotNull(entries);
Assert.Equal("testcluster", entries[0].Name);
@@ -41,6 +44,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_cluster_status.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var entries = data.ToObject<PveClusterStatus[]>();
Assert.NotNull(entries);
Assert.Equal(3, entries[0].Nodes);
@@ -51,6 +55,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_cluster_status.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var entries = data.ToObject<PveClusterStatus[]>();
Assert.NotNull(entries);
Assert.Equal(1, entries[0].Quorate);
@@ -61,6 +66,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_cluster_status.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var entries = data.ToObject<PveClusterStatus[]>();
Assert.NotNull(entries);
Assert.Equal("node", entries[1].Type);
@@ -71,6 +77,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_cluster_status.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var entries = data.ToObject<PveClusterStatus[]>();
Assert.NotNull(entries);
Assert.Equal("192.168.1.10", entries[1].Ip);
@@ -81,6 +88,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_cluster_status.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var entries = data.ToObject<PveClusterStatus[]>();
Assert.NotNull(entries);
Assert.Equal(1, entries[1].Online);
@@ -91,6 +99,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_cluster_status.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var entries = data.ToObject<PveClusterStatus[]>();
Assert.NotNull(entries);
Assert.Equal(1, entries[1].Local);
@@ -101,6 +110,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_cluster_status.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var entries = data.ToObject<PveClusterStatus[]>();
Assert.NotNull(entries);
// Fourth entry (index 3) is pve3 which is offline
@@ -113,6 +123,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_cluster_status.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var entries = data.ToObject<PveClusterStatus[]>();
Assert.NotNull(entries);
// Cluster-type entry should not have node-specific fields
@@ -125,6 +136,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_cluster_status.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var entries = data.ToObject<PveClusterStatus[]>();
Assert.NotNull(entries);
// Node-type entries should not have cluster-specific fields
@@ -11,6 +11,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_containers.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var containers = data.ToObject<PveContainer[]>();
Assert.NotNull(containers);
Assert.Equal(2, containers.Length);
@@ -21,6 +22,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_containers.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var containers = data.ToObject<PveContainer[]>();
Assert.NotNull(containers);
Assert.Equal(200, containers[0].VmId);
@@ -31,6 +33,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_containers.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var containers = data.ToObject<PveContainer[]>();
Assert.NotNull(containers);
Assert.Equal("ct-web", containers[0].Name);
@@ -41,6 +44,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_containers.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var containers = data.ToObject<PveContainer[]>();
Assert.NotNull(containers);
Assert.Equal("running", containers[0].Status);
@@ -51,6 +55,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_containers.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var containers = data.ToObject<PveContainer[]>();
Assert.NotNull(containers);
Assert.Equal("pve1", containers[0].Node);
@@ -61,6 +66,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_containers.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var containers = data.ToObject<PveContainer[]>();
Assert.NotNull(containers);
Assert.Equal(2, containers[0].CpuCount);
@@ -72,6 +78,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_containers.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var containers = data.ToObject<PveContainer[]>();
Assert.NotNull(containers);
Assert.Equal(536870912L, containers[0].MaxSwap);
@@ -83,6 +90,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_containers.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var containers = data.ToObject<PveContainer[]>();
Assert.NotNull(containers);
Assert.Equal(1, containers[0].Unprivileged);
@@ -93,6 +101,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_containers.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var containers = data.ToObject<PveContainer[]>();
Assert.NotNull(containers);
Assert.Equal("ubuntu", containers[0].OsType);
@@ -103,6 +112,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_containers.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var containers = data.ToObject<PveContainer[]>();
Assert.NotNull(containers);
Assert.Equal(201, containers[1].VmId);
@@ -115,6 +125,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_containers.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var containers = data.ToObject<PveContainer[]>();
Assert.NotNull(containers);
// Tags field is only in the first container
@@ -11,6 +11,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_networks.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var networks = data.ToObject<PveNetwork[]>();
Assert.NotNull(networks);
Assert.Equal(2, networks.Length);
@@ -21,6 +22,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_networks.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var networks = data.ToObject<PveNetwork[]>();
Assert.NotNull(networks);
Assert.Equal("vmbr0", networks[0].Iface);
@@ -31,6 +33,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_networks.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var networks = data.ToObject<PveNetwork[]>();
Assert.NotNull(networks);
Assert.Equal("bridge", networks[0].Type);
@@ -41,6 +44,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_networks.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var networks = data.ToObject<PveNetwork[]>();
Assert.NotNull(networks);
Assert.Equal("192.168.1.10", networks[0].Address);
@@ -53,6 +57,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_networks.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var networks = data.ToObject<PveNetwork[]>();
Assert.NotNull(networks);
Assert.Equal("192.168.1.10/24", networks[0].Cidr);
@@ -63,6 +68,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_networks.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var networks = data.ToObject<PveNetwork[]>();
Assert.NotNull(networks);
Assert.Equal("enp0s31f6", networks[0].BridgePorts);
@@ -73,6 +79,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_networks.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var networks = data.ToObject<PveNetwork[]>();
Assert.NotNull(networks);
Assert.Equal(1, networks[0].Autostart);
@@ -83,6 +90,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_networks.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var networks = data.ToObject<PveNetwork[]>();
Assert.NotNull(networks);
// No VLAN on primary bridge
@@ -95,6 +103,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_networks.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var networks = data.ToObject<PveNetwork[]>();
Assert.NotNull(networks);
Assert.Equal("vmbr1", networks[1].Iface);
@@ -11,6 +11,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
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);
@@ -25,6 +26,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
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);
@@ -38,6 +40,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
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);
@@ -49,6 +52,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
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);
@@ -60,6 +64,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
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);
@@ -70,6 +75,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
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);
@@ -83,6 +89,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
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);
@@ -95,6 +102,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
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);
@@ -11,6 +11,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_sdn_zones.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var zones = data.ToObject<PveSdnZone[]>();
Assert.NotNull(zones);
Assert.Equal(2, zones.Length);
@@ -21,6 +22,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_sdn_zones.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var zones = data.ToObject<PveSdnZone[]>();
Assert.NotNull(zones);
Assert.Equal("localzone", zones[0].Zone);
@@ -31,6 +33,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_sdn_zones.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var zones = data.ToObject<PveSdnZone[]>();
Assert.NotNull(zones);
Assert.Equal("simple", zones[0].Type);
@@ -41,6 +44,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_sdn_zones.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var zones = data.ToObject<PveSdnZone[]>();
Assert.NotNull(zones);
Assert.Equal("vxlanzone", zones[1].Zone);
@@ -52,6 +56,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_sdn_zones.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var zones = data.ToObject<PveSdnZone[]>();
Assert.NotNull(zones);
// Comments field is not present in the fixture
@@ -63,6 +68,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_sdn_vnets.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var vnets = data.ToObject<PveSdnVnet[]>();
Assert.NotNull(vnets);
Assert.Equal(2, vnets.Length);
@@ -73,6 +79,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_sdn_vnets.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var vnets = data.ToObject<PveSdnVnet[]>();
Assert.NotNull(vnets);
Assert.Equal("myvnet", vnets[0].Vnet);
@@ -83,6 +90,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_sdn_vnets.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var vnets = data.ToObject<PveSdnVnet[]>();
Assert.NotNull(vnets);
Assert.Equal("localzone", vnets[0].Zone);
@@ -93,6 +101,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_sdn_vnets.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var vnets = data.ToObject<PveSdnVnet[]>();
Assert.NotNull(vnets);
Assert.Equal(100, vnets[0].Tag);
@@ -103,6 +112,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_sdn_vnets.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var vnets = data.ToObject<PveSdnVnet[]>();
Assert.NotNull(vnets);
Assert.Equal("My VNET", vnets[0].Alias);
@@ -113,6 +123,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_sdn_vnets.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var vnets = data.ToObject<PveSdnVnet[]>();
Assert.NotNull(vnets);
Assert.Equal("prodnet", vnets[1].Vnet);
@@ -125,6 +136,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_sdn_vnets.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var vnets = data.ToObject<PveSdnVnet[]>();
Assert.NotNull(vnets);
// Comments not present in fixture entries
@@ -11,6 +11,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_snapshots.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var snapshots = data.ToObject<PveSnapshot[]>();
Assert.NotNull(snapshots);
Assert.Equal(3, snapshots.Length);
@@ -21,6 +22,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_snapshots.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var snapshots = data.ToObject<PveSnapshot[]>();
Assert.NotNull(snapshots);
Assert.Equal("current", snapshots[0].Name);
@@ -31,6 +33,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_snapshots.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var snapshots = data.ToObject<PveSnapshot[]>();
Assert.NotNull(snapshots);
Assert.Equal("You are here!", snapshots[0].Description);
@@ -41,6 +44,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_snapshots.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var snapshots = data.ToObject<PveSnapshot[]>();
Assert.NotNull(snapshots);
Assert.Equal("snap1", snapshots[1].Name);
@@ -52,6 +56,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_snapshots.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var snapshots = data.ToObject<PveSnapshot[]>();
Assert.NotNull(snapshots);
Assert.Equal(1, snapshots[1].VmState);
@@ -62,6 +67,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_snapshots.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var snapshots = data.ToObject<PveSnapshot[]>();
Assert.NotNull(snapshots);
Assert.Equal("base", snapshots[1].Parent);
@@ -72,6 +78,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_snapshots.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var snapshots = data.ToObject<PveSnapshot[]>();
Assert.NotNull(snapshots);
Assert.Equal("base", snapshots[2].Name);
@@ -83,6 +90,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_snapshots.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var snapshots = data.ToObject<PveSnapshot[]>();
Assert.NotNull(snapshots);
Assert.Equal("snap1", snapshots[0].Parent);
@@ -93,6 +101,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_snapshots.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var snapshots = data.ToObject<PveSnapshot[]>();
Assert.NotNull(snapshots);
Assert.Equal(1709000000L, snapshots[2].SnapTime);
@@ -11,6 +11,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_storage.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var storages = data.ToObject<PveStorage[]>();
Assert.NotNull(storages);
Assert.Equal(3, storages.Length);
@@ -21,6 +22,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_storage.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var storages = data.ToObject<PveStorage[]>();
Assert.NotNull(storages);
Assert.Equal("local", storages[0].Storage);
@@ -31,6 +33,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_storage.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var storages = data.ToObject<PveStorage[]>();
Assert.NotNull(storages);
Assert.Equal("dir", storages[0].Type);
@@ -41,6 +44,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_storage.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var storages = data.ToObject<PveStorage[]>();
Assert.NotNull(storages);
Assert.Equal("iso,vztmpl,backup", storages[0].Content);
@@ -51,6 +55,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_storage.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var storages = data.ToObject<PveStorage[]>();
Assert.NotNull(storages);
Assert.Equal(107374182400L, storages[0].Total);
@@ -63,6 +68,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_storage.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var storages = data.ToObject<PveStorage[]>();
Assert.NotNull(storages);
Assert.Equal(1, storages[0].Enabled);
@@ -74,6 +80,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_storage.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var storages = data.ToObject<PveStorage[]>();
Assert.NotNull(storages);
var ceph = storages[2];
@@ -87,6 +94,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_storage_content.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var items = data.ToObject<PveStorageContent[]>();
Assert.NotNull(items);
Assert.Equal(2, items.Length);
@@ -97,6 +105,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_storage_content.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var items = data.ToObject<PveStorageContent[]>();
Assert.NotNull(items);
Assert.Equal("local:iso/ubuntu-24.04-live-server-amd64.iso", items[0].VolId);
@@ -107,6 +116,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_storage_content.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var items = data.ToObject<PveStorageContent[]>();
Assert.NotNull(items);
Assert.Equal("iso", items[0].Content);
@@ -118,6 +128,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_storage_content.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var items = data.ToObject<PveStorageContent[]>();
Assert.NotNull(items);
Assert.Equal(2774532096L, items[0].Size);
@@ -128,6 +139,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_storage_content.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var items = data.ToObject<PveStorageContent[]>();
Assert.NotNull(items);
// ISO items should not have a VmId or Notes
@@ -11,6 +11,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_tasks.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var task = data.ToObject<PveTask>();
Assert.NotNull(task);
Assert.Equal("UPID:pve1:00001234:00ABCDEF:65F00000:qmstart:100:root@pam:", task.Upid);
@@ -21,6 +22,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_tasks.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var task = data.ToObject<PveTask>();
Assert.NotNull(task);
Assert.Equal("stopped", task.Status);
@@ -31,6 +33,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_tasks.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var task = data.ToObject<PveTask>();
Assert.NotNull(task);
Assert.Equal("OK", task.ExitStatus);
@@ -41,6 +44,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_tasks.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var task = data.ToObject<PveTask>();
Assert.NotNull(task);
Assert.True(task.IsSuccessful);
@@ -51,6 +55,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_task_running.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var task = data.ToObject<PveTask>();
Assert.NotNull(task);
Assert.Equal("UPID:pve1:00001234:00ABCDEF:65F00000:qmstart:100:root@pam:", task.Upid);
@@ -61,6 +66,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_task_running.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var task = data.ToObject<PveTask>();
Assert.NotNull(task);
Assert.Equal("running", task.Status);
@@ -71,6 +77,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_task_running.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var task = data.ToObject<PveTask>();
Assert.NotNull(task);
Assert.Null(task.ExitStatus);
@@ -81,6 +88,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_task_running.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var task = data.ToObject<PveTask>();
Assert.NotNull(task);
Assert.False(task.IsSuccessful);
@@ -11,6 +11,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_users.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var users = data.ToObject<PveUser[]>();
Assert.NotNull(users);
Assert.Equal(3, users.Length);
@@ -21,6 +22,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_users.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var users = data.ToObject<PveUser[]>();
Assert.NotNull(users);
Assert.Equal("root@pam", users[0].UserId);
@@ -31,6 +33,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_users.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var users = data.ToObject<PveUser[]>();
Assert.NotNull(users);
Assert.Equal("Root", users[0].FirstName);
@@ -42,6 +45,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_users.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var users = data.ToObject<PveUser[]>();
Assert.NotNull(users);
Assert.Equal("root@example.com", users[0].Email);
@@ -52,6 +56,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_users.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var users = data.ToObject<PveUser[]>();
Assert.NotNull(users);
Assert.Equal(1, users[0].Enabled);
@@ -62,6 +67,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_users.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var users = data.ToObject<PveUser[]>();
Assert.NotNull(users);
Assert.Equal("admin@pve", users[1].UserId);
@@ -73,6 +79,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_users.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var users = data.ToObject<PveUser[]>();
Assert.NotNull(users);
Assert.Equal("readonly@pve", users[2].UserId);
@@ -84,6 +91,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_users.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var users = data.ToObject<PveUser[]>();
Assert.NotNull(users);
// Root user has no groups in fixture
@@ -95,6 +103,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_roles.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var roles = data.ToObject<PveRole[]>();
Assert.NotNull(roles);
Assert.Equal(2, roles.Length);
@@ -105,6 +114,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_roles.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var roles = data.ToObject<PveRole[]>();
Assert.NotNull(roles);
Assert.Equal("Administrator", roles[0].RoleId);
@@ -115,6 +125,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_roles.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var roles = data.ToObject<PveRole[]>();
Assert.NotNull(roles);
Assert.Equal(1, roles[0].Special);
@@ -125,6 +136,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_roles.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var roles = data.ToObject<PveRole[]>();
Assert.NotNull(roles);
Assert.NotNull(roles[0].Privileges);
@@ -136,6 +148,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_roles.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var roles = data.ToObject<PveRole[]>();
Assert.NotNull(roles);
Assert.Equal("PVEAuditor", roles[1].RoleId);
@@ -11,6 +11,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_vms.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var vms = data.ToObject<PveVm[]>();
Assert.NotNull(vms);
Assert.Equal(3, vms.Length);
@@ -21,6 +22,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_vms.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var vms = data.ToObject<PveVm[]>();
Assert.NotNull(vms);
Assert.Equal(100, vms[0].VmId);
@@ -31,6 +33,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_vms.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var vms = data.ToObject<PveVm[]>();
Assert.NotNull(vms);
Assert.Equal("test-vm-1", vms[0].Name);
@@ -41,6 +44,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_vms.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var vms = data.ToObject<PveVm[]>();
Assert.NotNull(vms);
Assert.Equal("running", vms[0].Status);
@@ -51,6 +55,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_vms.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var vms = data.ToObject<PveVm[]>();
Assert.NotNull(vms);
// Third entry is the template
@@ -64,6 +69,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_vms.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var vms = data.ToObject<PveVm[]>();
Assert.NotNull(vms);
Assert.Equal(0, vms[0].Template);
@@ -74,6 +80,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_vms.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var vms = data.ToObject<PveVm[]>();
Assert.NotNull(vms);
Assert.Equal(8589934592L, vms[0].MaxMem);
@@ -85,6 +92,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_vms.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var vms = data.ToObject<PveVm[]>();
Assert.NotNull(vms);
Assert.Equal(0L, vms[1].Uptime);
@@ -95,6 +103,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_vm_config.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var config = data.ToObject<PveVmConfig>();
Assert.NotNull(config);
Assert.Equal(4, config.Cores);
@@ -107,6 +116,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_vm_config.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var config = data.ToObject<PveVmConfig>();
Assert.NotNull(config);
Assert.Equal("ovmf", config.Bios);
@@ -118,6 +128,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_vm_config.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var config = data.ToObject<PveVmConfig>();
Assert.NotNull(config);
Assert.Equal("host", config.CpuType);
@@ -129,6 +140,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_vm_config.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var config = data.ToObject<PveVmConfig>();
Assert.NotNull(config);
Assert.NotNull(config.Net0);
@@ -140,6 +152,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_vm_config.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var config = data.ToObject<PveVmConfig>();
Assert.NotNull(config);
// Fields not present in fixture should be null
@@ -153,6 +166,7 @@ namespace PSProxmoxVE.Core.Tests.Models
{
var json = TestHelper.LoadFixture("pve9_vm_config.json");
var data = JObject.Parse(json)["data"];
Assert.NotNull(data);
var config = data.ToObject<PveVmConfig>();
Assert.NotNull(config);
Assert.Equal("admin", config.CiUser);