A PowerShell wrapper class on top of the Pipeline type.
        public void CanGetPipeline()
        {
            // Arrange
            PSPipeline expected = new PSPipeline()
            {
                PipelineName = pipelineName,
                DataFactoryName = DataFactoryName,
                ResourceGroupName = ResourceGroupName
            };

            dataFactoriesClientMock
                .Setup(
                    c =>
                        c.FilterPSPipelines(
                            It.Is<PipelineFilterOptions>(
                                options =>
                                    options.ResourceGroupName == ResourceGroupName &&
                                    options.DataFactoryName == DataFactoryName &&
                                    options.Name == pipelineName)))
                .CallBase()
                .Verifiable();

            dataFactoriesClientMock
                .Setup(c => c.GetPipeline(ResourceGroupName, DataFactoryName, pipelineName))
                .Returns(expected)
                .Verifiable();

            // Action
            cmdlet.Name = pipelineName;
            cmdlet.ExecuteCmdlet();

            // Assert
            dataFactoriesClientMock.VerifyAll();

            commandRuntimeMock.Verify(f => f.WriteObject(expected), Times.Once());
        }
        public virtual PSPipeline CreatePSPipeline(CreatePSPipelineParameters parameters)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException("parameters");
            }

            PSPipeline pipeline = null;
            Action createPipeline = () =>
            {
                pipeline =
                    new PSPipeline(CreateOrUpdatePipeline(parameters.ResourceGroupName,
                        parameters.DataFactoryName,
                        parameters.Name,
                        parameters.RawJsonContent))
                    {
                        ResourceGroupName = parameters.ResourceGroupName,
                        DataFactoryName = parameters.DataFactoryName
                    };

                if (!DataFactoryCommonUtilities.IsSucceededProvisioningState(pipeline.ProvisioningState))
                {
                    string errorMessage = pipeline.Properties == null
                        ? string.Empty
                        : pipeline.Properties.ErrorMessage;
                    throw new ProvisioningFailedException(errorMessage);
                }
            };

            if (parameters.Force)
            {
                // If user decides to overwrite anyway, then there is no need to check if the linked service exists or not.
                createPipeline();
            }
            else
            {
                bool pipelineExists = CheckPipelineExists(parameters.ResourceGroupName,
                    parameters.DataFactoryName, parameters.Name);

                parameters.ConfirmAction(
                        !pipelineExists,  // prompt only if the linked service exists
                        string.Format(
                            CultureInfo.InvariantCulture,
                            Resources.PipelineExists,
                            parameters.Name,
                            parameters.DataFactoryName),
                        string.Format(
                            CultureInfo.InvariantCulture,
                            Resources.PipelineCreating,
                            parameters.Name,
                            parameters.DataFactoryName),
                        parameters.Name,
                        createPipeline);
            }

            return pipeline;
        }