@Bean public RequestTracingFilter requestTracingFilter() { return new RequestTracingFilter(); }
@Bean public RequestTracingFilter requestTracingFilter() { return new RequestTracingFilter(); }
private RequestTracingFilter getBasicFilter() { RequestTracingFilter filter = new RequestTracingFilter(); try { filter.init(filterConfigMock); filter.tagAndNamingStrategy = tagAndNamingStrategy; filter.tagAndNamingAdapter = tagAndNamingAdapterMock; } catch (ServletException e) { throw new RuntimeException(e); } return filter; }
@Test public void getUserIdHeaderKeys_returns_userIdHeaderKeysFromInitParam_field() { // given RequestTracingFilter filter = new RequestTracingFilter(); List<String> expectedUserIdHeaderKeys = Arrays.asList(UUID.randomUUID().toString(), UUID.randomUUID().toString()); filter.userIdHeaderKeysFromInitParam = expectedUserIdHeaderKeys; // when List<String> result = filter.getUserIdHeaderKeys(); // then assertThat(result).isSameAs(expectedUserIdHeaderKeys); }
@Test public void destroy_does_nothing() { // given RequestTracingFilter filterSpy = spy(new RequestTracingFilter()); // when Throwable ex = catchThrowable(filterSpy::destroy); // then assertThat(ex).isNull(); verify(filterSpy).destroy(); verifyNoMoreInteractions(filterSpy); }
@Test public void getDefaultTagStrategy_delegates_to_getZipkinHttpTagStrategy() { // given RequestTracingFilter filterSpy = spy(new RequestTracingFilter()); HttpTagAndSpanNamingStrategy<HttpServletRequest, HttpServletResponse> zipkinStrategyMock = mock(HttpTagAndSpanNamingStrategy.class); doReturn(zipkinStrategyMock).when(filterSpy).getZipkinHttpTagStrategy(); // when HttpTagAndSpanNamingStrategy<HttpServletRequest, HttpServletResponse> result = filterSpy.getDefaultTagStrategy(); // then assertThat(result).isSameAs(zipkinStrategyMock); verify(filterSpy).getDefaultTagStrategy(); }
@Test public void init_method_delegates_to_helpers_to_initialize_fields() throws ServletException { // given RequestTracingFilter filterSpy = spy(new RequestTracingFilter()); List<String> expectedUserIdHeaderKeys = Arrays.asList(UUID.randomUUID().toString(), UUID.randomUUID().toString()); doReturn(expectedUserIdHeaderKeys).when(filterSpy).initializeUserIdHeaderKeys(any(FilterConfig.class)); doReturn(tagAndNamingStrategy).when(filterSpy).initializeTagAndNamingStrategy(any(FilterConfig.class)); doReturn(tagAndNamingAdapterMock).when(filterSpy).initializeTagAndNamingAdapter(any(FilterConfig.class)); // when filterSpy.init(filterConfigMock); // then assertThat(filterSpy.userIdHeaderKeysFromInitParam).isSameAs(expectedUserIdHeaderKeys); assertThat(filterSpy.tagAndNamingStrategy).isSameAs(tagAndNamingStrategy); assertThat(filterSpy.tagAndNamingAdapter).isSameAs(tagAndNamingAdapterMock); verify(filterSpy).init(filterConfigMock); verify(filterSpy).initializeUserIdHeaderKeys(filterConfigMock); verify(filterSpy).initializeTagAndNamingStrategy(filterConfigMock); verify(filterSpy).initializeTagAndNamingAdapter(filterConfigMock); verifyNoMoreInteractions(filterSpy); }
@Test public void getOpenTracingHttpTagStrategy_works_as_expected() { // given RequestTracingFilter filter = new RequestTracingFilter(); // expect assertThat(filter.getOpenTracingHttpTagStrategy()) .isNotNull() .isSameAs(OpenTracingHttpTagStrategy.getDefaultInstance()); }
@Test public void getZipkinHttpTagStrategy_works_as_expected() { // given RequestTracingFilter filter = new RequestTracingFilter(); // expect assertThat(filter.getZipkinHttpTagStrategy()) .isNotNull() .isSameAs(ZipkinHttpTagStrategy.getDefaultInstance()); }
@Test public void getNoOpTagStrategy_works_as_expected() { // given RequestTracingFilter filter = new RequestTracingFilter(); // expect assertThat(filter.getNoOpTagStrategy()) .isNotNull() .isSameAs(NoOpHttpTagStrategy.getDefaultInstance()); }
@Test public void getDefaultTagAdapter_works_as_expected() { // given RequestTracingFilter filter = new RequestTracingFilter(); // expect assertThat(filter.getDefaultTagAdapter()) .isNotNull() .isSameAs(ServletRequestTagAdapter.getDefaultInstance()); }
@Test @UseDataProvider("userIdHeaderKeysInitParamDataProvider") public void initializeUserIdHeaderKeys_gets_user_id_header_key_list_from_init_params( String userIdHeaderKeysInitParamValue, List<String> expectedUserIdHeaderKeysList ) { // given RequestTracingFilter filter = new RequestTracingFilter(); doReturn(userIdHeaderKeysInitParamValue) .when(filterConfigMock) .getInitParameter(RequestTracingFilter.USER_ID_HEADER_KEYS_LIST_INIT_PARAM_NAME); // when List<String> actualUserIdHeaderKeysList = filter.initializeUserIdHeaderKeys(filterConfigMock); // then assertThat(actualUserIdHeaderKeysList).isEqualTo(expectedUserIdHeaderKeysList); if (actualUserIdHeaderKeysList != null) { Exception caughtEx = null; try { actualUserIdHeaderKeysList.add("foo"); } catch (Exception ex) { caughtEx = ex; } assertThat(caughtEx).isNotNull(); assertThat(caughtEx).isInstanceOf(UnsupportedOperationException.class); } }
@DataProvider(value = { "true", "false" }) @Test public void getTagAdapterFromName_returns_expected_strategy_for_fully_qualified_classname( boolean useClassThatExists ) { // given RequestTracingFilter filter = new RequestTracingFilter(); String classname = (useClassThatExists) ? TagAdapterExtension.class.getName() : "foo.doesnotexist.BlahAdapter" + UUID.randomUUID().toString(); AtomicReference<HttpTagAndSpanNamingAdapter<HttpServletRequest, HttpServletResponse>> resultHolder = new AtomicReference<>(); // when Throwable ex = catchThrowable(() -> resultHolder.set(filter.getTagAdapterFromName(classname))); // then if (useClassThatExists) { assertThat(ex).isNull(); assertThat(resultHolder.get()) .isNotNull() .isInstanceOf(TagAdapterExtension.class); } else { assertThat(ex).isInstanceOf(ClassNotFoundException.class); assertThat(resultHolder.get()).isNull(); } }
@DataProvider(value = { "true", "false" }) @Test public void getTagStrategyFromName_returns_expected_strategy_for_fully_qualified_classname( boolean useClassThatExists ) { // given RequestTracingFilter filter = new RequestTracingFilter(); String classname = (useClassThatExists) ? TagStrategyExtension.class.getName() : "foo.doesnotexist.BlahStrategy" + UUID.randomUUID().toString(); AtomicReference<HttpTagAndSpanNamingStrategy<HttpServletRequest, HttpServletResponse>> resultHolder = new AtomicReference<>(); // when Throwable ex = catchThrowable(() -> resultHolder.set(filter.getTagStrategyFromName(classname))); // then if (useClassThatExists) { assertThat(ex).isNull(); assertThat(resultHolder.get()) .isNotNull() .isInstanceOf(TagStrategyExtension.class); } else { assertThat(ex).isInstanceOf(ClassNotFoundException.class); assertThat(resultHolder.get()).isNull(); } }
@DataProvider(value = { "null", "", " ", " \t\r\n " }) @Test public void getTagAdapterFromName_returns_default_adapter_if_passed_null_or_blank_string( String adapterName ) throws IllegalAccessException, InstantiationException, ClassNotFoundException { // given RequestTracingFilter filterSpy = spy(new RequestTracingFilter()); HttpTagAndSpanNamingAdapter<HttpServletRequest, HttpServletResponse> defaultAdapterMock = mock(HttpTagAndSpanNamingAdapter.class); doReturn(defaultAdapterMock).when(filterSpy).getDefaultTagAdapter(); // when HttpTagAndSpanNamingAdapter<HttpServletRequest, HttpServletResponse> result = filterSpy.getTagAdapterFromName(adapterName); // then assertThat(result).isSameAs(defaultAdapterMock); verify(filterSpy).getDefaultTagAdapter(); }
) throws IllegalAccessException, InstantiationException, ClassNotFoundException { RequestTracingFilter filterSpy = spy(new RequestTracingFilter());
) throws IllegalAccessException, InstantiationException, ClassNotFoundException { RequestTracingFilter filterSpy = spy(new RequestTracingFilter());
) throws IllegalAccessException, InstantiationException, ClassNotFoundException { RequestTracingFilter filterSpy = spy(new RequestTracingFilter()); HttpTagAndSpanNamingStrategy<HttpServletRequest, HttpServletResponse> zipkinStrategyMock = mock(HttpTagAndSpanNamingStrategy.class);
requestTracingFilter = new RequestTracingFilter();