mirror of
https://github.com/Grace-Solutions/PSProxmox.git
synced 2026-08-25 13:36:50 +00:00
228 lines
6.5 KiB
C#
228 lines
6.5 KiB
C#
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using PSProxmox.Cmdlets;
|
|
using PSProxmox.Models;
|
|
using System;
|
|
using System.Management.Automation;
|
|
using System.Management.Automation.Runspaces;
|
|
|
|
namespace PSProxmox.Tests.Cmdlets
|
|
{
|
|
[TestClass]
|
|
public class NewProxmoxVMBuilderCmdletTests
|
|
{
|
|
[TestMethod]
|
|
public void ProcessRecord_CreatesBuilder()
|
|
{
|
|
// Arrange
|
|
var cmdlet = new NewProxmoxVMBuilderCmdlet
|
|
{
|
|
Name = "test-vm",
|
|
Memory = 2048,
|
|
Cores = 2,
|
|
CPUType = "host",
|
|
OSType = "l26",
|
|
Start = true,
|
|
IPPool = "test-pool"
|
|
};
|
|
|
|
// Act
|
|
ProxmoxVMBuilder result = null;
|
|
using (var ps = PowerShell.Create())
|
|
{
|
|
ps.Runspace = RunspaceFactory.CreateRunspace();
|
|
ps.Runspace.Open();
|
|
|
|
// Add the cmdlet to the pipeline
|
|
ps.Commands.AddCommand(cmdlet);
|
|
|
|
// Execute the cmdlet
|
|
var results = ps.Invoke();
|
|
|
|
// Get the result
|
|
if (results.Count > 0)
|
|
{
|
|
result = results[0].BaseObject as ProxmoxVMBuilder;
|
|
}
|
|
}
|
|
|
|
// Assert
|
|
Assert.IsNotNull(result);
|
|
Assert.AreEqual("test-vm", result.Name);
|
|
Assert.AreEqual(2048, result.Memory);
|
|
Assert.AreEqual(2, result.Cores);
|
|
Assert.AreEqual("host", result.CPUType);
|
|
Assert.AreEqual("l26", result.OSType);
|
|
Assert.IsTrue(result.Start);
|
|
Assert.AreEqual("test-pool", result.IPPool);
|
|
}
|
|
|
|
[TestMethod]
|
|
[ExpectedException(typeof(PSArgumentNullException))]
|
|
public void ProcessRecord_ThrowsOnNullName()
|
|
{
|
|
// Arrange
|
|
var cmdlet = new NewProxmoxVMBuilderCmdlet
|
|
{
|
|
Name = null
|
|
};
|
|
|
|
// Act
|
|
using (var ps = PowerShell.Create())
|
|
{
|
|
ps.Runspace = RunspaceFactory.CreateRunspace();
|
|
ps.Runspace.Open();
|
|
|
|
// Add the cmdlet to the pipeline
|
|
ps.Commands.AddCommand(cmdlet);
|
|
|
|
// Execute the cmdlet
|
|
ps.Invoke();
|
|
}
|
|
}
|
|
|
|
[TestMethod]
|
|
public void ProcessRecord_WithNode_CreatesBuilder()
|
|
{
|
|
// Arrange
|
|
var cmdlet = new NewProxmoxVMBuilderCmdlet
|
|
{
|
|
Name = "test-vm",
|
|
Node = "pve1"
|
|
};
|
|
|
|
// Act
|
|
ProxmoxVMBuilder result = null;
|
|
using (var ps = PowerShell.Create())
|
|
{
|
|
ps.Runspace = RunspaceFactory.CreateRunspace();
|
|
ps.Runspace.Open();
|
|
|
|
// Add the cmdlet to the pipeline
|
|
ps.Commands.AddCommand(cmdlet);
|
|
|
|
// Execute the cmdlet
|
|
var results = ps.Invoke();
|
|
|
|
// Get the result
|
|
if (results.Count > 0)
|
|
{
|
|
result = results[0].BaseObject as ProxmoxVMBuilder;
|
|
}
|
|
}
|
|
|
|
// Assert
|
|
Assert.IsNotNull(result);
|
|
Assert.AreEqual("test-vm", result.Name);
|
|
Assert.AreEqual("pve1", result.Node);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void ProcessRecord_WithVMID_CreatesBuilder()
|
|
{
|
|
// Arrange
|
|
var cmdlet = new NewProxmoxVMBuilderCmdlet
|
|
{
|
|
Name = "test-vm",
|
|
VMID = 100
|
|
};
|
|
|
|
// Act
|
|
ProxmoxVMBuilder result = null;
|
|
using (var ps = PowerShell.Create())
|
|
{
|
|
ps.Runspace = RunspaceFactory.CreateRunspace();
|
|
ps.Runspace.Open();
|
|
|
|
// Add the cmdlet to the pipeline
|
|
ps.Commands.AddCommand(cmdlet);
|
|
|
|
// Execute the cmdlet
|
|
var results = ps.Invoke();
|
|
|
|
// Get the result
|
|
if (results.Count > 0)
|
|
{
|
|
result = results[0].BaseObject as ProxmoxVMBuilder;
|
|
}
|
|
}
|
|
|
|
// Assert
|
|
Assert.IsNotNull(result);
|
|
Assert.AreEqual("test-vm", result.Name);
|
|
Assert.AreEqual(100, result.VMID);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void ProcessRecord_WithDescription_CreatesBuilder()
|
|
{
|
|
// Arrange
|
|
var cmdlet = new NewProxmoxVMBuilderCmdlet
|
|
{
|
|
Name = "test-vm",
|
|
Description = "Test VM"
|
|
};
|
|
|
|
// Act
|
|
ProxmoxVMBuilder result = null;
|
|
using (var ps = PowerShell.Create())
|
|
{
|
|
ps.Runspace = RunspaceFactory.CreateRunspace();
|
|
ps.Runspace.Open();
|
|
|
|
// Add the cmdlet to the pipeline
|
|
ps.Commands.AddCommand(cmdlet);
|
|
|
|
// Execute the cmdlet
|
|
var results = ps.Invoke();
|
|
|
|
// Get the result
|
|
if (results.Count > 0)
|
|
{
|
|
result = results[0].BaseObject as ProxmoxVMBuilder;
|
|
}
|
|
}
|
|
|
|
// Assert
|
|
Assert.IsNotNull(result);
|
|
Assert.AreEqual("test-vm", result.Name);
|
|
Assert.AreEqual("Test VM", result.Description);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void ProcessRecord_WithTags_CreatesBuilder()
|
|
{
|
|
// Arrange
|
|
var cmdlet = new NewProxmoxVMBuilderCmdlet
|
|
{
|
|
Name = "test-vm",
|
|
Tags = new[] { "tag1", "tag2" }
|
|
};
|
|
|
|
// Act
|
|
ProxmoxVMBuilder result = null;
|
|
using (var ps = PowerShell.Create())
|
|
{
|
|
ps.Runspace = RunspaceFactory.CreateRunspace();
|
|
ps.Runspace.Open();
|
|
|
|
// Add the cmdlet to the pipeline
|
|
ps.Commands.AddCommand(cmdlet);
|
|
|
|
// Execute the cmdlet
|
|
var results = ps.Invoke();
|
|
|
|
// Get the result
|
|
if (results.Count > 0)
|
|
{
|
|
result = results[0].BaseObject as ProxmoxVMBuilder;
|
|
}
|
|
}
|
|
|
|
// Assert
|
|
Assert.IsNotNull(result);
|
|
Assert.AreEqual("test-vm", result.Name);
|
|
Assert.AreEqual("tag1,tag2", result.Tags);
|
|
}
|
|
}
|
|
}
|