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."); } } } }
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); }