127 lines
4.8 KiB
C#
127 lines
4.8 KiB
C#
|
using System;
|
|||
|
using System.Diagnostics;
|
|||
|
using System.Linq;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using Rackspace.CloudServers.v2;
|
|||
|
using Xunit;
|
|||
|
using Xunit.Abstractions;
|
|||
|
|
|||
|
namespace Rackspace.RackConnect.v3
|
|||
|
{
|
|||
|
public class RackConnectServiceTests : IDisposable
|
|||
|
{
|
|||
|
private readonly RackConnectService _rackConnectService;
|
|||
|
private readonly RackConnectTestDataManager _testData;
|
|||
|
|
|||
|
public RackConnectServiceTests(ITestOutputHelper testLog)
|
|||
|
{
|
|||
|
var testOutput = new XunitTraceListener(testLog);
|
|||
|
Trace.Listeners.Add(testOutput);
|
|||
|
RackspaceNet.Tracing.Http.Listeners.Add(testOutput);
|
|||
|
|
|||
|
var authenticationProvider = TestIdentityProvider.GetIdentityProvider("RackConnect");
|
|||
|
_rackConnectService = new RackConnectService(authenticationProvider, "LON");
|
|||
|
|
|||
|
_testData = new RackConnectTestDataManager(_rackConnectService, authenticationProvider);
|
|||
|
}
|
|||
|
|
|||
|
public void Dispose()
|
|||
|
{
|
|||
|
Trace.Listeners.Clear();
|
|||
|
RackspaceNet.Tracing.Http.Listeners.Clear();
|
|||
|
|
|||
|
_testData.Dispose();
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public async Task CreateUnassignedPublicIPTest()
|
|||
|
{
|
|||
|
Trace.Write("Provisioning a public ip address... ");
|
|||
|
var ip = await _testData.CreatePublicIP(new PublicIPCreateDefinition { ShouldRetain = true });
|
|||
|
|
|||
|
await ip.WaitUntilActiveAsync();
|
|||
|
Trace.WriteLine(ip.PublicIPv4Address);
|
|||
|
|
|||
|
Assert.NotNull(ip);
|
|||
|
Assert.Null(ip.Server);
|
|||
|
Assert.True(ip.ShouldRetain);
|
|||
|
Assert.NotNull(ip.PublicIPv4Address);
|
|||
|
Assert.Equal(PublicIPStatus.Active, ip.Status);
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public async Task CreatePublicIPTest()
|
|||
|
{
|
|||
|
Trace.WriteLine("Looking up the RackConnect network...");
|
|||
|
var network = (await _rackConnectService.ListNetworksAsync()).First();
|
|||
|
|
|||
|
Trace.Write("Creating a test cloud server...");
|
|||
|
var server = _testData.CreateServer(network.Id);
|
|||
|
Trace.WriteLine(server.Id);
|
|||
|
|
|||
|
Trace.Write("Assigning a public ip address to the test cloud server... ");
|
|||
|
var ipRequest = new PublicIPCreateDefinition {ServerId = server.Id, ShouldRetain = true};
|
|||
|
var ip = await _testData.CreatePublicIP(ipRequest);
|
|||
|
await ip.WaitUntilActiveAsync();
|
|||
|
Trace.WriteLine(ip.PublicIPv4Address);
|
|||
|
|
|||
|
Assert.NotNull(ip);
|
|||
|
Assert.Equal(server.Id, ip.Server.ServerId);
|
|||
|
Assert.NotNull(ip.PublicIPv4Address);
|
|||
|
Assert.Equal(PublicIPStatus.Active, ip.Status);
|
|||
|
|
|||
|
Trace.WriteLine("Retrieving public IPs assigned to the test cloud server...");
|
|||
|
var filterByServer = new ListPublicIPsFilter {ServerId = server.Id};
|
|||
|
var ips = await _rackConnectService.ListPublicIPsAsync(filterByServer);
|
|||
|
Assert.NotNull(ips);
|
|||
|
Assert.True(ips.Any(x => x.Id == ip.Id));
|
|||
|
|
|||
|
Trace.WriteLine("Update the IP address to not be retained...");
|
|||
|
ip = await _rackConnectService.UpdatePublicIPAsync(ip.Id, new PublicIPUpdateDefinition { ShouldRetain = false });
|
|||
|
await ip.WaitUntilActiveAsync();
|
|||
|
Assert.NotNull(ip);
|
|||
|
Assert.False(ip.ShouldRetain);
|
|||
|
|
|||
|
Trace.WriteLine("Removing public IP from test cloud server...");
|
|||
|
await ip.DeleteAsync();
|
|||
|
await ip.WaitUntilDeletedAsync();
|
|||
|
|
|||
|
Trace.WriteLine($"Verifying that {ip.PublicIPv4Address} is no longer assigned...");
|
|||
|
ips = await _rackConnectService.ListPublicIPsAsync(filterByServer);
|
|||
|
Assert.NotNull(ips);
|
|||
|
Assert.False(ips.Any(x => x.Id == ip.Id));
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public async Task ListNetworksTest()
|
|||
|
{
|
|||
|
Trace.WriteLine("Listing RackConnect networks...");
|
|||
|
var networks = await _rackConnectService.ListNetworksAsync();
|
|||
|
|
|||
|
Assert.NotNull(networks);
|
|||
|
var network = networks.FirstOrDefault();
|
|||
|
Assert.NotNull(network);
|
|||
|
Assert.NotNull(network.Id);
|
|||
|
Assert.NotNull(network.Name);
|
|||
|
Assert.NotNull(network.CIDR);
|
|||
|
Assert.NotNull(network.Created);
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public async Task GetNetworkTest()
|
|||
|
{
|
|||
|
Trace.WriteLine("Listing RackConnect networks...");
|
|||
|
var networks = await _rackConnectService.ListNetworksAsync();
|
|||
|
Assert.NotNull(networks);
|
|||
|
var network = networks.FirstOrDefault();
|
|||
|
Assert.NotNull(network);
|
|||
|
|
|||
|
Trace.WriteLine($"Retrieving RackConnect network ${network.Name}...");
|
|||
|
network = await _rackConnectService.GetNetworkAsync(network.Id);
|
|||
|
Assert.NotNull(network.Id);
|
|||
|
Assert.NotNull(network.Name);
|
|||
|
Assert.NotNull(network.CIDR);
|
|||
|
Assert.NotNull(network.Created);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|