public async void When401AuthenticationFailsMultipleTimes_ThrowException()
        {
            using (var httpTest = new HttpTest())
            {
                httpTest.RespondWith((int)HttpStatusCode.Unauthorized, "Your token has expired");
                httpTest.RespondWith((int)HttpStatusCode.Unauthorized, "Your token has expired");

                var service = new ContentDeliveryNetworkService(Stubs.AuthenticationProvider, "DFW");
                await Assert.ThrowsAsync<FlurlHttpException>(() => service.GetFlavorAsync("flavor-id"));
            }
        }
        public async Task GetDefaultQuotas()
        {
            using (var httpTest = new HttpTest())
            {
                httpTest.RespondWith(JObject.Parse(@"
{
  'quota_set': {
    'injected_file_content_bytes': 10240,
    'metadata_items': 128,
    'server_group_members': 10,
    'server_groups': 10,
    'ram': 51200,
    'floating_ips': 10,
    'key_pairs': 100,
    'id': 'defaults',
    'instances': 10,
    'security_group_rules': 20,
    'injected_files': 5,
    'cores': 20,
    'fixed_ips': -1,
    'injected_file_path_bytes': 255,
    'security_groups': 10
  }
}").ToString());

                var quotas = await _compute.GetDefaultQuotasAsync();

                httpTest.ShouldHaveCalled("*/os-quota-sets/defaults");
                Assert.NotNull(quotas);

                Assert.Equal(100, quotas.KeyPairs);
                Assert.Equal(-1, quotas.FixedIPs);
            }
        }
Ejemplo n.º 3
0
        public async void When401UnauthorizedIsReturned_RetryRequest()
        {
            using (var httpTest = new HttpTest())
            {
                httpTest.RespondWith((int)HttpStatusCode.Unauthorized, "Your token has expired");
                httpTest.RespondWithJson(new Flavor());

                var service = new ContentDeliveryNetworkService(Stubs.AuthenticationProvider, "DFW");
                var flavor = await service.GetFlavorAsync("flavor-id");
                Assert.NotNull(flavor);
            }
        }
Ejemplo n.º 4
0
        public void DeleteServerGroup(HttpStatusCode responseCode)
        {
            using (var httpTest = new HttpTest())
            {
                Identifier serverGroupId = Guid.NewGuid();
                httpTest.RespondWithJson(new ServerGroup { Id = serverGroupId });
                httpTest.RespondWith((int)responseCode, "All gone!");

                var serverGroup = _compute.GetServerGroup(serverGroupId);

                serverGroup.Delete();
                httpTest.ShouldHaveCalled($"*/os-server-groups/{serverGroupId}");
            }
        }
Ejemplo n.º 5
0
        public async Task EvacuateServer()
        {
            using (var httpTest = new HttpTest())
            {
                Identifier serverId = Guid.NewGuid();
                httpTest.RespondWithJson(new Server { Id = serverId });
                httpTest.RespondWith((int)HttpStatusCode.Accepted, "Roger that, boss");

                var server = _compute.GetServer(serverId);
                await server.EvacuateAsync(new EvacuateServerRequest(false));

                httpTest.ShouldHaveCalled($"*/servers/{serverId}/action");
                string lastRequest = httpTest.CallLog.Last().RequestBody;
                Assert.True(lastRequest.Contains("evacuate"));
            }
        }
Ejemplo n.º 6
0
        public void DetachVolume()
        {
            using (var httpTest = new HttpTest())
            {
                Identifier volumeId = Guid.NewGuid();
                Identifier serverId = Guid.NewGuid();
                httpTest.RespondWithJson(new Server
                {
                    Id = serverId,
                    AttachedVolumes = { new ServerVolume { Id = volumeId, DeviceName = "/dev/vdd" } }
                });
                httpTest.RespondWith((int)HttpStatusCode.Accepted, "Roger that, good buddy");

                var server = _compute.GetServer(serverId);
                ServerVolumeReference attachedVolume = server.AttachedVolumes[0];
                attachedVolume.Detach();

                httpTest.ShouldHaveCalled($"*/servers/{serverId}/os-volume_attachments/{volumeId}");
                Assert.False(server.AttachedVolumes.Any(v => v.Id == volumeId));
            }
        }
Ejemplo n.º 7
0
        public void RebootServer()
        {
            using (var httpTest = new HttpTest())
            {
                Identifier serverId = Guid.NewGuid();
                httpTest.RespondWithJson(new Server { Id = serverId });
                httpTest.RespondWith((int)HttpStatusCode.Accepted, "Roger that, boss");

                var server = _compute.GetServer(serverId);
                server.Reboot(new RebootServerRequest {Type = RebootType.Hard});

                httpTest.ShouldHaveCalled($"*/servers/{serverId}/action");
                string lastRequest = httpTest.CallLog.Last().RequestBody;
                Assert.True(lastRequest.Contains("reboot"));
                Assert.True(lastRequest.Contains("HARD"));
            }
        }
Ejemplo n.º 8
0
        public void ResumeServer()
        {
            using (var httpTest = new HttpTest())
            {
                Identifier serverId = Guid.NewGuid();
                httpTest.RespondWithJson(new Server { Id = serverId });
                httpTest.RespondWith((int)HttpStatusCode.Accepted, "Roger that, boss");

                var server = _compute.GetServer(serverId);
                server.Resume();

                httpTest.ShouldHaveCalled($"*/servers/{serverId}/action");
                Assert.True(httpTest.CallLog.Last().RequestBody.Contains("resume"));
            }
        }
Ejemplo n.º 9
0
        public void DeleteService()
        {
            using (var httpTest = new HttpTest())
            {
                httpTest.RespondWith((int)HttpStatusCode.NoContent, "All gone!");

                _cdnService.DeleteService("service-id");
            }
        }
Ejemplo n.º 10
0
        public void DeleteRouter(HttpStatusCode responseCode)
        {
            using (var httpTest = new HttpTest())
            {
                Identifier portId = Guid.NewGuid();
                Identifier routerId = Guid.NewGuid();
                httpTest.RespondWithJson(new Router { Id = routerId});
                httpTest.RespondWithJson(new PortCollection
                {
                    new Port {Id = portId}
                });
                httpTest.RespondWith((int)responseCode, "All gone!");

                var router = _networking.GetRouter(routerId);
                router.Delete();

                httpTest.ShouldHaveCalled($"*/routers/{routerId}/remove_router_interface");
                httpTest.ShouldHaveCalled($"*/routers/{routerId}");
            }
        }
Ejemplo n.º 11
0
        public void WhenDeleteServer_Returns404NotFound_ShouldConsiderRequestSuccessful()
        {
            using (var httpTest = new HttpTest())
            {
                Identifier serverId = Guid.NewGuid();
                httpTest.RespondWith((int)HttpStatusCode.NotFound, "Not here, boss...");

                _compute.DeleteServer(serverId);

                httpTest.ShouldHaveCalled($"*/servers/{serverId}");
            }
        }
Ejemplo n.º 12
0
        public void DisassociateFloatingIPFromServer()
        {
            var compute = new ComputeService(Stubs.AuthenticationProvider, "region");

            using (var httpTest = new HttpTest())
            {
                Identifier serverId = Guid.NewGuid();
                const string ip = "10.0.0.1";
                httpTest.RespondWithJson(new Server
                {
                    Id = serverId,
                    Addresses =
                    {
                        ["network1"] = new List<ServerAddress>
                        {
                            new ServerAddress {IP = ip, Type = AddressType.Floating}
                        }
                    }
                });
                httpTest.RespondWith((int)HttpStatusCode.OK, "ip disassociated!");

                var server = compute.GetServer(serverId);
                server.DisassociateFloatingIP(ip);

                Assert.Null(server.Addresses["network1"].FirstOrDefault(a => a.IP == ip && a.Type == AddressType.Floating));
            }
        }
Ejemplo n.º 13
0
        public void DeleteServer()
        {
            using (var httpTest = new HttpTest())
            {
                Identifier serverId = Guid.NewGuid();
                httpTest.RespondWith((int)HttpStatusCode.NoContent, "All gone!");

                _compute.DeleteServer(serverId);

                httpTest.ShouldHaveCalled($"*/servers/{serverId}");
            }
        }
Ejemplo n.º 14
0
        public void DeleteServerExtension()
        {
            using (var httpTest = new HttpTest())
            {
                Identifier serverId = Guid.NewGuid();
                httpTest.RespondWithJson(new Server {Id = serverId});
                httpTest.RespondWith((int)HttpStatusCode.NoContent, "All gone!");
                httpTest.RespondWithJson(new Server { Id = serverId, Status = ServerStatus.Deleted});

                var server =_compute.GetServer(serverId);
                server.Delete();
                Assert.NotEqual(server.Status, ServerStatus.Deleted);

                server.WaitUntilDeleted();
                Assert.Equal(server.Status, ServerStatus.Deleted);
            }
        }
Ejemplo n.º 15
0
        public void WhenIPurgeANonExistingAsset_TheOperationShouldBeConsideredSuccessful()
        {
            using (var httpTest = new HttpTest())
            {
                httpTest.RespondWith((int)HttpStatusCode.NotFound, "Nothing to see here!");

                _cdnService.PurgeCachedAsset("service-id", "missing-asset");
            }
        }
Ejemplo n.º 16
0
        public void WhenIDeleteANonExistingService_TheOperationShouldBeConsideredSuccessful()
        {
            using (var httpTest = new HttpTest())
            {
                httpTest.RespondWith((int)HttpStatusCode.NotFound, "Nothing to see here!");

                _cdnService.DeleteService("bad-service-id");
            }
        }
Ejemplo n.º 17
0
        public void WaitForServiceDeleted()
        {
            using (var httpTest = new HttpTest())
            {
                httpTest.RespondWithJson(new Service { Status = ServiceStatus.DeleteInProgress });
                httpTest.RespondWith((int)HttpStatusCode.NotFound, "All gone!");

                _cdnService.WaitForServiceDeleted("service-id", TimeSpan.FromMilliseconds(1));
            }
        }
Ejemplo n.º 18
0
        public void GetConsoleOutput()
        {
            const string output = "FAKE CONSOLE OUTPUT\nANOTHER\nLAST LINE";
            using (var httpTest = new HttpTest())
            {
                Identifier serverId = Guid.NewGuid();
                httpTest.RespondWithJson(new Server { Id = serverId });
                httpTest.RespondWith(JObject.Parse("{'output': '" + output + "'}").ToString());

                var server = _compute.GetServer(serverId);
                var result = server.GetConsoleOutput();

                httpTest.ShouldHaveCalled($"*/servers/{serverId}/action");
                Assert.Contains("os-getConsoleOutput", httpTest.CallLog.Last().RequestBody);
                Assert.Equal(output, result);
            }
        }
Ejemplo n.º 19
0
        public void DeleteServerMetadata(HttpStatusCode responseCode)
        {
            using (var httpTest = new HttpTest())
            {
                Identifier serverId = Guid.NewGuid();
                const string key = "stuff";
                httpTest.RespondWithJson(new Server
                {
                    Id = serverId,
                    Metadata =
                    {
                        [key] = "things"
                    }
                });
                httpTest.RespondWith((int)responseCode, "All gone!");

                var server = _compute.GetServer(serverId);

                server.Metadata.Delete(key);
                Assert.False(server.Metadata.ContainsKey(key));
                httpTest.ShouldHaveCalled($"*/servers/{serverId}/metadata/{key}");
            }
        }
Ejemplo n.º 20
0
        public void CancelResizeServer()
        {
            using (var httpTest = new HttpTest())
            {
                Identifier flavorId = "1";
                Identifier serverId = Guid.NewGuid();
                httpTest.RespondWithJson(new Server { Id = serverId });
                httpTest.RespondWith((int)HttpStatusCode.Accepted, "Roger that, good buddy!");
                httpTest.RespondWith((int)HttpStatusCode.Accepted, "Roger that, good buddy!");

                var server = _compute.GetServer(serverId);
                server.Resize(flavorId);
                server.CancelResize();

                httpTest.ShouldHaveCalled($"*/servers/{serverId}/action");
                Assert.Contains("revertResize", httpTest.CallLog.Last().RequestBody);
            }
        }
Ejemplo n.º 21
0
        public void WhenDeleteNetwork_Returns404NotFound_ShouldConsiderRequestSuccessful()
        {
            using (var httpTest = new HttpTest())
            {
                Identifier networkId = Guid.NewGuid();
                httpTest.RespondWith((int)HttpStatusCode.NotFound, "Not here, boss...");

                _networkingService.DeleteNetwork(networkId);

                httpTest.ShouldHaveCalled("*/networks/" + networkId);
            }
        }
Ejemplo n.º 22
0
        public void DeleteFloatingIP(HttpStatusCode responseCode)
        {
            using (var httpTest = new HttpTest())
            {
                Identifier floatingIPId = Guid.NewGuid();
                httpTest.RespondWith((int)responseCode, "All gone!");

                _networking.DeleteFloatingIP(floatingIPId);

                httpTest.ShouldHaveCalled($"*/floatingips/{floatingIPId}");
            }
        }
Ejemplo n.º 23
0
        public void WaitForVolumeDeleted()
        {
            using (var httpTest = new HttpTest())
            {
                Identifier volumeId = Guid.NewGuid();
                httpTest.RespondWithJson(new Volume { Id = volumeId, Status = VolumeStatus.Available });
                httpTest.RespondWith((int)HttpStatusCode.Accepted, "All gone!");
                httpTest.RespondWithJson(new Volume { Id = volumeId, Status = VolumeStatus.Deleting });
                httpTest.RespondWith((int)HttpStatusCode.NotFound, "Not here, boss!");

                var result = _compute.GetVolume(volumeId);
                result.Delete();
                result.WaitUntilDeleted();
            }
        }
Ejemplo n.º 24
0
        public void DeleteVolume(HttpStatusCode responseCode)
        {
            using (var httpTest = new HttpTest())
            {
                Identifier volumeId = Guid.NewGuid();
                httpTest.RespondWithJson(new Volume { Id = volumeId });
                httpTest.RespondWith((int)responseCode, "All gone!");

                var volume = _compute.GetVolume(volumeId);

                volume.Delete();
                httpTest.ShouldHaveCalled($"*/os-volumes/{volumeId}");
            }
        }
Ejemplo n.º 25
0
        public void SnapshotServer()
        {
            using (var httpTest = new HttpTest())
            {
                Identifier serverId = Guid.NewGuid();
                Identifier imageId = Guid.NewGuid();
                httpTest.RespondWithJson(new Server { Id = serverId });
                httpTest.RespondWith((int)HttpStatusCode.Accepted, "Roger that, boss");
                httpTest.ResponseQueue.Last().Headers.Location = new Uri($"http://api.example.com/images/{imageId}");
                httpTest.RespondWithJson(new Image { Id = imageId });

                var server = _compute.GetServer(serverId);
                Image result = server.Snapshot(new SnapshotServerRequest("{image-name"));

                httpTest.ShouldHaveCalled($"*/servers/{serverId}/action");
                Assert.True(httpTest.CallLog.First(x => x.Url.EndsWith("/action")).RequestBody.Contains("createImage"));
                Assert.NotNull(result);
                Assert.Equal(imageId, result.Id);
            }
        }
Ejemplo n.º 26
0
        public void WaitForServerDeleted()
        {
            using (var httpTest = new HttpTest())
            {
                Identifier serverId = Guid.NewGuid();
                httpTest.RespondWithJson(new Server { Id = serverId, Status = ServerStatus.Active });
                httpTest.RespondWith((int)HttpStatusCode.NoContent, "All gone!");
                httpTest.RespondWithJson(new Server { Id = serverId, Status = ServerStatus.Deleted });

                var result = _compute.GetServer(serverId);
                result.Delete();
                result.WaitUntilDeleted();
                
                Assert.Equal(ServerStatus.Deleted, result.Status);
            }
        }
Ejemplo n.º 27
0
        public void DeleteVolumeSnapshot(HttpStatusCode responseCode)
        {
            using (var httpTest = new HttpTest())
            {
                Identifier snapshotId = Guid.NewGuid();
                httpTest.RespondWithJson(new VolumeSnapshot { Id = snapshotId });
                httpTest.RespondWith((int)responseCode, "All gone!");

                var snapshot = _compute.GetVolumeSnapshot(snapshotId);

                snapshot.Delete();
                httpTest.ShouldHaveCalled($"*/os-snapshots/{snapshotId}");
            }
        }
Ejemplo n.º 28
0
        public void DeleteNetwork()
        {
            using (var httpTest = new HttpTest())
            {
                Identifier networkId = Guid.NewGuid();
                httpTest.RespondWith((int)HttpStatusCode.NoContent, "All gone!");

                _networkingService.DeleteNetwork(networkId);

                httpTest.ShouldHaveCalled("*/networks/" + networkId);
            }
        }
Ejemplo n.º 29
0
        public void WaitForServerDeleted_Returns404NotFound_ShouldConsiderRequestSuccessful()
        {
            using (var httpTest = new HttpTest())
            {
                Identifier serverId = Guid.NewGuid();
                httpTest.RespondWithJson(new Server { Id = serverId, Status = ServerStatus.Active });
                httpTest.RespondWith((int)HttpStatusCode.NoContent, "All gone!");
                httpTest.RespondWith((int)HttpStatusCode.NotFound, "Nothing here, boss");

                var result = _compute.GetServer(serverId);
                result.Delete();
                result.WaitUntilDeleted();

                Assert.Equal(ServerStatus.Deleted, result.Status);
            }
        }