package brave.http; import brave.SpanCustomizer; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import zipkin.TraceKeys; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class HttpParserTest { @Mock HttpClientAdapter<Object, Object> adapter; @Mock SpanCustomizer customizer; Object request = new Object(); Object response = new Object(); HttpParser parser = new HttpParser(); @Test public void spanName_isMethod() { when(adapter.method(request)).thenReturn("GET"); assertThat(parser.spanName(adapter, request)) .isEqualTo("GET"); } @Test public void request_addsPath() { when(adapter.path(request)).thenReturn("/foo"); parser.request(adapter, request, customizer); verify(customizer).tag(TraceKeys.HTTP_PATH, "/foo"); } @Test public void request_doesntCrashOnNullPath() { parser.request(adapter, request, customizer); verify(customizer, never()).tag(TraceKeys.HTTP_PATH, null); } @Test public void response_tagsStatusAndErrorOnResponseCode() { when(adapter.statusCode(response)).thenReturn(400); parser.response(adapter, response, null, customizer); verify(customizer).tag("http.status_code", "400"); verify(customizer).tag("error", "400"); } @Test public void response_tagsErrorFromException() { parser.response(adapter, response, new RuntimeException("drat"), customizer); verify(customizer).tag("error", "drat"); } @Test public void response_tagsErrorPrefersExceptionVsResponseCode() { when(adapter.statusCode(response)).thenReturn(400); parser.response(adapter, response, new RuntimeException("drat"), customizer); verify(customizer).tag("error", "drat"); } @Test public void response_tagsErrorOnExceptionEvenIfStatusOk() { when(adapter.statusCode(response)).thenReturn(200); parser.response(adapter, response, new RuntimeException("drat"), customizer); verify(customizer).tag("error", "drat"); } }