Esempio n. 1
0
        public void CanResetVpnSharedKey()
        {
            using (UndoContext context = UndoContext.Current)
            {
                context.Start();
                HttpRecorderMode          mode = HttpMockServer.GetCurrentMode();
                RemoteAppManagementClient remoteAppManagementClient = GetRemoteAppManagementClient();

                Assert.DoesNotThrow(() =>
                {
                    string vNet = "hkutvnet1";

                    // lets remember the vpn shared key before the reset request
                    VNetResult vnetBefore = remoteAppManagementClient.VNet.Get(vNet, true);

                    Assert.Equal(HttpStatusCode.OK, vnetBefore.StatusCode);
                    Assert.NotNull(vnetBefore.VNet);
                    Assert.Equal(vNet, vnetBefore.VNet.Name);
                    Assert.NotNull(vnetBefore.VNet.SharedKey);

                    // now reset the key
                    OperationResultWithTrackingId result = remoteAppManagementClient.VNet.ResetVpnSharedKey(vNet);

                    Assert.NotNull(result);
                    Assert.InRange(result.StatusCode, HttpStatusCode.OK, HttpStatusCode.Accepted);
                    if (result.StatusCode == HttpStatusCode.Accepted)
                    {
                        Assert.NotNull(result.TrackingId);
                        TrackingId = result.TrackingId;
                    }

                    VNetOperationStatusResult vnetOperationResult = remoteAppManagementClient.VNet.GetResetVpnSharedKeyOperationStatus(TrackingId);

                    Assert.NotNull(vnetOperationResult);
                    Assert.Equal(HttpStatusCode.OK, vnetOperationResult.StatusCode);

                    // lets check if the key is actually reset
                    VNetResult vnetAfter = remoteAppManagementClient.VNet.Get(vNet, true);

                    Assert.Equal(HttpStatusCode.OK, vnetAfter.StatusCode);
                    Assert.NotNull(vnetAfter.VNet);
                    Assert.Equal(vNet, vnetAfter.VNet.Name);
                    Assert.NotNull(vnetAfter.VNet.SharedKey);

                    // make sure that the key before and after does not match
                    Assert.NotEqual(vnetBefore.VNet.SharedKey, vnetAfter.VNet.SharedKey);
                });
            }
        }
        public override void ExecuteCmdlet()
        {
            OperationResultWithTrackingId response = null;
            string description = Commands_RemoteApp.VnetSharedKeyResetConfirmationDescription;
            string warning     = Commands_RemoteApp.GenericAreYouSureQuestion;
            string caption     = Commands_RemoteApp.VnetSharedKeyResetCaptionMessage;

            if (ShouldProcess(description, warning, caption))
            {
                response = CallClient(() => Client.VNet.ResetVpnSharedKey(VNetName), Client.VNet);
            }

            if (response != null)
            {
                VNetOperationStatusResult operationStatus = null;
                int maxRetries = 600; // 5 minutes?
                // wait for the reset key operation to succeed to get the new key
                do
                {
                    System.Threading.Thread.Sleep(5000); //wait a while before the next check
                    operationStatus = CallClient(() => Client.VNet.GetResetVpnSharedKeyOperationStatus(response.TrackingId), Client.VNet);
                }while (operationStatus.Status != VNetOperationStatus.Failed &&
                        operationStatus.Status != VNetOperationStatus.Success &&
                        --maxRetries > 0);

                if (operationStatus.Status == VNetOperationStatus.Success)
                {
                    VNetResult vnet = CallClient(() => Client.VNet.Get(VNetName, true), Client.VNet);
                    WriteObject(vnet.VNet);

                    WriteVerboseWithTimestamp("The request completed successfully.");
                }
                else
                {
                    if (maxRetries > 0)
                    {
                        WriteErrorWithTimestamp("The request failed.");
                    }
                    else
                    {
                        WriteErrorWithTimestamp("The request took a long time to complete.");
                    }
                }
            }
        }
Esempio n. 3
0
        public static int SetUpDefaultResetVpnSharedKey(Mock <IRemoteAppManagementClient> clientMock, string trackingId)
        {
            ISetup <IRemoteAppManagementClient, Task <VNetOperationStatusResult> > setup = null;
            VNetOperationStatusResult response = new VNetOperationStatusResult()
            {
                StatusCode = System.Net.HttpStatusCode.Accepted,
                RequestId  = "6233-2222-4444",
                Status     = VNetOperationStatus.Success
            };

            mockVNetStatusList = new List <VNetOperationStatus>();
            mockVNetStatusList.Add(response.Status);

            setup = clientMock.Setup(c => c.VNet.GetResetVpnSharedKeyOperationStatusAsync(trackingId, It.IsAny <CancellationToken>()));
            setup.Returns(Task.Factory.StartNew(() => response));

            return(mockVNetStatusList.Count);
        }