private void UploadVhd(TemplateImage image)
        {
            UploadScriptResult response = null;
            Collection<PSObject> scriptResult = null;
            string command = null;

            task.SetStatus(Commands_RemoteApp.TemplateImageUploadingStatusMessage);
            response = CallClient_ThrowOnError(() => Client.TemplateImages.GetUploadScript());

            if (response != null && response.Script != null)
            {
                string uploadFilePath = string.Concat(Environment.GetEnvironmentVariable("temp"), "\\uploadScript.ps1");
                try
                {
                    File.WriteAllText(uploadFilePath, response.Script);
                }
                catch (Exception ex)
                {
                    task.SetState(JobState.Failed, new Exception(string.Format(Commands_RemoteApp.FailedToWriteToFileErrorFormat, uploadFilePath, ex.Message)));
                    return;
                }

                command = String.Format("{0} -Uri \"{1}\" -Sas \"{2}\" -VhdPath \"{3}\"", uploadFilePath, image.Uri, image.Sas, Path);

                scriptResult = CallPowershell(command);
            }
        }
        public static bool ContainsExpectedTemplate(List<TemplateImage> expectedResult, TemplateImage operationResult)
        {
            bool isIdentical = false;
            foreach (TemplateImage expected in expectedResult)
            {
                isIdentical = expected.Name == operationResult.Name;
                isIdentical &= expected.Status == operationResult.Status;
                isIdentical &= expected.Id == operationResult.Id;
                isIdentical &= expected.NumberOfLinkedCollections == operationResult.NumberOfLinkedCollections;
                isIdentical &= expected.Type == operationResult.Type;
                if (isIdentical)
                {
                    break;
                }
            }

            return isIdentical;
        }
        private TemplateImage StartTemplateUpload(TemplateImage image)
        {
            TemplateImageResult response = null;
            TemplateImageDetails details = null;
            TemplateImage templateImage = null;

            EnsureStorageInRegion(Location);

            if (Resume)
            {
                templateImage = image;
            }
            else
            {
                details = new TemplateImageDetails()
                {
                    Name = ImageName,
                    Region = Location
                };

                response = CallClient_ThrowOnError(() => Client.TemplateImages.Set(details));

                templateImage = response.TemplateImage;
                if (templateImage == null)
                {
                    throw new RemoteAppServiceException(String.Format(
                        System.Globalization.CultureInfo.InvariantCulture,
                        Commands_RemoteApp.TemplateImageCreationFailedErrorFormat,
                        ImageName,
                        Location)
                        , ErrorCategory.InvalidResult);
                }
            }

            return templateImage;
        }
        public static int SetUpDefaultRemoteAppTemplates(Mock<IRemoteAppManagementClient> clientMock, string imageName, string id)
        {
            TemplateImageListResult response = new TemplateImageListResult()
            {
                RequestId = "122-13342",
                StatusCode = System.Net.HttpStatusCode.Accepted,
            };

            response.RemoteAppTemplateImageList = new List<TemplateImage>()
            {
                new TemplateImage()
                {
                    Name = imageName,
                    Status = TemplateImageStatus.Ready,
                    Id = id,
                    NumberOfLinkedCollections = 2,
                    Type = TemplateImageType.PlatformImage,
                    RegionList = new List<string>(){
                        "West US"
                    }
                },

                new TemplateImage()
                {
                    Name = "a",
                    Status = TemplateImageStatus.Ready,
                    Id = "2222",
                    NumberOfLinkedCollections = 2,
                    Type = TemplateImageType.PlatformImage,
                    RegionList = new List<string>(){
                        "West US"
                    }
                },

                new TemplateImage()
                {
                    Name = "ztestImage",
                    Status = TemplateImageStatus.Ready,
                    Id = "4444",
                    NumberOfLinkedCollections = 2,
                    Type = TemplateImageType.CustomerImage,
                    RegionList = new List<string>(){
                        "West US"
                    }
                },

                new TemplateImage()
                {
                    Name = "atestImage",
                    Status = TemplateImageStatus.Ready,
                    Id = "3333",
                    NumberOfLinkedCollections = 1,
                    Type = TemplateImageType.CustomerImage,
                    RegionList = new List<string>(){
                        "West US"
                    }
                }
            };

            mockTemplates = new List<TemplateImage>();
            foreach (TemplateImage image in response.RemoteAppTemplateImageList)
            {
                TemplateImage mockImage = new TemplateImage()
                {
                    Name = image.Name,
                    Status = image.Status,
                    Id = image.Id,
                    NumberOfLinkedCollections = image.NumberOfLinkedCollections,
                    Type = image.Type,
                    RegionList = image.RegionList
                };
                mockTemplates.Add(mockImage);
            }

            ISetup<IRemoteAppManagementClient, Task<TemplateImageListResult>> Setup = clientMock.Setup(c => c.TemplateImages.ListAsync(It.IsAny<CancellationToken>()));
            Setup.Returns(Task.Factory.StartNew(() => response));

            return mockTemplates.Count;
        }