@Test public void constructor_sets_modifiableHeaders_to_a_mutable_copy_of_given_request_headers() { // given HttpHeaders immutableHeaders = generateImmutableHeaders( MapBuilder.builder("foo", singletonList(UUID.randomUUID().toString())) .put("bar", Arrays.asList(UUID.randomUUID().toString(), UUID.randomUUID().toString())) .build() ); doReturn(immutableHeaders).when(requestMock).getHeaders(); verifyImmutableHeaders(immutableHeaders); // when HttpRequestWrapperWithModifiableHeaders wrapper = new HttpRequestWrapperWithModifiableHeaders(requestMock); verify(requestMock).getHeaders(); // The constructor should have called requestMock.getHeaders() // then HttpHeaders wrapperHeaders = wrapper.getHeaders(); assertThat(wrapperHeaders).isSameAs(wrapper.modifiableHeaders); // The call to wrapper.getHeaders() should not have called requestMock.getHeaders() verifyNoMoreInteractions(requestMock); // Instead we should get back some headers that are equal to requestMock's headers, but mutable. assertThat(wrapperHeaders).isEqualTo(immutableHeaders); verifyMutableHeaders(wrapperHeaders); }