mirror of
https://github.com/Grace-Solutions/PSProxmox.git
synced 2026-08-12 08:06:55 +00:00
218 lines
6.0 KiB
C#
218 lines
6.0 KiB
C#
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"]);
|
|
}
|
|
}
|
|
}
|