@Test
  public void subscribeContextRequestOK() throws Exception {

    ngsiClient.protocolRegistry.registerHost(baseUrl, true);
    String responseBody = json(jsonConverter, createSubscribeContextResponseTemperature());

    this.mockServer
        .expect(requestTo(baseUrl + "/ngsi10/subscribeContext"))
        .andExpect(method(HttpMethod.POST))
        .andExpect(header("Content-Type", MediaType.APPLICATION_JSON_VALUE))
        .andExpect(header("Accept", MediaType.APPLICATION_JSON_VALUE))
        .andExpect(jsonPath("$.entities[*]", hasSize(1)))
        .andExpect(jsonPath("$.entities[0].id").value("Room1"))
        .andExpect(jsonPath("$.entities[0].type").value("Room"))
        .andExpect(jsonPath("$.entities[0].isPattern").value("false"))
        .andExpect(jsonPath("$.attributes[*]", hasSize(1)))
        .andExpect(jsonPath("$.attributes[0]").value("temperature"))
        .andExpect(jsonPath("$.reference").value("http://localhost:1028/accumulate"))
        .andExpect(jsonPath("$.duration").value("P1M"))
        .andRespond(withSuccess(responseBody, MediaType.APPLICATION_JSON));

    SubscribeContextResponse response =
        ngsiClient.subscribeContext(baseUrl, null, createSubscribeContextTemperature()).get();
    this.mockServer.verify();

    Assert.assertNull(response.getSubscribeError());
    Assert.assertEquals("12345678", response.getSubscribeResponse().getSubscriptionId());
    Assert.assertEquals("P1M", response.getSubscribeResponse().getDuration());
  }
  @Test
  public void subscribeContextRequestOK_XML() throws Exception {

    ngsiClient.protocolRegistry.unregisterHost(baseUrl);
    String responseBody = xml(xmlConverter, createSubscribeContextResponseTemperature());

    this.mockServer
        .expect(requestTo(baseUrl + "/ngsi10/subscribeContext"))
        .andExpect(method(HttpMethod.POST))
        .andExpect(header("Content-Type", MediaType.APPLICATION_XML_VALUE))
        .andExpect(header("Accept", MediaType.APPLICATION_XML_VALUE))
        .andExpect(xpath("subscribeContextRequest/entityIdList/*").nodeCount(1))
        .andExpect(xpath("subscribeContextRequest/entityIdList/entityId/id").string("Room1"))
        .andExpect(xpath("subscribeContextRequest/entityIdList/entityId/@type").string("Room"))
        .andExpect(
            xpath("subscribeContextRequest/entityIdList/entityId/@isPattern").string("false"))
        .andExpect(xpath("subscribeContextRequest/attributeList/*").nodeCount(1))
        .andExpect(xpath("subscribeContextRequest/attributeList/attribute").string("temperature"))
        .andExpect(
            xpath("subscribeContextRequest/reference").string("http://localhost:1028/accumulate"))
        .andExpect(xpath("subscribeContextRequest/duration").string("P1M"))
        .andRespond(withSuccess(responseBody, MediaType.APPLICATION_XML));

    SubscribeContextResponse response =
        ngsiClient.subscribeContext(baseUrl, null, createSubscribeContextTemperature()).get();
    this.mockServer.verify();

    Assert.assertNull(response.getSubscribeError());
    Assert.assertEquals("12345678", response.getSubscribeResponse().getSubscriptionId());
    Assert.assertEquals("P1M", response.getSubscribeResponse().getDuration());
  }
 private void callSuccessCallback(ArgumentCaptor<SuccessCallback> successArg) {
   SubscribeContextResponse response = new SubscribeContextResponse();
   SubscribeResponse subscribeResponse = new SubscribeResponse();
   subscribeResponse.setSubscriptionId("12345678");
   subscribeResponse.setDuration("PT1H");
   response.setSubscribeResponse(subscribeResponse);
   successArg.getValue().onSuccess(response);
 }