public RemoveDiagnosticSettingCommandTests(Xunit.Abstractions.ITestOutputHelper output)
        {
            ServiceManagemenet.Common.Models.XunitTracingInterceptor.AddToContext(new ServiceManagemenet.Common.Models.XunitTracingInterceptor(output));
            this.insightsDiagnosticsOperationsMock = new Mock <IDiagnosticSettingsOperations>();
            this.insightsManagementClientMock      = new Mock <MonitorManagementClient>();
            this.commandRuntimeMock = new Mock <ICommandRuntime>();
            this.cmdlet             = new RemoveAzureRmDiagnosticSettingCommand()
            {
                CommandRuntime          = commandRuntimeMock.Object,
                MonitorManagementClient = insightsManagementClientMock.Object
            };

            insightsDiagnosticsOperationsMock.Setup(f => f.DeleteWithHttpMessagesAsync(
                                                        It.IsAny <string>(),
                                                        It.IsAny <string>(),
                                                        It.IsAny <Dictionary <string, List <string> > >(),
                                                        It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(new Rest.Azure.AzureOperationResponse
            {
                RequestId = "111-222"
            }))
            .Callback((string resourceId, string settingName, Dictionary <string, List <string> > headers, CancellationToken t) =>
            {
                resourceIdIn     = resourceId;
                this.settingName = settingName;
            });

            insightsManagementClientMock.SetupGet(f => f.DiagnosticSettings).Returns(this.insightsDiagnosticsOperationsMock.Object);

            cmdlet.ResourceId = ResourceId;
        }
        public RemoveDiagnosticSettingCommandTests(Xunit.Abstractions.ITestOutputHelper output)
        {
            ServiceManagemenet.Common.Models.XunitTracingInterceptor.AddToContext(new ServiceManagemenet.Common.Models.XunitTracingInterceptor(output));
            this.insightsDiagnosticsOperationsMock = new Mock <IDiagnosticSettingsOperations>();
            this.insightsManagementClientMock      = new Mock <MonitorManagementClient>();
            this.commandRuntimeMock = new Mock <ICommandRuntime>();
            this.cmdlet             = new RemoveAzureRmDiagnosticSettingCommand()
            {
                CommandRuntime          = commandRuntimeMock.Object,
                MonitorManagementClient = insightsManagementClientMock.Object
            };

            var resource = new DiagnosticSettingsResource(name: "service")
            {
                EventHubName = "",
                EventHubAuthorizationRuleId = "",
                StorageAccountId            = "/subscriptions/123/resourcegroups/rg/providers/microsoft.storage/accounts/myaccount",
                WorkspaceId = "",
                Logs        = new List <LogSettings>
                {
                    new LogSettings
                    {
                        RetentionPolicy = new RetentionPolicy()
                        {
                            Days    = 10,
                            Enabled = true
                        },
                        Category = "TestCategory1",
                        Enabled  = true
                    },
                    new LogSettings
                    {
                        RetentionPolicy = new RetentionPolicy()
                        {
                            Days    = 5,
                            Enabled = false
                        },
                        Category = "TestCategory2",
                        Enabled  = false
                    }
                },
                Metrics = new List <MetricSettings>
                {
                    new MetricSettings
                    {
                        Category        = "MetricCat1",
                        RetentionPolicy = new RetentionPolicy()
                        {
                            Days    = 7,
                            Enabled = false
                        },
                        TimeGrain = TimeSpan.FromMinutes(1),
                        Enabled   = false
                    },
                    new MetricSettings
                    {
                        Category        = "MetricCat2",
                        RetentionPolicy = new RetentionPolicy()
                        {
                            Days    = 3,
                            Enabled = true
                        },
                        TimeGrain = TimeSpan.FromHours(1)
                    }
                }
            };

            response = new Microsoft.Rest.Azure.AzureOperationResponse <DiagnosticSettingsResource>()
            {
                RequestId = Guid.NewGuid().ToString(),
                Response  = new System.Net.Http.HttpResponseMessage
                {
                    StatusCode = System.Net.HttpStatusCode.OK
                },
                Body = resource
            };

            insightsDiagnosticsOperationsMock.Setup(f => f.DeleteWithHttpMessagesAsync(
                                                        It.IsAny <string>(),
                                                        It.IsAny <string>(),
                                                        It.IsAny <Dictionary <string, List <string> > >(),
                                                        It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(new Rest.Azure.AzureOperationResponse
            {
                RequestId = "111-222"
            }))
            .Callback((string resourceId, string settingName, Dictionary <string, List <string> > headers, CancellationToken t) =>
            {
                resourceIdIn     = resourceId;
                this.settingName = settingName;
            });

            insightsDiagnosticsOperationsMock.Setup(f => f.CreateOrUpdateWithHttpMessagesAsync(
                                                        It.IsAny <string>(),
                                                        It.IsAny <DiagnosticSettingsResource>(),
                                                        It.IsAny <string>(),
                                                        It.IsAny <Dictionary <string, List <string> > >(),
                                                        It.IsAny <CancellationToken>()))
            .Returns((string a, DiagnosticSettingsResource x, string name, Dictionary <string, List <string> > b, CancellationToken c) =>
            {
                calledSettings = new DiagnosticSettingsResource(name: name)
                {
                    EventHubAuthorizationRuleId = x.EventHubAuthorizationRuleId,
                    EventHubName     = x.EventHubName,
                    Logs             = x.Logs,
                    Metrics          = x.Metrics,
                    StorageAccountId = x.StorageAccountId,
                    WorkspaceId      = x.WorkspaceId
                };
                return(Task.FromResult(new Rest.Azure.AzureOperationResponse <DiagnosticSettingsResource>
                {
                    RequestId = Guid.NewGuid().ToString(),
                    Body = x,
                    Response = new System.Net.Http.HttpResponseMessage
                    {
                        StatusCode = System.Net.HttpStatusCode.OK
                    }
                }));
            });

            insightsDiagnosticsOperationsMock.Setup(f => f.GetWithHttpMessagesAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Dictionary <string, List <string> > >(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult <Microsoft.Rest.Azure.AzureOperationResponse <DiagnosticSettingsResource> >(response))
            .Callback((string resourceId, string name, Dictionary <string, List <string> > headers, CancellationToken cancellationToken) =>
            {
                resourceIdIn     = resourceId;
                this.settingName = name;
            });

            multipleResponse = new Microsoft.Rest.Azure.AzureOperationResponse <DiagnosticSettingsResourceCollection>()
            {
                Body = new DiagnosticSettingsResourceCollection(
                    value: new List <DiagnosticSettingsResource>()
                {
                    resource
                })
            };

            insightsDiagnosticsOperationsMock.Setup(f => f.ListWithHttpMessagesAsync(It.IsAny <string>(), It.IsAny <Dictionary <string, List <string> > >(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(multipleResponse))
            .Callback((string resourceId, Dictionary <string, List <string> > headers, CancellationToken cancellationToken) =>
            {
                resourceIdIn     = resourceId;
                this.settingName = "service";
            });

            insightsManagementClientMock.SetupGet(f => f.DiagnosticSettings).Returns(this.insightsDiagnosticsOperationsMock.Object);

            cmdlet.ResourceId = ResourceId;

            // Setup Confirmation
            commandRuntimeMock.Setup(f => f.ShouldProcess(It.IsAny <string>())).Returns(true);
            commandRuntimeMock.Setup(f => f.ShouldProcess(It.IsAny <string>(), It.IsAny <string>())).Returns(true);
            commandRuntimeMock.Setup(f => f.ShouldProcess(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(true);
            commandRuntimeMock.Setup(f => f.ShouldContinue(It.IsAny <string>(), It.IsAny <string>())).Returns(true);
        }