@Test
  public void testConfigureHandlerInterceptor() throws Exception {
    List<Object> interceptors = new ArrayList<Object>();
    interceptors.add(new LoggingHandlerInterceptor());

    reset(httpServer);

    expect(httpServer.getInterceptors()).andReturn(interceptors).once();
    expect(httpServer.getEndpointAdapter()).andReturn(null).once();
    expect(httpServer.getMessageConverter()).andReturn(new HttpMessageConverter()).once();
    expect(httpServer.getWebSockets()).andReturn(new ArrayList<WebSocketEndpoint>()).once();

    replay(httpServer);

    servlet.initStrategies(applicationContext);

    Assert.assertEquals(handlerInterceptor.getInterceptors().size(), 1L);
    Assert.assertEquals(handlerInterceptor.getInterceptors().get(0), interceptors.get(0));
    Assert.assertNotNull(httpMessageController.getEndpointConfiguration().getMessageConverter());

    Assert.assertEquals(
        httpMessageController.getEndpointAdapter().getClass(), EmptyResponseEndpointAdapter.class);

    verify(httpServer);
  }
  @Test
  public void testNoBeansInContext() throws Exception {
    reset(httpServer);

    expect(httpServer.getWebSockets()).andReturn(new ArrayList<WebSocketEndpoint>()).once();

    replay(httpServer);

    GenericApplicationContext applicationContext = new GenericApplicationContext();
    applicationContext.refresh();

    servlet.initStrategies(applicationContext);

    verify(httpServer);
  }
  @Test
  public void testConfigureMessageController() throws Exception {
    reset(httpServer);

    expect(httpServer.getInterceptors()).andReturn(null).once();
    expect(httpServer.getEndpointAdapter()).andReturn(new TimeoutProducingEndpointAdapter()).once();
    expect(httpServer.getMessageConverter()).andReturn(new HttpMessageConverter()).once();
    expect(httpServer.getWebSockets()).andReturn(new ArrayList<WebSocketEndpoint>()).once();

    replay(httpServer);

    servlet.initStrategies(applicationContext);

    Assert.assertEquals(handlerInterceptor.getInterceptors().size(), 0L);
    Assert.assertEquals(
        httpMessageController.getEndpointAdapter().getClass(),
        TimeoutProducingEndpointAdapter.class);
    Assert.assertNotNull(httpMessageController.getEndpointConfiguration().getMessageConverter());

    verify(httpServer);
  }
  @Test
  public void testConfigureWebSockerHandler() throws Exception {
    WebSocketEndpoint wsEndpoint = EasyMock.createMock(WebSocketEndpoint.class);
    WebSocketEndpointConfiguration wsEndpointConfig =
        EasyMock.createMock(WebSocketEndpointConfiguration.class);
    String wsId = "wsId";
    String endpointUri = "someEndpointUri";

    List<WebSocketEndpoint> webSockets = new ArrayList<>();
    webSockets.add(wsEndpoint);

    reset(httpServer);

    expect(httpServer.getInterceptors()).andReturn(null).once();
    expect(httpServer.getEndpointAdapter()).andReturn(null).once();
    expect(httpServer.getMessageConverter()).andReturn(new HttpMessageConverter()).once();
    expect(httpServer.getWebSockets()).andReturn(webSockets).once();

    expect(wsEndpoint.getEndpointConfiguration()).andReturn(wsEndpointConfig).once();
    expect(wsEndpoint.getName()).andReturn(wsId).once();
    wsEndpoint.setWebSocketHandler(isA(CitrusWebSocketHandler.class));

    expect(wsEndpointConfig.getEndpointUri()).andReturn(endpointUri).once();

    replay(httpServer);
    replay(wsEndpoint);
    replay(wsEndpointConfig);

    servlet.initStrategies(applicationContext);

    Map<String, ?> urlMap = urlHandlerMapping.getUrlMap();
    Assert.assertEquals(urlMap.size(), 1);
    Assert.assertTrue(urlMap.containsKey(endpointUri));
    Assert.assertNotNull(urlMap.get(endpointUri));

    verify(httpServer);
    verify(wsEndpoint);
    verify(wsEndpointConfig);
  }