public async Task GetHooksAsync() { string endpoint = MetricsAdvisorUri; string subscriptionKey = MetricsAdvisorSubscriptionKey; string apiKey = MetricsAdvisorApiKey; var credential = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey); var adminClient = new MetricsAdvisorAdministrationClient(new Uri(endpoint), credential); var options = new GetHooksOptions() { MaxPageSize = 5 }; int hookCount = 0; await foreach (NotificationHook hook in adminClient.GetHooksAsync(options)) { Console.WriteLine($"Hook ID: {hook.Id}"); Console.WriteLine($"Name: {hook.Name}"); Console.WriteLine($"Description: {hook.Description}"); Console.WriteLine($"Type: {hook.HookType}"); Console.WriteLine(); // Print at most 5 hooks. if (++hookCount >= 5) { break; } } }
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 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 void GetHooksRespectsTheCancellationToken() { MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); using var cancellationSource = new CancellationTokenSource(); cancellationSource.Cancel(); IAsyncEnumerator <NotificationHook> asyncEnumerator = adminClient.GetHooksAsync(cancellationToken: cancellationSource.Token).GetAsyncEnumerator(); Assert.That(async() => await asyncEnumerator.MoveNextAsync(), Throws.InstanceOf <OperationCanceledException>()); IEnumerator <NotificationHook> enumerator = adminClient.GetHooks(cancellationToken: cancellationSource.Token).GetEnumerator(); Assert.That(() => enumerator.MoveNext(), Throws.InstanceOf <OperationCanceledException>()); }