xenadmin/XenAdminTests/XenModelTests/AddressTests.cs
Aaron Robson e41f1b6e08 CA-303517: In XenCenter, if a VM has more than 1 IP address, it cannot be found using one of its IPs in the search box (#2331)
Refactored redundant IP Address parsing code from XenAPI-Extensions/VIF.IPAddresses and XenSeach/Common.IPAddressProperty into the FindIpAddresses method in the Helpers class to handle multiple networks on a single line with a separator. Added unit tests.

Signed-off-by: Aaron Robson <aaron.robson@citrix.com>
2018-11-29 09:47:39 +00:00

84 lines
2.5 KiB
C#

using System.Collections.Generic;
using NUnit.Framework;
using XenAdmin.Core;
namespace XenAdminTests.XenModelTests
{
[TestFixture, Category(TestCategories.Unit)]
public class AddressTests
{
private readonly Dictionary<string, string> _simpleNetworks = new Dictionary<string, string>
{
{"0/ip", "10.71.57.53"},
{"0/ipv4/0", "10.71.57.53"},
{"0/ipv6/0", "fe80:0000:0000:0000:1c1a:c2ff:fe2e:c823"}
};
private readonly Dictionary<string, string> _compoundNetworks = new Dictionary<string, string>
{
{"0/ip", "192.168.0.1\n192.168.0.2"},
{"1/ip", "192.168.0.3%n192.168.0.4"}
};
[Test]
public void TestSimple()
{
var expected = new List<string>
{
"10.71.57.53",
"fe80:0000:0000:0000:1c1a:c2ff:fe2e:c823"
};
var actual = Helpers.FindIpAddresses(_simpleNetworks, "0");
Assert.That(actual, Is.EquivalentTo(expected));
}
[Test]
public void TestUnusedDevice()
{
var actual = Helpers.FindIpAddresses(_simpleNetworks, "1");
Assert.That(actual, Is.Empty);
}
[Test]
public void TestCompoundNetworksNewlineSeparated()
{
var expected = new List<string>
{
"192.168.0.1",
"192.168.0.2"
};
var actual = Helpers.FindIpAddresses(_compoundNetworks, "0");
Assert.That(actual, Is.EquivalentTo(expected));
}
[Test]
public void TestCompoundNetworkPercentNSeparated()
{
var expected = new List<string>
{
"192.168.0.3",
"192.168.0.4"
};
var actual = Helpers.FindIpAddresses(_compoundNetworks, "1");
Assert.That(actual, Is.EquivalentTo(expected));
}
[Test]
public void TestCompoundNetworkSkipsBlanks()
{
var given = new Dictionary<string, string>
{
{"0/ip", "10.0.0.24\n\n10.0.0.26"}
};
var expected = new List<string>
{
"10.0.0.24",
"10.0.0.26"
};
var actual = Helpers.FindIpAddresses(given, "0");
Assert.That(actual, Is.EquivalentTo(expected));
}
}
}