public override void ExecuteCmdlet() { CollectionUpdateDetails details = null; OperationResultWithTrackingId response = null; Collection collection = null; collection = FindCollection(CollectionName); if (collection == null) { return; } details = new CollectionUpdateDetails() { TemplateImageName = ImageName, WaitBeforeShutdownInMinutes = ForceLogoffWhenUpdateComplete ? -1 : 0, SubnetName = string.IsNullOrEmpty(SubnetName) ? null : SubnetName }; if (ShouldProcess(CollectionName, Commands_RemoteApp.UpdateCollection)) { response = CallClient(() => Client.Collections.Set(CollectionName, true, false, details), Client.Collections); } if (response != null) { WriteTrackingId(response); } }
public void SetInactiveCollectionAdConfigTest() { SetAzureRemoteAppCollection mockCmdlet = SetUpTestCommon <SetAzureRemoteAppCollection>(); string collectionName = "mycol"; System.Security.SecureString password = new System.Security.SecureString(); string expectedTrackingId = "fasdfsadfsdf"; CollectionUpdateDetails requestData = null; string userName = @"MyDomain\Administrator"; Collection expectedCollection = null; // Required parameters for this test mockCmdlet.CollectionName = collectionName; password.AppendChar('f'); mockCmdlet.Credential = new PSCredential(userName, password); requestData = new CollectionUpdateDetails() { AdInfo = new ActiveDirectoryConfig() { UserName = userName, Password = "******" } }; expectedCollection = new Collection() { Name = collectionName, Status = "Inactive", AdInfo = new ActiveDirectoryConfig() }; PerformCollectionTestWithAdInfoHelper(mockCmdlet, collectionName, expectedCollection, expectedTrackingId, requestData, true); }
private void PerfomrCollectionTestHelper( RdsCmdlet mockCmdlet, string collectionName, Collection expectedCollection, String trackingId, CollectionUpdateDetails reqestData, bool forceRedeploy) { ISetup <IRemoteAppManagementClient, Task <CollectionResult> > setupGet = null; ISetup <IRemoteAppManagementClient, Task <OperationResultWithTrackingId> > setupSetApi = null; MockCommandRuntime cmdRuntime = null; IEnumerable <TrackingResult> trackingIds = null; // Setup the environment for testing this cmdlet setupGet = remoteAppManagementClientMock.Setup(c => c.Collections.GetAsync(collectionName, It.IsAny <CancellationToken>())); setupGet.Returns(Task.Factory.StartNew( () => new CollectionResult() { Collection = expectedCollection, StatusCode = System.Net.HttpStatusCode.OK })); setupSetApi = remoteAppManagementClientMock.Setup( c => c.Collections.SetAsync( collectionName, forceRedeploy, false, It.Is <CollectionUpdateDetails>(col => col.CustomRdpProperty == reqestData.CustomRdpProperty && col.Description == reqestData.Description && col.PlanName == reqestData.PlanName && col.TemplateImageName == reqestData.TemplateImageName && col.AdInfo == null), It.IsAny <CancellationToken>())); setupSetApi.Returns(Task.Factory.StartNew(() => new OperationResultWithTrackingId() { TrackingId = trackingId })); mockCmdlet.ResetPipelines(); mockCmdlet.ExecuteCmdlet(); cmdRuntime = mockCmdlet.runTime(); if (cmdRuntime.ErrorStream.Count > 0) { Assert.True(cmdRuntime.ErrorStream.Count == 0, String.Format("Set-AzureRemoteAppCollection returned the following error {0}", mockCmdlet.runTime().ErrorStream[0].Exception.Message)); } trackingIds = LanguagePrimitives.GetEnumerable(mockCmdlet.runTime().OutputPipeline).Cast <TrackingResult>(); Assert.NotNull(trackingIds); Assert.Equal(1, trackingIds.Count()); Assert.True(trackingIds.Any(t => t.TrackingId == trackingId), "The actual result does not match the expected."); }
public void SetCollectionPlanTest() { SetAzureRemoteAppCollection mockCmdlet = SetUpTestCommon <SetAzureRemoteAppCollection>(); string collectionName = "mycol"; string expectedTrackingId = "2432145"; CollectionUpdateDetails requestData = null; Collection expectedCollection = null; // Required parameters for this test mockCmdlet.CollectionName = collectionName; mockCmdlet.Plan = billingPlan; requestData = new CollectionUpdateDetails() { PlanName = mockCmdlet.Plan, AdInfo = null }; expectedCollection = new Collection() { Name = collectionName, Status = "Active" }; PerfomrCollectionTestHelper(mockCmdlet, collectionName, expectedCollection, expectedTrackingId, requestData, false); }
public void PatchCollectionTest() { UpdateAzureRemoteAppCollection mockCmdlet = SetUpTestCommon <UpdateAzureRemoteAppCollection>(); string collectionName = "mycol"; string expectedTrackingId = "2432145"; String imageName = "my template image"; CollectionUpdateDetails requestData = null; Collection expectedCollection = null; // Required parameters for this test mockCmdlet.CollectionName = collectionName; mockCmdlet.ImageName = imageName; requestData = new CollectionUpdateDetails() { TemplateImageName = mockCmdlet.ImageName }; expectedCollection = new Collection() { Name = collectionName, Status = "Active" }; PerfomrCollectionTestHelper(mockCmdlet, collectionName, expectedCollection, expectedTrackingId, requestData, true); }
public void SetCollectionDescriptionTest() { SetAzureRemoteAppCollection mockCmdlet = SetUpTestCommon <SetAzureRemoteAppCollection>(); string collectionName = "mycol"; string expectedTrackingId = "213145"; CollectionUpdateDetails requestData = null; Collection expectedCollection = null; // Required parameters for this test mockCmdlet.CollectionName = collectionName; mockCmdlet.Description = "This is my test collection"; requestData = new CollectionUpdateDetails() { Description = mockCmdlet.Description }; expectedCollection = new Collection() { Name = collectionName, Status = "Active" }; PerfomrCollectionTestHelper(mockCmdlet, collectionName, expectedCollection, expectedTrackingId, requestData, false); }
public void SetCollectionCustomRdpPropertyTest() { SetAzureRemoteAppCollection mockCmdlet = SetUpTestCommon <SetAzureRemoteAppCollection>(); string collectionName = "mycol"; string expectedTrackingId = "fdadffdas"; CollectionUpdateDetails requestData = null; Collection expectedCollection = null; // Required parameters for this test mockCmdlet.CollectionName = collectionName; mockCmdlet.CustomRdpProperty = "some:value:*"; requestData = new CollectionUpdateDetails() { CustomRdpProperty = mockCmdlet.CustomRdpProperty }; expectedCollection = new Collection() { Name = collectionName, Status = "Active" }; PerfomrCollectionTestHelper(mockCmdlet, collectionName, expectedCollection, expectedTrackingId, requestData, false); }
public override void ExecuteCmdlet() { NetworkCredential creds = null; CollectionUpdateDetails details = null; OperationResultWithTrackingId response = null; Collection collection = null; bool forceRedeploy = false; collection = FindCollection(CollectionName); if (collection == null) { return; } details = new CollectionUpdateDetails(); if (Credential != null) { if (collection.AdInfo == null) { ErrorRecord er = RemoteAppCollectionErrorState.CreateErrorRecordFromString( Commands_RemoteApp.AadInfoCanNotBeAddedToCloudOnlyCollectionMessage, String.Empty, Client.Collections, ErrorCategory.InvalidArgument); ThrowTerminatingError(er); } details.AdInfo = new ActiveDirectoryConfig(); creds = Credential.GetNetworkCredential(); details.AdInfo.UserName = Credential.UserName; details.AdInfo.Password = creds.Password; details.AdInfo.DomainName = collection.AdInfo.DomainName; details.AdInfo.OrganizationalUnit = collection.AdInfo.OrganizationalUnit; if (String.Equals("Inactive", collection.Status, StringComparison.OrdinalIgnoreCase)) { // the collection may have failed due to bad domain join information before, // re-trying with the new information forceRedeploy = true; } } else if (Plan != null) { details.PlanName = Plan; } else if (Description != null) { details.Description = Description; } else if (CustomRdpProperty != null) { details.CustomRdpProperty = CustomRdpProperty; } else { ErrorRecord er = RemoteAppCollectionErrorState.CreateErrorRecordFromString( "At least one parameter must be set with this cmdlet", String.Empty, Client.Collections, ErrorCategory.InvalidArgument); ThrowTerminatingError(er); } response = CallClient(() => Client.Collections.Set(CollectionName, forceRedeploy, false, details), Client.Collections); if (response != null) { WriteTrackingId(response); } }
/// <summary> /// Sets a new information to the collection with given id. /// </summary> /// <param name='operations'> /// Reference to the /// Microsoft.WindowsAzure.Management.RemoteApp.ICollectionOperations. /// </param> /// <param name='collectionName'> /// Required. The name of the collection. /// </param> /// <param name='forceRedeploy'> /// Required. A flag denoting if the request is to re-deploy the /// collection after it is updated. /// </param> /// <param name='populateOnly'> /// Required. A flag denoting if the request is to populate the /// collection details(true for populate only). /// </param> /// <param name='collectionDetails'> /// Required. Details for the collection to be updated. /// </param> /// <returns> /// The response containing the operation tracking id. /// </returns> public static Task <OperationResultWithTrackingId> SetAsync(this ICollectionOperations operations, string collectionName, bool forceRedeploy, bool populateOnly, CollectionUpdateDetails collectionDetails) { return(operations.SetAsync(collectionName, forceRedeploy, populateOnly, collectionDetails, CancellationToken.None)); }
/// <summary> /// Sets a new information to the collection with given id. /// </summary> /// <param name='operations'> /// Reference to the /// Microsoft.WindowsAzure.Management.RemoteApp.ICollectionOperations. /// </param> /// <param name='collectionName'> /// Required. The name of the collection. /// </param> /// <param name='forceRedeploy'> /// Required. A flag denoting if the request is to re-deploy the /// collection after it is updated. /// </param> /// <param name='populateOnly'> /// Required. A flag denoting if the request is to populate the /// collection details(true for populate only). /// </param> /// <param name='collectionDetails'> /// Required. Details for the collection to be updated. /// </param> /// <returns> /// The response containing the operation tracking id. /// </returns> public static OperationResultWithTrackingId Set(this ICollectionOperations operations, string collectionName, bool forceRedeploy, bool populateOnly, CollectionUpdateDetails collectionDetails) { return(Task.Factory.StartNew((object s) => { return ((ICollectionOperations)s).SetAsync(collectionName, forceRedeploy, populateOnly, collectionDetails); } , operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult()); }