public async Task ShouldBatchInitialUpEventNotifications()
        {
            var queuedActions = new List <Action>();

            _bgExec.When(bge => bge.ExecuteDelayed(Arg.Any <Action>(), 2500))
            .Do(ci =>
            {
                queuedActions.Add(ci.Arg <Action>());
            });
            HttpRequestMessage message = null;

            _httpHandler.When(h => h.RealSendAsync(Arg.Any <HttpRequestMessage>(), Arg.Any <CancellationToken>()))
            .Do(ci =>
            {
                message = ci.Arg <HttpRequestMessage>();
            });

            _service.NotifyUp(new Endpoint {
                Name = "A"
            }, null);
            _service.NotifyUp(new Endpoint {
                Name = "B"
            }, null);
            _service.NotifyUp(new Endpoint {
                Name = "C"
            }, null);

            queuedActions.ForEach(a => a.Invoke());

            await _httpHandler.Received(1).RealSendAsync(Arg.Any <HttpRequestMessage>(), Arg.Any <CancellationToken>());

            Assert.AreEqual("https://webhook.example.com/hook", message.RequestUri.ToString());
            Assert.AreEqual(@"{""text"":""The following endpoints are up: `A`, `B`, `C`. Hooray!""}", await message.Content.ReadAsStringAsync());
        }
Exemple #2
0
        public async Task ShouldNotifyEndpointUpEvent()
        {
            HttpRequestMessage message = null;

            _httpHandler.When(h => h.RealSendAsync(Arg.Any <HttpRequestMessage>(), Arg.Any <CancellationToken>()))
            .Do(ci =>
            {
                message = ci.Arg <HttpRequestMessage>();
            });

            _service.NotifyUp(new Endpoint {
                Name = "A"
            }, null);

            await _httpHandler.Received(1).RealSendAsync(Arg.Any <HttpRequestMessage>(), Arg.Any <CancellationToken>());

            Assert.AreEqual("https://webhook.example.com/hook", message.RequestUri.ToString());
            Assert.AreEqual(@"{""text"":""The endpoint 'A' is up. Hooray!""}", await message.Content.ReadAsStringAsync());
        }