public async Task Emit_CallsEndpointUsingTeamId()
        {
            const string teamId = nameof(teamId);
            const string apiKey = nameof(apiKey);

            HttpClientStub clientStub = A.HttpClient();

            var sut = CreateSut(teamId, apiKey, clientStub);

            await sut.EmitTestable(new LogEvent(DateTimeOffset.Now, LogEventLevel.Information, null, new MessageTemplate("", Enumerable.Empty <MessageTemplateToken>()), Enumerable.Empty <LogEventProperty>()));

            clientStub.RequestSubmitted.RequestUri.ToString().Should().EndWith(teamId);
        }
        public async Task Emit_AlwaysSendsApiKeyAsync()
        {
            const string teamId = nameof(teamId);
            const string apiKey = nameof(apiKey);

            HttpClientStub clientStub = A.HttpClient();

            var sut = CreateSut(teamId, apiKey, clientStub);

            await sut.EmitTestable(new LogEvent(DateTimeOffset.Now, LogEventLevel.Information, null, new MessageTemplate("", Enumerable.Empty <MessageTemplateToken>()), Enumerable.Empty <LogEventProperty>()));

            clientStub.RequestSubmitted.Headers.Should().ContainSingle(h => h.Key == "X-Honeycomb-Team");
            clientStub.RequestSubmitted.Headers.GetValues("X-Honeycomb-Team").Should().ContainSingle().Which.Should().Be(apiKey);
        }
Пример #3
0
        public async Task SendAsync_ReturnsParsedResponse(
            HttpResponseMessage httpResponse, JSendResponse <Model> parsedResponse,
            [FrozenAsHttpClient] HttpClientStub httpClientStub,
            HttpRequestMessage request, [Greedy] JSendClient client)
        {
            // Fixture setup
            httpClientStub.ReturnOnSend = httpResponse;

            Mock.Get(client.Parser)
            .Setup(p => p.ParseAsync <Model>(It.IsAny <JsonSerializerSettings>(), httpResponse))
            .ReturnsAsync(parsedResponse);
            // Exercise system
            var response = await client.SendAsync <Model>(request);

            // Verify outcome
            response.Should().BeSameAs(parsedResponse);
        }
        public void Index_rolls_over_when_date_changes_during_single_call_to_add_multiple_log_entries()
        {
            var logEvents = new[]
            {
                new logEvent(), new logEvent(), new logEvent(), new logEvent()
            };

            using (Clock.Freeze(new DateTime(2015, 1, 1, 23, 59, 58)))
            {
                var httpClientStub = new HttpClientStub(() => Clock.Freeze(Clock.Now.AddSeconds(1)));

                var repository = Repository.Create("Server=localhost;Index=log;Port=9200;rolling=true", httpClientStub);

                repository.Add(logEvents);

                httpClientStub.Items.Count().Should().Be(2);
                httpClientStub.Items.First().Value.Count.Should().Be(2);
                httpClientStub.Items.Second().Value.Count.Should().Be(2);
            }
        }
        public async Task Emit_GivenNoExceptionIsLogged_SerializesLogMessageAsJson_HasNoExceptionInMessageAsync()
        {
            const string teamId = nameof(teamId);
            const string apiKey = nameof(apiKey);

            HttpClientStub clientStub = A.HttpClient();

            var sut = CreateSut(teamId, apiKey, clientStub);

            var level = LogEventLevel.Fatal;

            var messageTempalteString = "Testing message {message}";

            var eventToSend = Some.LogEvent(level, messageTempalteString);

            await sut.EmitTestable(eventToSend);

            var requestContent = clientStub.RequestContent;

            using (var document = JsonDocument.Parse(requestContent))
                using (new AssertionScope())
                {
                    document.RootElement.ValueKind.Should().Be(JsonValueKind.Array);
                    document.RootElement.GetArrayLength().Should().Be(1);
                    JsonElement sentEvent = document.RootElement.EnumerateArray().Single();

                    sentEvent.GetProperty("time").GetDateTimeOffset().Should().Be(eventToSend.Timestamp);
                    sentEvent.GetProperty("data").ValueKind.Should().Be(JsonValueKind.Object);

                    JsonElement data = sentEvent.GetProperty("data");
                    data.GetProperty("level").GetString().Should().Be(level.ToString());
                    data.GetProperty("messageTemplate").GetString().Should().Be(messageTempalteString);
                    data.TryGetProperty("exception", out var ex);
                    ex.ValueKind.Should().Be(JsonValueKind.Undefined);
                }
        }
        public async Task Emit_GivenAMessageWithProperties_SendsThemAllAsync()
        {
            const string teamId = nameof(teamId);
            const string apiKey = nameof(apiKey);

            HttpClientStub clientStub = A.HttpClient();

            var sut = CreateSut(teamId, apiKey, clientStub);

            var level = LogEventLevel.Fatal;

            const string property = nameof(property);

            var messageTempalteString = $"Testing message property {{{nameof(property)}}}";

            var eventToSend = Some.LogEvent(level, messageTempalteString, property);

            await sut.EmitTestable(eventToSend);

            var requestContent = clientStub.RequestContent;

            using (var document = JsonDocument.Parse(requestContent))
                using (new AssertionScope())
                {
                    document.RootElement.ValueKind.Should().Be(JsonValueKind.Array);
                    document.RootElement.GetArrayLength().Should().Be(1);
                    JsonElement sentEvent = document.RootElement.EnumerateArray().Single();

                    sentEvent.GetProperty("time").GetDateTimeOffset().Should().Be(eventToSend.Timestamp);
                    sentEvent.GetProperty("data").ValueKind.Should().Be(JsonValueKind.Object);

                    JsonElement data = sentEvent.GetProperty("data");

                    data.GetProperty(nameof(property)).GetString().Should().Be(property);
                }
        }