mirror of
https://github.com/Grace-Solutions/PSProxmox.git
synced 2026-08-24 21:26:29 +00:00
Initial commit of PSProxmox module
This commit is contained in:
@@ -0,0 +1,217 @@
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using PSProxmox.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace PSProxmox.Tests.Models
|
||||
{
|
||||
[TestClass]
|
||||
public class ProxmoxVMBuilderTests
|
||||
{
|
||||
[TestMethod]
|
||||
public void Constructor_SetsName()
|
||||
{
|
||||
// Arrange
|
||||
string name = "test-vm";
|
||||
|
||||
// Act
|
||||
var builder = new ProxmoxVMBuilder(name);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(name, builder.Name);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void Constructor_ThrowsOnNullName()
|
||||
{
|
||||
// Act
|
||||
var builder = new ProxmoxVMBuilder(null);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void WithVMID_SetsVMID()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new ProxmoxVMBuilder("test-vm");
|
||||
int vmid = 100;
|
||||
|
||||
// Act
|
||||
builder.WithVMID(vmid);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(vmid, builder.VMID);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void WithNode_SetsNode()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new ProxmoxVMBuilder("test-vm");
|
||||
string node = "pve1";
|
||||
|
||||
// Act
|
||||
builder.WithNode(node);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(node, builder.Node);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void WithNode_ThrowsOnNullNode()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new ProxmoxVMBuilder("test-vm");
|
||||
|
||||
// Act
|
||||
builder.WithNode(null);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void WithMemory_SetsMemory()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new ProxmoxVMBuilder("test-vm");
|
||||
int memory = 2048;
|
||||
|
||||
// Act
|
||||
builder.WithMemory(memory);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(memory, builder.Memory);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void WithMemory_ThrowsOnZeroMemory()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new ProxmoxVMBuilder("test-vm");
|
||||
|
||||
// Act
|
||||
builder.WithMemory(0);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void WithMemory_ThrowsOnNegativeMemory()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new ProxmoxVMBuilder("test-vm");
|
||||
|
||||
// Act
|
||||
builder.WithMemory(-1);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void WithCores_SetsCores()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new ProxmoxVMBuilder("test-vm");
|
||||
int cores = 4;
|
||||
|
||||
// Act
|
||||
builder.WithCores(cores);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(cores, builder.Cores);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void WithCores_ThrowsOnZeroCores()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new ProxmoxVMBuilder("test-vm");
|
||||
|
||||
// Act
|
||||
builder.WithCores(0);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void WithDisk_AddsDisk()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new ProxmoxVMBuilder("test-vm");
|
||||
int sizeGB = 32;
|
||||
string storage = "local-lvm";
|
||||
|
||||
// Act
|
||||
builder.WithDisk(sizeGB, storage);
|
||||
var parameters = builder.Build();
|
||||
|
||||
// Assert
|
||||
Assert.IsTrue(parameters.ContainsKey("scsi0"));
|
||||
Assert.AreEqual($"{storage}:{sizeGB},format=raw", parameters["scsi0"]);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void WithNetwork_AddsNetwork()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new ProxmoxVMBuilder("test-vm");
|
||||
string model = "virtio";
|
||||
string bridge = "vmbr0";
|
||||
|
||||
// Act
|
||||
builder.WithNetwork(model, bridge);
|
||||
var parameters = builder.Build();
|
||||
|
||||
// Assert
|
||||
Assert.IsTrue(parameters.ContainsKey("net0"));
|
||||
Assert.AreEqual($"{model},bridge={bridge}", parameters["net0"]);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void WithIPConfig_AddsIPConfig()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new ProxmoxVMBuilder("test-vm");
|
||||
string model = "virtio";
|
||||
string bridge = "vmbr0";
|
||||
string ipAddress = "192.168.1.10/24";
|
||||
string gateway = "192.168.1.1";
|
||||
|
||||
// Act
|
||||
builder.WithNetwork(model, bridge);
|
||||
builder.WithIPConfig(ipAddress, gateway);
|
||||
var parameters = builder.Build();
|
||||
|
||||
// Assert
|
||||
Assert.IsTrue(parameters.ContainsKey("net0"));
|
||||
Assert.AreEqual($"{model},bridge={bridge},ip={ipAddress},gw={gateway}", parameters["net0"]);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Build_ReturnsCorrectParameters()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new ProxmoxVMBuilder("test-vm")
|
||||
.WithVMID(100)
|
||||
.WithNode("pve1")
|
||||
.WithMemory(2048)
|
||||
.WithCores(2)
|
||||
.WithDisk(32, "local-lvm")
|
||||
.WithNetwork("virtio", "vmbr0")
|
||||
.WithIPConfig("192.168.1.10/24", "192.168.1.1")
|
||||
.WithBootOrder("disk", "net")
|
||||
.WithVGA("std");
|
||||
|
||||
// Act
|
||||
var parameters = builder.Build();
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual("test-vm", parameters["name"]);
|
||||
Assert.AreEqual("100", parameters["vmid"]);
|
||||
Assert.AreEqual("2048", parameters["memory"]);
|
||||
Assert.AreEqual("2", parameters["cores"]);
|
||||
Assert.AreEqual("host", parameters["cpu"]);
|
||||
Assert.AreEqual("l26", parameters["ostype"]);
|
||||
Assert.AreEqual("local-lvm:32,format=raw", parameters["scsi0"]);
|
||||
Assert.AreEqual("virtio,bridge=vmbr0,ip=192.168.1.10/24,gw=192.168.1.1", parameters["net0"]);
|
||||
Assert.AreEqual("disk;net", parameters["boot"]);
|
||||
Assert.AreEqual("std", parameters["vga"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user