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); }
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); } }