public void GetBatchComputeNodeTest()
        {
            // Setup cmdlet to get a compute node by id
            BatchAccountContext context = BatchTestHelpers.CreateBatchContextWithKeys();

            cmdlet.BatchContext = context;
            cmdlet.PoolId       = "pool";
            cmdlet.Id           = "computeNode1";
            cmdlet.Filter       = null;

            // Build a compute node instead of querying the service on a Get ComputeNode call
            ComputeNodeGetResponse response    = BatchTestHelpers.CreateComputeNodeGetResponse(cmdlet.Id);
            RequestInterceptor     interceptor = BatchTestHelpers.CreateNoOpInterceptor <ComputeNodeGetParameters, ComputeNodeGetResponse>(response);

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

            // Setup the cmdlet to write pipeline output to a list that can be examined later
            List <PSComputeNode> pipeline = new List <PSComputeNode>();

            commandRuntimeMock.Setup(r => r.WriteObject(It.IsAny <PSComputeNode>())).Callback <object>(c => pipeline.Add((PSComputeNode)c));

            cmdlet.ExecuteCmdlet();

            // Verify that the cmdlet wrote the compute node returned from the OM to the pipeline
            Assert.Equal(1, pipeline.Count);
            Assert.Equal(cmdlet.Id, pipeline[0].Id);
        }
        public void WhenStartBatchComputeNodeServiceLogUploadCommandIsCalledWithComputeNode_ShouldSucceed()
        {
            // First get a fake tvm
            BatchAccountContext context = BatchTestHelpers.CreateBatchContextWithKeys();

            getComputeNodeCommand.BatchContext = context;
            getComputeNodeCommand.PoolId       = "Pool1";
            getComputeNodeCommand.Id           = null;
            getComputeNodeCommand.Filter       = null;

            AzureOperationResponse <IPage <ProxyModels.ComputeNode>, ProxyModels.ComputeNodeListHeaders> response1 =
                BatchTestHelpers.CreateComputeNodeListResponse(new[] { "tvm1" });

            RequestInterceptor interceptor1 = BatchTestHelpers.CreateFakeServiceResponseInterceptor <
                ProxyModels.ComputeNodeListOptions,
                AzureOperationResponse <IPage <ProxyModels.ComputeNode>, ProxyModels.ComputeNodeListHeaders> >(response1);

            var computeNodes = new List <PSComputeNode>();

            commandRuntimeMock.Setup(r => r.WriteObject(It.IsAny <PSComputeNode>()))
            .Callback <object>(c => computeNodes.Add((PSComputeNode)c));

            getComputeNodeCommand.AdditionalBehaviors = new List <BatchClientBehavior>()
            {
                interceptor1
            };

            getComputeNodeCommand.ExecuteCmdlet();

            // test StartBatchComputeNodeServiceLogUploadCommand
            startComputeNodeServiceLogUploadCommand.BatchContext = context;
            startComputeNodeServiceLogUploadCommand.ComputeNode  = computeNodes[0];
            startComputeNodeServiceLogUploadCommand.ContainerUrl = fakeUrl;

            var utcNow = DateTime.UtcNow;

            startComputeNodeServiceLogUploadCommand.StartTime = utcNow.AddDays(-1);
            startComputeNodeServiceLogUploadCommand.EndTime   = utcNow;

            const int    numberOfFilesUploaded = 2;
            const string virtualDirectoryName  = "pool1/tvm";

            AzureOperationResponse <ProxyModels.UploadBatchServiceLogsResult, ProxyModels.ComputeNodeUploadBatchServiceLogsHeaders> response2 =
                BatchTestHelpers.CreateComputeNodeServiceLogsAddResponse(numberOfFilesUploaded, virtualDirectoryName);

            RequestInterceptor interceptor2 = BatchTestHelpers.CreateFakeServiceResponseInterceptor <
                ProxyModels.ComputeNodeUploadBatchServiceLogsOptions,
                AzureOperationResponse <ProxyModels.UploadBatchServiceLogsResult, ProxyModels.ComputeNodeUploadBatchServiceLogsHeaders> >(response2);

            startComputeNodeServiceLogUploadCommand.AdditionalBehaviors = new List <BatchClientBehavior>()
            {
                interceptor2
            };

            // Setup the cmdlet to write pipeline output to a list that can be examined later
            PSStartComputeNodeServiceLogUploadResult result = null;

            commandRuntimeMock.Setup(r => r.WriteObject(It.IsAny <PSStartComputeNodeServiceLogUploadResult>())).Callback <object>(c => result = (PSStartComputeNodeServiceLogUploadResult)c);

            startComputeNodeServiceLogUploadCommand.ExecuteCmdlet();

            Assert.NotNull(result);
            Assert.Equal(result.NumberOfFilesUploaded, numberOfFilesUploaded);
            Assert.Equal(result.VirtualDirectoryName, virtualDirectoryName);
        }