public async Task UpdateWebHookWithNullSetsToDefault() { MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); string hookName = Recording.GenerateAlphaNumericId("hook"); var hookToCreate = new WebNotificationHook(hookName, new Uri("https://fakeuri.com/")) { Username = "******", Password = "******", // https://github.com/Azure/azure-sdk-for-net/issues/17485 //CertificateKey = "certKey", CertificatePassword = "******" }; await using var disposableHook = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate); var hookToUpdate = disposableHook.Hook as WebNotificationHook; hookToUpdate.Username = null; hookToUpdate.Password = null; hookToUpdate.CertificateKey = null; hookToUpdate.CertificatePassword = null; var updatedHook = (await adminClient.UpdateHookAsync(hookToUpdate)).Value as WebNotificationHook; var expectedPassword = (Recording.Mode == RecordedTestMode.Playback) ? "Sanitized" : string.Empty; var expectedCertPassword = (Recording.Mode == RecordedTestMode.Playback) ? "Sanitized" : string.Empty; Assert.That(updatedHook.Username, Is.Empty); Assert.That(updatedHook.Password, Is.EqualTo(expectedPassword)); Assert.That(updatedHook.CertificateKey, Is.Empty); Assert.That(updatedHook.CertificatePassword, Is.EqualTo(expectedCertPassword)); }
public async Task UpdateWebNotificationHookWithEveryMemberAndNewInstance() { // Create a hook. MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); string hookName = Recording.GenerateAlphaNumericId("hook"); var endpoint = "http://contoso.com"; var description = "This hook was created to test the .NET client."; var headers = new Dictionary <string, string>() { { "key1", "value1" }, { "key2", "value2" } }; var hookToCreate = new WebNotificationHook() { Name = hookName, Endpoint = endpoint }; await using var disposableHook = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate); // Update the created hook. var hookToUpdate = new WebNotificationHook() { Endpoint = endpoint, Description = description, ExternalLink = "http://fake.endpoint.com", // TODO: add certificate key validation (https://github.com/Azure/azure-sdk-for-net/issues/17485) CertificatePassword = "******", Username = "******", Password = "******" }; foreach (var header in headers) { hookToUpdate.Headers.Add(header); } await adminClient.UpdateHookAsync(disposableHook.Id, hookToUpdate); // Get the hook and check if updates are in place. var updatedWebHook = (await adminClient.GetHookAsync(disposableHook.Id)).Value as WebNotificationHook; Assert.That(updatedWebHook.Id, Is.EqualTo(disposableHook.Id)); Assert.That(updatedWebHook.Name, Is.EqualTo(hookName)); Assert.That(updatedWebHook.Description, Is.EqualTo(description)); Assert.That(updatedWebHook.ExternalLink, Is.EqualTo("http://fake.endpoint.com")); Assert.That(updatedWebHook.Administrators, Is.Not.Null); Assert.That(updatedWebHook.Administrators.Single(), Is.Not.Null.And.Not.Empty); Assert.That(updatedWebHook.Endpoint, Is.EqualTo(endpoint)); // TODO: add certificate key validation (https://github.com/Azure/azure-sdk-for-net/issues/17485) Assert.That(updatedWebHook.CertificatePassword, Is.EqualTo("certPassword")); Assert.That(updatedWebHook.Username, Is.EqualTo("fakeUsername")); Assert.That(updatedWebHook.Password, Is.EqualTo("fakePassword")); Assert.That(updatedWebHook.Headers, Is.EquivalentTo(headers)); }
public async Task UpdateCommonMembersWithNullSetsToDefault(string hookKind) { // https://github.com/Azure/azure-sdk-for-net/issues/21504 if (hookKind == nameof(NotificationHookKind.Webhook)) { Assert.Ignore(); } MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); string hookName = Recording.GenerateAlphaNumericId("hook"); NotificationHook hookToCreate = CreateMockNotificationHook(hookKind, hookName); hookToCreate.Description = "description"; hookToCreate.ExternalUri = new Uri("https://fakeuri.com"); await using var disposableHook = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate); NotificationHook hookToUpdate = disposableHook.Hook; hookToUpdate.Description = null; hookToUpdate.ExternalUri = null; NotificationHook updatedHook = await adminClient.UpdateHookAsync(hookToUpdate); Assert.That(updatedHook.Description, Is.Empty); Assert.That(updatedHook.ExternalUri, Is.Null); }
public async Task CreateAndGetEmailNotificationHookWithMinimumSetup() { MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); string hookName = Recording.GenerateAlphaNumericId("hook"); var emailsToAlert = new List <string>() { "*****@*****.**", "*****@*****.**" }; var hookToCreate = new EmailNotificationHook(hookName, emailsToAlert); await using var disposableHook = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate); NotificationHook createdHook = await adminClient.GetHookAsync(disposableHook.Id); Assert.That(createdHook.Id, Is.EqualTo(disposableHook.Id)); Assert.That(createdHook.Name, Is.EqualTo(hookName)); Assert.That(createdHook.Description, Is.Empty); Assert.That(createdHook.ExternalLink, Is.Empty); Assert.That(createdHook.Administrators, Is.Not.Null); Assert.That(createdHook.Administrators.Single(), Is.Not.Null.And.Not.Empty); var createdEmailHook = createdHook as EmailNotificationHook; Assert.That(createdEmailHook, Is.Not.Null); Assert.That(createdEmailHook.EmailsToAlert, Is.EquivalentTo(emailsToAlert)); }
public async Task CreateAndGetEmailNotificationHookWithMinimumSetup(bool useTokenCredential) { MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(useTokenCredential); string hookName = Recording.GenerateAlphaNumericId("hook"); var hookToCreate = new EmailNotificationHook() { Name = hookName, EmailsToAlert = { "*****@*****.**", "*****@*****.**" } }; await using var disposableHook = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate); NotificationHook createdHook = disposableHook.Hook; Assert.That(createdHook.Id, Is.Not.Null.And.Not.Empty); Assert.That(createdHook.Name, Is.EqualTo(hookName)); Assert.That(createdHook.Description, Is.Empty); Assert.That(createdHook.ExternalLink, Is.Null); Assert.That(createdHook.AdministratorsEmails, Is.Not.Null); Assert.That(createdHook.AdministratorsEmails.Single(), Is.Not.Null.And.Not.Empty); var createdEmailHook = createdHook as EmailNotificationHook; Assert.That(createdEmailHook, Is.Not.Null); Assert.That(createdEmailHook.EmailsToAlert.Count, Is.EqualTo(2)); Assert.That(createdEmailHook.EmailsToAlert.Contains("*****@*****.**")); Assert.That(createdEmailHook.EmailsToAlert.Contains("*****@*****.**")); }
public async Task UpdateEmailNotificationHookWithMinimumSetupAndNewInstance() { // Create a hook. MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); string hookName = Recording.GenerateAlphaNumericId("hook"); var hookToCreate = new EmailNotificationHook() { Name = hookName, EmailsToAlert = { "*****@*****.**", "*****@*****.**" } }; await using var disposableHook = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate); // Update the created hook. var hookToUpdate = new EmailNotificationHook(); hookToUpdate.EmailsToAlert.Add("*****@*****.**"); var updatedEmailHook = (await adminClient.UpdateHookAsync(hookToUpdate)).Value as EmailNotificationHook; // Check if updates are in place. Assert.That(updatedEmailHook.Id, Is.EqualTo(hookToUpdate.Id)); Assert.That(updatedEmailHook.Name, Is.EqualTo(hookName)); Assert.That(updatedEmailHook.Description, Is.Empty); Assert.That(updatedEmailHook.ExternalLink, Is.Null); Assert.That(updatedEmailHook.AdministratorsEmails, Is.Not.Null); Assert.That(updatedEmailHook.AdministratorsEmails.Single(), Is.Not.Null.And.Not.Empty); Assert.That(updatedEmailHook.EmailsToAlert.Single(), Is.EqualTo("*****@*****.**")); }
public async Task CreateAndGetEmailNotificationHookWithOptionalMembers() { MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); string hookName = Recording.GenerateAlphaNumericId("hook"); var description = "This hook was created to test the .NET client."; var hookToCreate = new EmailNotificationHook() { Name = hookName, EmailsToAlert = { "*****@*****.**", "*****@*****.**" }, Description = description, ExternalLink = new Uri("http://fake.endpoint.com/") }; await using var disposableHook = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate); NotificationHook createdHook = disposableHook.Hook; Assert.That(createdHook.Id, Is.Not.Null.And.Not.Empty); Assert.That(createdHook.Name, Is.EqualTo(hookName)); Assert.That(createdHook.Description, Is.EqualTo(description)); Assert.That(createdHook.ExternalLink.AbsoluteUri, Is.EqualTo("http://fake.endpoint.com/")); Assert.That(createdHook.AdministratorsEmails, Is.Not.Null); Assert.That(createdHook.AdministratorsEmails.Single(), Is.Not.Null.And.Not.Empty); var createdEmailHook = createdHook as EmailNotificationHook; Assert.That(createdEmailHook, Is.Not.Null); Assert.That(createdEmailHook.EmailsToAlert.Count, Is.EqualTo(2)); Assert.That(createdEmailHook.EmailsToAlert.Contains("*****@*****.**")); Assert.That(createdEmailHook.EmailsToAlert.Contains("*****@*****.**")); }
public async Task CreateAndGetWebNotificationHookWithMinimumSetup() { MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); string hookName = Recording.GenerateAlphaNumericId("hook"); var hookToCreate = new WebNotificationHook() { Name = hookName, Endpoint = new Uri("http://contoso.com/") }; await using var disposableHook = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate); NotificationHook createdHook = disposableHook.Hook; Assert.That(createdHook.Id, Is.Not.Null.And.Not.Empty); Assert.That(createdHook.Name, Is.EqualTo(hookName)); Assert.That(createdHook.Description, Is.Empty); Assert.That(createdHook.ExternalLink, Is.Null); Assert.That(createdHook.AdministratorsEmails, Is.Not.Null); Assert.That(createdHook.AdministratorsEmails.Single(), Is.Not.Null.And.Not.Empty); var createdWebHook = createdHook as WebNotificationHook; Assert.That(createdWebHook, Is.Not.Null); Assert.That(createdWebHook.Endpoint.AbsoluteUri, Is.EqualTo("http://contoso.com/")); Assert.That(createdWebHook.CertificateKey, Is.Empty); Assert.That(createdWebHook.CertificatePassword, Is.Empty); Assert.That(createdWebHook.Username, Is.Empty); Assert.That(createdWebHook.Password, Is.Empty); Assert.That(createdWebHook.Headers, Is.Not.Null.And.Empty); }
public async Task GetHooksWithOptionalNameFilter() { MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); string hookName = Recording.GenerateAlphaNumericId("hook"); string hookNameFilter = hookName.Substring(1, hookName.Length - 3); var hookToCreate = new WebNotificationHook() { Name = hookName, Endpoint = "http://contoso.com" }; await using var disposableHook = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate); var options = new GetHooksOptions() { HookNameFilter = hookNameFilter }; var hookCount = 0; await foreach (NotificationHook hook in adminClient.GetHooksAsync(options)) { Assert.That(hook.Id, Is.Not.Null.And.Not.Empty); Assert.That(hook.Name, Is.Not.Null.And.Not.Empty); Assert.That(hook.Name.Contains(hookNameFilter)); Assert.That(hook.Administrators, Is.Not.Null.And.Not.Empty); Assert.That(hook.Administrators.Any(admin => admin == null || admin == string.Empty), Is.False); Assert.That(hook.Description, Is.Not.Null); Assert.That(hook.ExternalLink, Is.Not.Null); if (hook is EmailNotificationHook) { var emailHook = hook as EmailNotificationHook; Assert.That(emailHook.EmailsToAlert, Is.Not.Null); } else { var webHook = hook as WebNotificationHook; Assert.That(webHook, Is.Not.Null); Assert.That(webHook.CertificateKey, Is.Not.Null); Assert.That(webHook.CertificatePassword, Is.Not.Null); Assert.That(webHook.Username, Is.Not.Null); Assert.That(webHook.Password, Is.Not.Null); Assert.That(webHook.Headers, Is.Not.Null); Assert.That(webHook.Headers.Values.Any(value => value == null), Is.False); } if (++hookCount >= MaximumSamplesCount) { break; } } Assert.That(hookCount, Is.GreaterThan(0)); }
public async Task CreateAndGetWebNotificationHookWithOptionalMembers() { MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); string hookName = Recording.GenerateAlphaNumericId("hook"); var endpoint = new Uri("http://contoso.com/"); var description = "This hook was created to test the .NET client."; var headers = new Dictionary <string, string>() { { "key1", "value1" }, { "key2", "value2" } }; var hookToCreate = new WebNotificationHook() { Name = hookName, Endpoint = endpoint, Description = description, ExternalLink = new Uri("http://fake.endpoint.com/"), // TODO: add CertificateKey validation (https://github.com/Azure/azure-sdk-for-net/issues/17485) CertificatePassword = "******", Username = "******", Password = "******" }; foreach (var header in headers) { hookToCreate.Headers.Add(header); } await using var disposableHook = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate); NotificationHook createdHook = disposableHook.Hook; Assert.That(createdHook.Id, Is.Not.Null.And.Not.Empty); Assert.That(createdHook.Name, Is.EqualTo(hookName)); Assert.That(createdHook.Description, Is.EqualTo(description)); Assert.That(createdHook.ExternalLink.AbsoluteUri, Is.EqualTo("http://fake.endpoint.com/")); Assert.That(createdHook.AdministratorsEmails, Is.Not.Null); Assert.That(createdHook.AdministratorsEmails.Single(), Is.Not.Null.And.Not.Empty); var createdWebHook = createdHook as WebNotificationHook; Assert.That(createdWebHook, Is.Not.Null); Assert.That(createdWebHook.Endpoint, Is.EqualTo(endpoint)); // TODO: add CertificateKey validation (https://github.com/Azure/azure-sdk-for-net/issues/17485) Assert.That(createdWebHook.CertificatePassword, Is.EqualTo("certPassword")); Assert.That(createdWebHook.Username, Is.EqualTo("fakeUsername")); Assert.That(createdWebHook.Password, Is.EqualTo("fakePassword")); Assert.That(createdWebHook.Headers, Is.EquivalentTo(headers)); }
public async Task GetHooksWithMinimumSetup(bool useTokenCredential) { MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(useTokenCredential); string hookName = Recording.GenerateAlphaNumericId("hook"); var hookToCreate = new WebNotificationHook() { Name = hookName, Endpoint = new Uri("http://contoso.com/") }; await using var disposableHook = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate); var hookCount = 0; await foreach (NotificationHook hook in adminClient.GetHooksAsync()) { Assert.That(hook.Id, Is.Not.Null.And.Not.Empty); Assert.That(hook.Name, Is.Not.Null.And.Not.Empty); Assert.That(hook.AdministratorsEmails, Is.Not.Null.And.Not.Empty); Assert.That(hook.AdministratorsEmails.Any(admin => admin == null || admin == string.Empty), Is.False); Assert.That(hook.Description, Is.Not.Null); if (hook is EmailNotificationHook) { var emailHook = hook as EmailNotificationHook; Assert.That(emailHook.EmailsToAlert, Is.Not.Null); } else { var webHook = hook as WebNotificationHook; Assert.That(webHook, Is.Not.Null); Assert.That(webHook.CertificateKey, Is.Not.Null); Assert.That(webHook.CertificatePassword, Is.Not.Null); Assert.That(webHook.Username, Is.Not.Null); Assert.That(webHook.Password, Is.Not.Null); Assert.That(webHook.Headers, Is.Not.Null); Assert.That(webHook.Headers.Values.Any(value => value == null), Is.False); } if (++hookCount >= MaximumSamplesCount) { break; } } Assert.That(hookCount, Is.GreaterThan(0)); }
public async Task UpdateEmailNotificationHookWithEveryMemberAndNewInstance() { // Create a hook. MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); string hookName = Recording.GenerateAlphaNumericId("hook"); var emailsToAlert = new List <string>() { "*****@*****.**", "*****@*****.**" }; var description = "This hook was created to test the .NET client."; var hookToCreate = new EmailNotificationHook(hookName, emailsToAlert); await using var disposableHook = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate); // Update the created hook. var hookToUpdate = new EmailNotificationHook(hookName, emailsToAlert); hookToUpdate.Description = description; hookToUpdate.ExternalLink = "http://fake.endpoint.com"; hookToUpdate.EmailsToAlert.Add("*****@*****.**"); await adminClient.UpdateHookAsync(disposableHook.Id, hookToUpdate); // Get the hook and check if updates are in place. var updatedEmailHook = (await adminClient.GetHookAsync(disposableHook.Id)).Value as EmailNotificationHook; Assert.That(updatedEmailHook.Id, Is.EqualTo(disposableHook.Id)); Assert.That(updatedEmailHook.Name, Is.EqualTo(hookName)); Assert.That(updatedEmailHook.Description, Is.EqualTo(description)); Assert.That(updatedEmailHook.ExternalLink, Is.EqualTo("http://fake.endpoint.com")); Assert.That(updatedEmailHook.Administrators, Is.Not.Null); Assert.That(updatedEmailHook.Administrators.Single(), Is.Not.Null.And.Not.Empty); var expectedEmailsToAlert = new List <string>() { "*****@*****.**", "*****@*****.**", "*****@*****.**" }; Assert.That(updatedEmailHook.EmailsToAlert, Is.EquivalentTo(expectedEmailsToAlert)); }
public async Task UpdateWebNotificationHookWithMinimumSetupAndNewInstance() { // Create a hook. MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); string hookName = Recording.GenerateAlphaNumericId("hook"); var endpoint = "http://contoso.com"; var hookToCreate = new WebNotificationHook() { Name = hookName, Endpoint = endpoint }; await using var disposableHook = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate); // Update the created hook. var hookToUpdate = new WebNotificationHook() { Endpoint = endpoint, Username = "******" }; await adminClient.UpdateHookAsync(disposableHook.Id, hookToUpdate); // Get the hook and check if updates are in place. var updatedWebHook = (await adminClient.GetHookAsync(disposableHook.Id)).Value as WebNotificationHook; Assert.That(updatedWebHook.Id, Is.EqualTo(disposableHook.Id)); Assert.That(updatedWebHook.Name, Is.EqualTo(hookName)); Assert.That(updatedWebHook.Description, Is.Empty); Assert.That(updatedWebHook.ExternalLink, Is.Empty); Assert.That(updatedWebHook.Administrators, Is.Not.Null); Assert.That(updatedWebHook.Administrators.Single(), Is.Not.Null.And.Not.Empty); Assert.That(updatedWebHook.Endpoint, Is.EqualTo(endpoint)); Assert.That(updatedWebHook.CertificateKey, Is.Empty); Assert.That(updatedWebHook.CertificatePassword, Is.Empty); Assert.That(updatedWebHook.Username, Is.EqualTo("fakeUsername")); Assert.That(updatedWebHook.Password, Is.Empty); Assert.That(updatedWebHook.Headers, Is.Not.Null.And.Empty); }
public async Task UpdateEmailNotificationHookWithMinimumSetupAndGetInstance(bool useTokenCredential) { // Create a hook. MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(useTokenCredential); string hookName = Recording.GenerateAlphaNumericId("hook"); var emailsToAlert = new List <string>() { "*****@*****.**", "*****@*****.**" }; var hookToCreate = new EmailNotificationHook(hookName, emailsToAlert); await using var disposableHook = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate); // Update the created hook. var hookToUpdate = (await adminClient.GetHookAsync(disposableHook.Id)).Value as EmailNotificationHook; hookToUpdate.EmailsToAlert.Add("*****@*****.**"); await adminClient.UpdateHookAsync(disposableHook.Id, hookToUpdate); // Get the hook and check if updates are in place. var updatedEmailHook = (await adminClient.GetHookAsync(disposableHook.Id)).Value as EmailNotificationHook; Assert.That(updatedEmailHook.Id, Is.EqualTo(disposableHook.Id)); Assert.That(updatedEmailHook.Name, Is.EqualTo(hookName)); Assert.That(updatedEmailHook.Description, Is.Empty); Assert.That(updatedEmailHook.ExternalLink, Is.Empty); Assert.That(updatedEmailHook.Administrators, Is.Not.Null); Assert.That(updatedEmailHook.Administrators.Single(), Is.Not.Null.And.Not.Empty); var expectedEmailsToAlert = new List <string>() { "*****@*****.**", "*****@*****.**", "*****@*****.**" }; Assert.That(updatedEmailHook.EmailsToAlert, Is.EquivalentTo(expectedEmailsToAlert)); }
public async Task UpdateEmailNotificationHookWithEveryMemberAndNewInstance() { // Create a hook. MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); string hookName = Recording.GenerateAlphaNumericId("hook"); var description = "This hook was created to test the .NET client."; var hookToCreate = new EmailNotificationHook() { Name = hookName, EmailsToAlert = { "*****@*****.**", "*****@*****.**" } }; await using var disposableHook = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate); // Update the created hook. var hookToUpdate = new EmailNotificationHook() { Description = description, ExternalLink = new Uri("http://fake.endpoint.com/") }; hookToUpdate.EmailsToAlert.Add("*****@*****.**"); var updatedEmailHook = (await adminClient.UpdateHookAsync(hookToUpdate)).Value as EmailNotificationHook; // Check if updates are in place. Assert.That(updatedEmailHook.Id, Is.EqualTo(hookToUpdate.Id)); Assert.That(updatedEmailHook.Name, Is.EqualTo(hookName)); Assert.That(updatedEmailHook.Description, Is.EqualTo(description)); Assert.That(updatedEmailHook.ExternalLink.AbsoluteUri, Is.EqualTo("http://fake.endpoint.com/")); Assert.That(updatedEmailHook.AdministratorsEmails, Is.Not.Null); Assert.That(updatedEmailHook.AdministratorsEmails.Single(), Is.Not.Null.And.Not.Empty); Assert.That(updatedEmailHook.EmailsToAlert.Single(), Is.EqualTo("*****@*****.**")); }
public async Task UpdateWebNotificationHookWithMinimumSetup() { // Create a hook. MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); string hookName = Recording.GenerateAlphaNumericId("hook"); var hookToCreate = new WebNotificationHook(hookName, new Uri("http://contoso.com/")); await using var disposableHook = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate); // Update the created hook. var hookToUpdate = disposableHook.Hook as WebNotificationHook; hookToUpdate.Username = "******"; var updatedWebHook = (await adminClient.UpdateHookAsync(hookToUpdate)).Value as WebNotificationHook; // Check if updates are in place. Assert.That(updatedWebHook.Id, Is.EqualTo(hookToUpdate.Id)); Assert.That(updatedWebHook.Name, Is.EqualTo(hookName)); Assert.That(updatedWebHook.Description, Is.Empty); Assert.That(updatedWebHook.ExternalUri, Is.Null); Assert.That(updatedWebHook.Administrators, Is.Not.Null); Assert.That(updatedWebHook.Administrators.Single(), Is.Not.Null.And.Not.Empty); Assert.That(updatedWebHook.Endpoint.AbsoluteUri, Is.EqualTo("http://contoso.com/")); Assert.That(updatedWebHook.CertificateKey, Is.Empty); Assert.That(updatedWebHook.CertificatePassword, Is.Empty); Assert.That(updatedWebHook.Username, Is.EqualTo("fakeUsername")); Assert.That(updatedWebHook.Password, Is.Empty); Assert.That(updatedWebHook.Headers, Is.Not.Null.And.Empty); }
public async Task CreateAndGetAlertConfigurationWithOptionalSingleMetricConfigurationMembers() { MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); await using DisposableDataFeed disposableDataFeed = await CreateTempDataFeedAsync(adminClient); string metricId = disposableDataFeed.DataFeed.MetricIds[TempDataFeedMetricName]; await using DisposableDetectionConfiguration disposableDetectionConfig = await CreateTempDetectionConfigurationAsync(adminClient, metricId); string hookName0 = Recording.GenerateAlphaNumericId("hook"); string hookName1 = Recording.GenerateAlphaNumericId("hook"); var hookToCreate0 = new EmailNotificationHook(hookName0); var hookToCreate1 = new EmailNotificationHook(hookName1); hookToCreate0.EmailsToAlert.Add("*****@*****.**"); hookToCreate1.EmailsToAlert.Add("*****@*****.**"); await using var disposableHook0 = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate0); await using var disposableHook1 = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate1); var detectionConfigId = disposableDetectionConfig.Configuration.Id; var scope = MetricAnomalyAlertScope.GetScopeForWholeSeries(); var metricAlertConfig = new MetricAnomalyAlertConfiguration(detectionConfigId, scope) { AlertSnoozeCondition = new MetricAnomalyAlertSnoozeCondition(12, SnoozeScope.Series, true), AlertConditions = new MetricAnomalyAlertConditions() { MetricBoundaryCondition = new MetricBoundaryCondition(BoundaryDirection.Both) { UpperBound = 20.0, LowerBound = 10.0, CompanionMetricId = metricId, ShouldAlertIfDataPointMissing = true }, SeverityCondition = new SeverityCondition(AnomalySeverity.Low, AnomalySeverity.Medium) } }; string configName = Recording.GenerateAlphaNumericId("config"); var description = "This hook was created to test the .NET client."; var configToCreate = new AnomalyAlertConfiguration() { Name = configName, IdsOfHooksToAlert = { disposableHook0.Hook.Id, disposableHook1.Hook.Id }, MetricAlertConfigurations = { metricAlertConfig }, Description = description }; await using var disposableConfig = await DisposableAlertConfiguration.CreateAlertConfigurationAsync(adminClient, configToCreate); AnomalyAlertConfiguration createdConfig = disposableConfig.Configuration; Assert.That(createdConfig.Id, Is.Not.Null.And.Not.Empty); Assert.That(createdConfig.Name, Is.EqualTo(configName)); Assert.That(createdConfig.Description, Is.EqualTo(description)); Assert.That(createdConfig.CrossMetricsOperator, Is.Null); Assert.That(createdConfig.IdsOfHooksToAlert.Count, Is.EqualTo(2)); Assert.That(createdConfig.IdsOfHooksToAlert.Contains(disposableHook0.Hook.Id)); Assert.That(createdConfig.IdsOfHooksToAlert.Contains(disposableHook1.Hook.Id)); Assert.That(createdConfig.MetricAlertConfigurations, Is.Not.Null); MetricAnomalyAlertConfiguration createdMetricAlertConfig = createdConfig.MetricAlertConfigurations.Single(); Assert.That(createdMetricAlertConfig.DetectionConfigurationId, Is.EqualTo(detectionConfigId)); Assert.That(createdMetricAlertConfig.AlertScope, Is.Not.Null); Assert.That(createdMetricAlertConfig.AlertScope.ScopeType, Is.EqualTo(MetricAnomalyAlertScopeType.WholeSeries)); Assert.That(createdMetricAlertConfig.AlertScope.SeriesGroupInScope, Is.Null); Assert.That(createdMetricAlertConfig.AlertScope.TopNGroupInScope, Is.Null); Assert.That(createdMetricAlertConfig.AlertConditions, Is.Not.Null); Assert.That(createdMetricAlertConfig.AlertConditions.MetricBoundaryCondition, Is.Not.Null); Assert.That(createdMetricAlertConfig.AlertConditions.MetricBoundaryCondition.Direction, Is.EqualTo(BoundaryDirection.Both)); Assert.That(createdMetricAlertConfig.AlertConditions.MetricBoundaryCondition.UpperBound, Is.EqualTo(20.0)); Assert.That(createdMetricAlertConfig.AlertConditions.MetricBoundaryCondition.LowerBound, Is.EqualTo(10.0)); Assert.That(createdMetricAlertConfig.AlertConditions.MetricBoundaryCondition.CompanionMetricId, Is.EqualTo(metricId)); Assert.That(createdMetricAlertConfig.AlertConditions.MetricBoundaryCondition.ShouldAlertIfDataPointMissing, Is.True); Assert.That(createdMetricAlertConfig.AlertConditions.SeverityCondition, Is.Not.Null); Assert.That(createdMetricAlertConfig.AlertConditions.SeverityCondition.MinimumAlertSeverity, Is.EqualTo(AnomalySeverity.Low)); Assert.That(createdMetricAlertConfig.AlertConditions.SeverityCondition.MaximumAlertSeverity, Is.EqualTo(AnomalySeverity.Medium)); Assert.That(createdMetricAlertConfig.AlertSnoozeCondition, Is.Not.Null); Assert.That(createdMetricAlertConfig.AlertSnoozeCondition.AutoSnooze, Is.EqualTo(12)); Assert.That(createdMetricAlertConfig.AlertSnoozeCondition.SnoozeScope, Is.EqualTo(SnoozeScope.Series)); Assert.That(createdMetricAlertConfig.AlertSnoozeCondition.IsOnlyForSuccessive, Is.True); Assert.That(createdMetricAlertConfig.UseDetectionResultToFilterAnomalies, Is.False); }
public async Task UpdateAlertConfigurationWithMinimumSetup(bool useTokenCrendential) { MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(useTokenCrendential); await using DisposableDataFeed disposableDataFeed = await CreateTempDataFeedAsync(adminClient); string metricId = disposableDataFeed.DataFeed.MetricIds[TempDataFeedMetricName]; await using DisposableDetectionConfiguration disposableDetectionConfig = await CreateTempDetectionConfigurationAsync(adminClient, metricId); // Configure the Metric Anomaly Alert Configurations to be used. string hookName = Recording.GenerateAlphaNumericId("hook"); var hookToCreate = new EmailNotificationHook(hookName) { EmailsToAlert = { "*****@*****.**" } }; await using var disposableHook = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate); var detectionConfigId = disposableDetectionConfig.Configuration.Id; var scope = MetricAnomalyAlertScope.GetScopeForWholeSeries(); var metricAlertConfig0 = new MetricAnomalyAlertConfiguration(detectionConfigId, scope) { AlertSnoozeCondition = new MetricAnomalyAlertSnoozeCondition(12, SnoozeScope.Series, true), AlertConditions = new MetricAnomalyAlertConditions() { MetricBoundaryCondition = new MetricBoundaryCondition(BoundaryDirection.Both) { UpperBound = 20.0, LowerBound = 10.0, CompanionMetricId = metricId, ShouldAlertIfDataPointMissing = true }, SeverityCondition = new SeverityCondition(AnomalySeverity.Low, AnomalySeverity.Medium) } }; var metricAlertConfig1 = new MetricAnomalyAlertConfiguration(detectionConfigId, scope) { UseDetectionResultToFilterAnomalies = true }; // Create the Anomaly Alert Configuration. string configName = Recording.GenerateAlphaNumericId("config"); var hookIds = new List <string>() { disposableHook.Hook.Id }; var configToCreate = new AnomalyAlertConfiguration() { Name = configName, IdsOfHooksToAlert = { disposableHook.Hook.Id }, MetricAlertConfigurations = { metricAlertConfig0, metricAlertConfig1 }, CrossMetricsOperator = MetricAnomalyAlertConfigurationsOperator.Xor }; await using var disposableConfig = await DisposableAlertConfiguration.CreateAlertConfigurationAsync(adminClient, configToCreate); // Update the created configuration. AnomalyAlertConfiguration configToUpdate = disposableConfig.Configuration; configToUpdate.CrossMetricsOperator = MetricAnomalyAlertConfigurationsOperator.Or; AnomalyAlertConfiguration updatedConfig = await adminClient.UpdateAlertConfigurationAsync(configToUpdate); // Validate top-level members. Assert.That(updatedConfig.Id, Is.EqualTo(configToUpdate.Id)); Assert.That(updatedConfig.Name, Is.EqualTo(configName)); Assert.That(updatedConfig.Description, Is.Empty); Assert.That(updatedConfig.CrossMetricsOperator, Is.EqualTo(MetricAnomalyAlertConfigurationsOperator.Or)); Assert.That(updatedConfig.IdsOfHooksToAlert, Is.EqualTo(hookIds)); Assert.That(updatedConfig.MetricAlertConfigurations, Is.Not.Null); Assert.That(updatedConfig.MetricAlertConfigurations.Count, Is.EqualTo(2)); // Validate the first Metric Anomaly Alert Configuration. MetricAnomalyAlertConfiguration updatedMetricAlertConfig0 = updatedConfig.MetricAlertConfigurations[0]; Assert.That(updatedMetricAlertConfig0.DetectionConfigurationId, Is.EqualTo(detectionConfigId)); Assert.That(updatedMetricAlertConfig0.AlertScope, Is.Not.Null); Assert.That(updatedMetricAlertConfig0.AlertScope.ScopeType, Is.EqualTo(MetricAnomalyAlertScopeType.WholeSeries)); Assert.That(updatedMetricAlertConfig0.AlertScope.SeriesGroupInScope, Is.Null); Assert.That(updatedMetricAlertConfig0.AlertScope.TopNGroupInScope, Is.Null); Assert.That(updatedMetricAlertConfig0.AlertConditions, Is.Not.Null); Assert.That(updatedMetricAlertConfig0.AlertConditions.MetricBoundaryCondition, Is.Not.Null); Assert.That(updatedMetricAlertConfig0.AlertConditions.MetricBoundaryCondition.Direction, Is.EqualTo(BoundaryDirection.Both)); Assert.That(updatedMetricAlertConfig0.AlertConditions.MetricBoundaryCondition.UpperBound, Is.EqualTo(20.0)); Assert.That(updatedMetricAlertConfig0.AlertConditions.MetricBoundaryCondition.LowerBound, Is.EqualTo(10.0)); Assert.That(updatedMetricAlertConfig0.AlertConditions.MetricBoundaryCondition.CompanionMetricId, Is.EqualTo(metricId)); Assert.That(updatedMetricAlertConfig0.AlertConditions.MetricBoundaryCondition.ShouldAlertIfDataPointMissing, Is.True); Assert.That(updatedMetricAlertConfig0.AlertConditions.SeverityCondition, Is.Not.Null); Assert.That(updatedMetricAlertConfig0.AlertConditions.SeverityCondition.MinimumAlertSeverity, Is.EqualTo(AnomalySeverity.Low)); Assert.That(updatedMetricAlertConfig0.AlertConditions.SeverityCondition.MaximumAlertSeverity, Is.EqualTo(AnomalySeverity.Medium)); Assert.That(updatedMetricAlertConfig0.AlertSnoozeCondition, Is.Not.Null); Assert.That(updatedMetricAlertConfig0.AlertSnoozeCondition.AutoSnooze, Is.EqualTo(12)); Assert.That(updatedMetricAlertConfig0.AlertSnoozeCondition.SnoozeScope, Is.EqualTo(SnoozeScope.Series)); Assert.That(updatedMetricAlertConfig0.AlertSnoozeCondition.IsOnlyForSuccessive, Is.True); Assert.That(updatedMetricAlertConfig0.UseDetectionResultToFilterAnomalies, Is.False); // Validate the second Metric Anomaly Alert Configuration. MetricAnomalyAlertConfiguration updatedMetricAlertConfig1 = updatedConfig.MetricAlertConfigurations[1]; Assert.That(updatedMetricAlertConfig1.DetectionConfigurationId, Is.EqualTo(detectionConfigId)); Assert.That(updatedMetricAlertConfig1.AlertScope, Is.Not.Null); Assert.That(updatedMetricAlertConfig1.AlertScope.ScopeType, Is.EqualTo(MetricAnomalyAlertScopeType.WholeSeries)); Assert.That(updatedMetricAlertConfig1.AlertScope.SeriesGroupInScope, Is.Null); Assert.That(updatedMetricAlertConfig1.AlertScope.TopNGroupInScope, Is.Null); Assert.That(updatedMetricAlertConfig1.AlertConditions, Is.Not.Null); Assert.That(updatedMetricAlertConfig1.AlertConditions.MetricBoundaryCondition, Is.Null); Assert.That(updatedMetricAlertConfig1.AlertConditions.SeverityCondition, Is.Null); Assert.That(updatedMetricAlertConfig1.AlertSnoozeCondition, Is.Null); Assert.That(updatedMetricAlertConfig1.UseDetectionResultToFilterAnomalies, Is.True); }
public async Task UpdateAlertConfigurationWithEveryMember() { MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); await using DisposableDataFeed disposableDataFeed = await CreateTempDataFeedAsync(adminClient); string metricId = disposableDataFeed.DataFeed.MetricIds[TempDataFeedMetricName]; await using DisposableDetectionConfiguration disposableDetectionConfig = await CreateTempDetectionConfigurationAsync(adminClient, metricId); // Configure the Metric Anomaly Alert Configurations to be used. string hookName = Recording.GenerateAlphaNumericId("hook"); var hookToCreate = new EmailNotificationHook(hookName) { EmailsToAlert = { "*****@*****.**" } }; await using var disposableHook = await DisposableNotificationHook.CreateHookAsync(adminClient, hookToCreate); var detectionConfigId = disposableDetectionConfig.Configuration.Id; var scope = MetricAnomalyAlertScope.GetScopeForWholeSeries(); var metricAlertConfig0 = new MetricAnomalyAlertConfiguration(detectionConfigId, scope) { AlertSnoozeCondition = new MetricAnomalyAlertSnoozeCondition(12, SnoozeScope.Series, true), AlertConditions = new MetricAnomalyAlertConditions() { MetricBoundaryCondition = new MetricBoundaryCondition(BoundaryDirection.Both) { UpperBound = 20.0, LowerBound = 10.0, CompanionMetricId = metricId, ShouldAlertIfDataPointMissing = true }, SeverityCondition = new SeverityCondition(AnomalySeverity.Low, AnomalySeverity.Medium) } }; var metricAlertConfig1 = new MetricAnomalyAlertConfiguration(detectionConfigId, scope) { UseDetectionResultToFilterAnomalies = true }; // Create the Anomaly Alert Configuration. string configName = Recording.GenerateAlphaNumericId("config"); var description = "This hook was created to test the .NET client."; var hookIds = new List <string>() { disposableHook.Hook.Id }; var metricAlertConfigs = new List <MetricAnomalyAlertConfiguration>() { metricAlertConfig0, metricAlertConfig1 }; var configToCreate = new AnomalyAlertConfiguration() { Name = configName, IdsOfHooksToAlert = { disposableHook.Hook.Id }, MetricAlertConfigurations = { metricAlertConfig0, metricAlertConfig1 }, CrossMetricsOperator = MetricAnomalyAlertConfigurationsOperator.Xor }; await using var disposableConfig = await DisposableAlertConfiguration.CreateAlertConfigurationAsync(adminClient, configToCreate); // Update the created configuration. AnomalyAlertConfiguration configToUpdate = disposableConfig.Configuration; configToUpdate.Description = description; configToUpdate.IdsOfHooksToAlert.Clear(); configToUpdate.CrossMetricsOperator = MetricAnomalyAlertConfigurationsOperator.And; configToUpdate.MetricAlertConfigurations.RemoveAt(1); var newScope = MetricAnomalyAlertScope.GetScopeForTopNGroup(new TopNGroupScope(50, 40, 30)); var newMetricAlertConfig = new MetricAnomalyAlertConfiguration(detectionConfigId, newScope) { AlertSnoozeCondition = new MetricAnomalyAlertSnoozeCondition(4, SnoozeScope.Metric, true), UseDetectionResultToFilterAnomalies = true }; configToUpdate.MetricAlertConfigurations.Add(newMetricAlertConfig); MetricAnomalyAlertConfiguration metricAlertConfigToUpdate = configToUpdate.MetricAlertConfigurations[0]; metricAlertConfigToUpdate.AlertConditions.MetricBoundaryCondition.UpperBound = 15.0; metricAlertConfigToUpdate.AlertConditions.MetricBoundaryCondition.LowerBound = 5.0; metricAlertConfigToUpdate.AlertConditions.MetricBoundaryCondition.CompanionMetricId = null; metricAlertConfigToUpdate.AlertConditions.MetricBoundaryCondition.ShouldAlertIfDataPointMissing = false; metricAlertConfigToUpdate.AlertConditions.SeverityCondition = new SeverityCondition(AnomalySeverity.Medium, AnomalySeverity.High); metricAlertConfigToUpdate.AlertSnoozeCondition = null; AnomalyAlertConfiguration updatedConfig = await adminClient.UpdateAlertConfigurationAsync(configToUpdate); // Validate top-level members. Assert.That(updatedConfig.Id, Is.EqualTo(configToUpdate.Id)); Assert.That(updatedConfig.Name, Is.EqualTo(configName)); Assert.That(updatedConfig.Description, Is.EqualTo(description)); Assert.That(updatedConfig.CrossMetricsOperator, Is.EqualTo(MetricAnomalyAlertConfigurationsOperator.And)); Assert.That(updatedConfig.IdsOfHooksToAlert, Is.Not.Null.And.Empty); Assert.That(updatedConfig.MetricAlertConfigurations, Is.Not.Null); // Validate the first Metric Anomaly Alert Configuration. MetricAnomalyAlertConfiguration updatedMetricAlertConfig0 = updatedConfig.MetricAlertConfigurations[0]; Assert.That(updatedMetricAlertConfig0.DetectionConfigurationId, Is.EqualTo(detectionConfigId)); Assert.That(updatedMetricAlertConfig0.AlertScope, Is.Not.Null); Assert.That(updatedMetricAlertConfig0.AlertScope.ScopeType, Is.EqualTo(MetricAnomalyAlertScopeType.WholeSeries)); Assert.That(updatedMetricAlertConfig0.AlertScope.SeriesGroupInScope, Is.Null); Assert.That(updatedMetricAlertConfig0.AlertScope.TopNGroupInScope, Is.Null); Assert.That(updatedMetricAlertConfig0.AlertConditions, Is.Not.Null); Assert.That(updatedMetricAlertConfig0.AlertConditions.MetricBoundaryCondition, Is.Not.Null); Assert.That(updatedMetricAlertConfig0.AlertConditions.MetricBoundaryCondition.Direction, Is.EqualTo(BoundaryDirection.Both)); Assert.That(updatedMetricAlertConfig0.AlertConditions.MetricBoundaryCondition.UpperBound, Is.EqualTo(15.0)); Assert.That(updatedMetricAlertConfig0.AlertConditions.MetricBoundaryCondition.LowerBound, Is.EqualTo(5.0)); Assert.That(updatedMetricAlertConfig0.AlertConditions.MetricBoundaryCondition.CompanionMetricId, Is.Null); Assert.That(updatedMetricAlertConfig0.AlertConditions.MetricBoundaryCondition.ShouldAlertIfDataPointMissing, Is.False); Assert.That(updatedMetricAlertConfig0.AlertConditions.SeverityCondition, Is.Not.Null); Assert.That(updatedMetricAlertConfig0.AlertConditions.SeverityCondition.MinimumAlertSeverity, Is.EqualTo(AnomalySeverity.Medium)); Assert.That(updatedMetricAlertConfig0.AlertConditions.SeverityCondition.MaximumAlertSeverity, Is.EqualTo(AnomalySeverity.High)); Assert.That(updatedMetricAlertConfig0.AlertSnoozeCondition, Is.Null); Assert.That(updatedMetricAlertConfig0.UseDetectionResultToFilterAnomalies, Is.False); // Validate the second Metric Anomaly Alert Configuration. MetricAnomalyAlertConfiguration updatedMetricAlertConfig1 = updatedConfig.MetricAlertConfigurations[1]; Assert.That(updatedMetricAlertConfig1.DetectionConfigurationId, Is.EqualTo(detectionConfigId)); Assert.That(updatedMetricAlertConfig1.AlertScope, Is.Not.Null); Assert.That(updatedMetricAlertConfig1.AlertScope.ScopeType, Is.EqualTo(MetricAnomalyAlertScopeType.TopN)); Assert.That(updatedMetricAlertConfig1.AlertScope.SeriesGroupInScope, Is.Null); Assert.That(updatedMetricAlertConfig1.AlertScope.TopNGroupInScope, Is.Not.Null); Assert.That(updatedMetricAlertConfig1.AlertScope.TopNGroupInScope.Top, Is.EqualTo(50)); Assert.That(updatedMetricAlertConfig1.AlertScope.TopNGroupInScope.Period, Is.EqualTo(40)); Assert.That(updatedMetricAlertConfig1.AlertScope.TopNGroupInScope.MinimumTopCount, Is.EqualTo(30)); Assert.That(updatedMetricAlertConfig1.AlertConditions, Is.Not.Null); Assert.That(updatedMetricAlertConfig1.AlertConditions.MetricBoundaryCondition, Is.Null); Assert.That(updatedMetricAlertConfig1.AlertConditions.SeverityCondition, Is.Null); Assert.That(updatedMetricAlertConfig1.AlertSnoozeCondition, Is.Not.Null); Assert.That(updatedMetricAlertConfig1.AlertSnoozeCondition.AutoSnooze, Is.EqualTo(4)); Assert.That(updatedMetricAlertConfig1.AlertSnoozeCondition.SnoozeScope, Is.EqualTo(SnoozeScope.Metric)); Assert.That(updatedMetricAlertConfig1.AlertSnoozeCondition.IsOnlyForSuccessive, Is.True); Assert.That(updatedMetricAlertConfig1.UseDetectionResultToFilterAnomalies, Is.True); }