public void WhenGetBatchPoolNodeCountsCommandIsCalledWithCloudPoolOption_ShouldHonorPoolFilter()
        {
            // Setup cmdlet to list pools using an OData filter
            BatchAccountContext context = BatchTestHelpers.CreateBatchContextWithKeys();

            PSCloudPool fakeCloudPool = new PSCloudPool(BatchTestHelpers.CreateFakeBoundPool(context));

            cmdlet.BatchContext = context;
            cmdlet.Pool         = fakeCloudPool;

            string requestFilter = null;

            AzureOperationResponse <IPage <ProxyModels.PoolNodeCounts>, ProxyModels.AccountListPoolNodeCountsHeaders> fakeResponse =
                BatchTestHelpers.CreateGenericAzureOperationListResponse <ProxyModels.PoolNodeCounts, ProxyModels.AccountListPoolNodeCountsHeaders>();

            Action <BatchRequest <ProxyModels.AccountListPoolNodeCountsOptions, AzureOperationResponse <IPage <ProxyModels.PoolNodeCounts>, ProxyModels.AccountListPoolNodeCountsHeaders> > > requestAction =
                (request) =>
            {
                ProxyModels.AccountListPoolNodeCountsOptions options = request.Options;
                requestFilter = options.Filter;
            };

            RequestInterceptor requestInterceptor = BatchTestHelpers.CreateFakeServiceResponseInterceptor(
                responseToUse: fakeResponse, requestAction: requestAction);

            cmdlet.AdditionalBehaviors = new List <BatchClientBehavior>()
            {
                requestInterceptor
            };

            cmdlet.ExecuteCmdlet();

            Assert.Equal(requestFilter, $"(poolId eq '{fakeCloudPool.Id}')");
        }
        public void SetBatchPoolParametersTest()
        {
            // Setup cmdlet without the required parameters
            BatchAccountContext context = BatchTestHelpers.CreateBatchContextWithKeys();

            cmdlet.BatchContext = context;

            Assert.Throws <ArgumentNullException>(() => cmdlet.ExecuteCmdlet());

            cmdlet.Pool = new PSCloudPool(BatchTestHelpers.CreateFakeBoundPool(context));

            RequestInterceptor interceptor = BatchTestHelpers.CreateFakeServiceResponseInterceptor <CloudPoolUpdatePropertiesParameters, CloudPoolUpdatePropertiesResponse>();

            cmdlet.AdditionalBehaviors = new BatchClientBehavior[] { interceptor };

            // Verify that no exceptions occur
            cmdlet.ExecuteCmdlet();
        }
        public void SetBatchPoolParametersGetPassedToRequestTest()
        {
            BatchAccountContext context = BatchTestHelpers.CreateBatchContextWithKeys();

            cmdlet.BatchContext = context;

            cmdlet.Pool = new PSCloudPool(BatchTestHelpers.CreateFakeBoundPool(context));

            // Update the pool
            cmdlet.Pool.StartTask             = new PSStartTask("cmd /c echo start task");
            cmdlet.Pool.CertificateReferences = new List <PSCertificateReference>()
            {
                new PSCertificateReference()
                {
                    StoreLocation       = Azure.Batch.Common.CertStoreLocation.LocalMachine,
                    Thumbprint          = "thumbprint",
                    ThumbprintAlgorithm = "sha1",
                    StoreName           = "My",
                    Visibility          = Azure.Batch.Common.CertificateVisibility.StartTask
                }
            };
            cmdlet.Pool.ApplicationPackageReferences = new List <PSApplicationPackageReference>()
            {
                new PSApplicationPackageReference()
                {
                    ApplicationId = "myApp",
                    Version       = "1.0"
                }
            };
            cmdlet.Pool.Metadata = new List <PSMetadataItem>()
            {
                new PSMetadataItem("meta1", "value1")
            };

            PoolUpdatePropertiesParameter requestParameters = null;

            // Store the request parameters
            RequestInterceptor interceptor = BatchTestHelpers.CreateFakeServiceResponseInterceptor <
                PoolUpdatePropertiesParameter,
                PoolUpdatePropertiesOptions,
                AzureOperationHeaderResponse <PoolUpdatePropertiesHeaders> >(requestAction: (r) =>
            {
                requestParameters = r.Parameters;
            });

            cmdlet.AdditionalBehaviors = new List <BatchClientBehavior>()
            {
                interceptor
            };
            cmdlet.ExecuteCmdlet();

            // Verify the request parameters match the cmdlet parameters
            Assert.Equal(cmdlet.Pool.StartTask.CommandLine, requestParameters.StartTask.CommandLine);
            Assert.Equal(cmdlet.Pool.CertificateReferences.Count, requestParameters.CertificateReferences.Count);
            Assert.Equal(cmdlet.Pool.CertificateReferences[0].StoreName, requestParameters.CertificateReferences[0].StoreName);
            Assert.Equal(cmdlet.Pool.CertificateReferences[0].Thumbprint, requestParameters.CertificateReferences[0].Thumbprint);
            Assert.Equal(cmdlet.Pool.CertificateReferences[0].ThumbprintAlgorithm, requestParameters.CertificateReferences[0].ThumbprintAlgorithm);
            Assert.Equal(cmdlet.Pool.ApplicationPackageReferences.Count, requestParameters.ApplicationPackageReferences.Count);
            Assert.Equal(cmdlet.Pool.ApplicationPackageReferences[0].ApplicationId, requestParameters.ApplicationPackageReferences[0].ApplicationId);
            Assert.Equal(cmdlet.Pool.ApplicationPackageReferences[0].Version, requestParameters.ApplicationPackageReferences[0].Version);
            Assert.Equal(cmdlet.Pool.Metadata.Count, requestParameters.Metadata.Count);
            Assert.Equal(cmdlet.Pool.Metadata[0].Name, requestParameters.Metadata[0].Name);
            Assert.Equal(cmdlet.Pool.Metadata[0].Value, requestParameters.Metadata[0].Value);
        }