public void buildCalls(CougarMessageContentTypeEnum responseContentTypeEnum) {

      for (int i = 0; i < numberOfRequests + 1; i++) {
        // Setup call beans
        HttpCallBean callBean = new HttpCallBean();
        callBean.setServiceName("baseline", "cougarBaseline");
        callBean.setVersion("v2");
        callBean.setOperationName("testComplexMutator", "complex");

        Map<String, String> acceptProtocols = new HashMap<String, String>();
        switch (responseContentTypeEnum) {
          case JSON:
            acceptProtocols.put("application/json", "");
            break;
          case XML:
            acceptProtocols.put("application/xml", "");
            break;
        }
        callBean.setAcceptProtocols(acceptProtocols);

        String requestXmlString = "";
        requestXmlString =
            "<message><name>sum</name><value1> "
                + i
                + "</value1><value2>"
                + i
                + "</value2></message>";
        Document requestDocument = xHelpers.getXMLObjectFromString(requestXmlString);
        callBean.setRestPostQueryObjects(requestDocument);
        httpCallBeans.add(callBean);

        // Store expected responses
        HttpResponseBean responseBean = new HttpResponseBean();
        String responseXmlString =
            "<SimpleResponse><message>sum = " + i * 2 + "</message></SimpleResponse>";
        Document responseBaseObject = xHelpers.getXMLObjectFromString(responseXmlString);
        Map<CougarMessageProtocolRequestTypeEnum, Object> builtExpectedResponse =
            cougarManager.convertResponseToRestTypes(responseBaseObject, callBean);
        switch (responseContentTypeEnum) {
          case XML:
            responseBean.setResponseObject(
                builtExpectedResponse.get(CougarMessageProtocolRequestTypeEnum.RESTXML));
            break;
          case JSON:
            responseBean.setResponseObject(
                builtExpectedResponse.get(CougarMessageProtocolRequestTypeEnum.RESTJSON));
            break;
        }
        responseBean.setHttpStatusCode(OK_STATUS_CODE);
        responseBean.setHttpStatusText("OK");

        expectedResponses.put(identifier + RESPONSE + i, responseBean);
      }
    }
  @Test
  public void doTest() throws Exception {
    // Create the HttpCallBean
    CougarManager cougarManager1 = CougarManager.getInstance();
    HttpCallBean httpCallBeanBaseline = cougarManager1.getNewHttpCallBean();
    CougarManager cougarManagerBaseline = cougarManager1;
    // Get the cougar logging attribute for getting log entries later
    // Point the created HttpCallBean at the correct service
    httpCallBeanBaseline.setServiceName("baseline", "cougarBaseline");

    httpCallBeanBaseline.setVersion("v2");
    // Set up the Http Call Bean to make the request
    CougarManager cougarManager2 = CougarManager.getInstance();
    HttpCallBean getNewHttpCallBean2 = cougarManager2.getNewHttpCallBean("87.248.113.14");
    cougarManager2 = cougarManager2;

    cougarManager2.setCougarFaultControllerJMXMBeanAttrbiute("DetailedFaults", "false");

    getNewHttpCallBean2.setOperationName("testComplexMutator", "complex");

    getNewHttpCallBean2.setServiceName("baseline", "cougarBaseline");

    getNewHttpCallBean2.setVersion("v2");
    // Set the response protocols (with an unsupported protocol ranked highest)
    Map map3 = new HashMap();
    map3.put("application/text", "q=70");
    map3.put("application/image", "q=30");
    getNewHttpCallBean2.setAcceptProtocols(map3);

    getNewHttpCallBean2.setRestPostQueryObjects(
        DocumentBuilderFactory.newInstance()
            .newDocumentBuilder()
            .parse(
                new ByteArrayInputStream(
                    "<message><name>sum</name><value1>7</value1><value2>75</value2></message>"
                        .getBytes())));
    // Get current time for getting log entries later

    Timestamp getTimeAsTimeStamp10 = new Timestamp(System.currentTimeMillis());
    // Make the XML call to the operation
    cougarManager2.makeRestCougarHTTPCall(
        getNewHttpCallBean2,
        com.betfair.testing.utils.cougar.enums.CougarMessageProtocolRequestTypeEnum.RESTXML);
    // Create the expected response as an XML document
    XMLHelpers xMLHelpers5 = new XMLHelpers();
    Document createAsDocument12 =
        xMLHelpers5.getXMLObjectFromString(
            "<fault><faultcode>Client</faultcode><faultstring>DSC-0013</faultstring><detail/></fault>");
    // Convert the expected response to REST types
    Map<CougarMessageProtocolRequestTypeEnum, Object> convertResponseToRestTypes13 =
        cougarManager2.convertResponseToRestTypes(createAsDocument12, getNewHttpCallBean2);
    // Check the response is as expected (fault)
    HttpResponseBean getResponseObjectsByEnum14 =
        getNewHttpCallBean2.getResponseObjectsByEnum(
            com.betfair.testing.utils.cougar.enums.CougarMessageProtocolResponseTypeEnum.REST);
    AssertionUtils.multiAssertEquals(
        convertResponseToRestTypes13.get(CougarMessageProtocolRequestTypeEnum.RESTXML),
        getResponseObjectsByEnum14.getResponseObject());
    AssertionUtils.multiAssertEquals((int) 406, getResponseObjectsByEnum14.getHttpStatusCode());
    AssertionUtils.multiAssertEquals(
        "Not Acceptable", getResponseObjectsByEnum14.getHttpStatusText());

    Map<String, String> map7 = getResponseObjectsByEnum14.getResponseHeaders();
    AssertionUtils.multiAssertEquals("application/xml", map7.get("Content-Type"));
    // Check the log entries are as expected

    cougarManagerBaseline.verifyAccessLogEntriesAfterDate(
        getTimeAsTimeStamp10,
        new AccessLogRequirement(
            "87.248.113.14", "/cougarBaseline/v2/complex", "MediaTypeNotAcceptable"));
  }
  @Test
  public void v3() throws Exception {
    // Set up the Http Call Bean to make the baseline service request
    CougarManager cougarManager1 = CougarManager.getInstance();
    HttpCallBean getNewHttpCallBean1 = cougarManager1.getNewHttpCallBean();
    try {
      getNewHttpCallBean1.setOperationName("setHealthStatusInfo");

      getNewHttpCallBean1.setServiceName("baseline", "cougarBaseline");

      getNewHttpCallBean1.setVersion("v2");
      // Set the component statuses to be set (Including a FAIL status)
      getNewHttpCallBean1.setRestPostQueryObjects(
          DocumentBuilderFactory.newInstance()
              .newDocumentBuilder()
              .parse(
                  new ByteArrayInputStream(
                      "<message><initialiseHealthStatusObject>true</initialiseHealthStatusObject><serviceStatusDetail>FAIL</serviceStatusDetail><DBConnectionStatusDetail>WARN</DBConnectionStatusDetail><cacheAccessStatusDetail>OK</cacheAccessStatusDetail></message>"
                          .getBytes())));
      // Make the REST call to the set the health statuses
      cougarManager1.makeRestCougarHTTPCall(
          getNewHttpCallBean1,
          com.betfair.testing.utils.cougar.enums.CougarMessageProtocolRequestTypeEnum.RESTXML,
          com.betfair.testing.utils.cougar.enums.CougarMessageContentTypeEnum.XML);
      // Set up the Http Call Bean to make the healthcheck service request
      HttpCallBean getNewHttpCallBean7 = cougarManager1.getNewHttpCallBean();

      getNewHttpCallBean7.setOperationName("getDetailedHealthStatus", "detailed");

      getNewHttpCallBean7.setServiceName("healthcheck");

      getNewHttpCallBean7.setVersion("v3");

      getNewHttpCallBean7.setNameSpaceServiceName("Health");
      // Make the REST call to the get the health statuses from the health service
      cougarManager1.makeRestCougarHTTPCall(
          getNewHttpCallBean7,
          com.betfair.testing.utils.cougar.enums.CougarMessageProtocolRequestTypeEnum.RESTXML,
          com.betfair.testing.utils.cougar.enums.CougarMessageContentTypeEnum.XML);
      // Get the xml response and grab all the HealthDetail entries
      HttpResponseBean response3 =
          getNewHttpCallBean7.getResponseObjectsByEnum(
              com.betfair.testing.utils.cougar.enums.CougarMessageProtocolResponseTypeEnum
                  .RESTXMLXML);
      Document xmlResponse = (Document) response3.getResponseObject();
      AssertionUtils.multiAssertEquals((int) 200, response3.getHttpStatusCode());
      AssertionUtils.multiAssertEquals("OK", response3.getHttpStatusText());

      NodeList nodeList = xmlResponse.getElementsByTagName("HealthDetailResponse");
      Node healthDetailResponseNode = nodeList.item(0);
      // Get the HealthDetail entry for the Baseline service version 2.8
      XMLHelpers metaDataService = new XMLHelpers();
      // Get the subComponentList from the HealthDetail entry for Baseline
      Node baselineSubComponentList =
          metaDataService.getSpecifiedChildNode(healthDetailResponseNode, "subComponentList");
      // Get the Cache entry from the subComponentList and check the value of the status field is OK
      Node baselineCacheComponent =
          metaDataService.getNodeContainingSpecifiedChildNodeFromParent(
              baselineSubComponentList, "name", "Cache1");
      String status = metaDataService.getTextContentFromChildNode(baselineCacheComponent, "status");
      AssertionUtils.multiAssertEquals("OK", status);
      // Get the Service entry from the subComponentList and check the value of the status field is
      // FAIL
      Node baselineServiceComponent =
          metaDataService.getNodeContainingSpecifiedChildNodeFromParent(
              baselineSubComponentList, "name", "Service1");
      status = metaDataService.getTextContentFromChildNode(baselineServiceComponent, "status");
      AssertionUtils.multiAssertEquals("FAIL", status);
      // Get the DB entry from the subComponentList and check the value of the status field is WARN
      Node baselineDBComponent =
          metaDataService.getNodeContainingSpecifiedChildNodeFromParent(
              baselineSubComponentList, "name", "DB1");
      status = metaDataService.getTextContentFromChildNode(baselineDBComponent, "status");
      AssertionUtils.multiAssertEquals("WARN", status);
      // Get the health entry from the xml response and check the value is FAIL
      AssertionUtils.multiAssertEquals(
          "FAIL", metaDataService.getTextContentFromChildNode(healthDetailResponseNode, "health"));
    } finally {
      getNewHttpCallBean1 = cougarManager1.getNewHttpCallBean();
      getNewHttpCallBean1.setOperationName("setHealthStatusInfo");

      getNewHttpCallBean1.setServiceName("baseline", "cougarBaseline");

      getNewHttpCallBean1.setVersion("v2");
      // Set the component statuses to be set (Including a FAIL status)
      getNewHttpCallBean1.setRestPostQueryObjects(
          DocumentBuilderFactory.newInstance()
              .newDocumentBuilder()
              .parse(
                  new ByteArrayInputStream(
                      "<message><initialiseHealthStatusObject>true</initialiseHealthStatusObject><serviceStatusDetail>OK</serviceStatusDetail><DBConnectionStatusDetail>WARN</DBConnectionStatusDetail><cacheAccessStatusDetail>OK</cacheAccessStatusDetail></message>"
                          .getBytes())));
      // Make the REST call to the set the health statuses
      cougarManager1.makeRestCougarHTTPCall(
          getNewHttpCallBean1,
          com.betfair.testing.utils.cougar.enums.CougarMessageProtocolRequestTypeEnum.RESTXML,
          com.betfair.testing.utils.cougar.enums.CougarMessageContentTypeEnum.XML);
    }
  }
  @Test
  public void doTest() throws Exception {
    // Create the HttpCallBean
    CougarManager cougarManager1 = CougarManager.getInstance();
    HttpCallBean httpCallBeanBaseline = cougarManager1.getNewHttpCallBean();
    CougarManager cougarManagerBaseline = cougarManager1;
    // Get the cougar logging attribute for getting log entries later
    // Point the created HttpCallBean at the correct service
    httpCallBeanBaseline.setServiceName("baseline", "cougarBaseline");

    httpCallBeanBaseline.setVersion("v2");
    // Set up the Http Call Bean to make the request
    CougarManager cougarManager2 = CougarManager.getInstance();
    HttpCallBean getNewHttpCallBean2 = cougarManager2.getNewHttpCallBean("87.248.113.14");
    cougarManager2 = cougarManager2;

    cougarManager2.setCougarFaultControllerJMXMBeanAttrbiute("DetailedFaults", "false");

    getNewHttpCallBean2.setOperationName("i32Operation");

    getNewHttpCallBean2.setServiceName("baseline", "cougarBaseline");

    getNewHttpCallBean2.setVersion("v2");
    // Set the Integer header parameter to an out of range Integer
    Map map3 = new HashMap();
    map3.put("HeaderParam", "21474836470");
    getNewHttpCallBean2.setHeaderParams(map3);

    Map map4 = new HashMap();
    map4.put("queryParam", "43523434");
    getNewHttpCallBean2.setQueryParams(map4);

    getNewHttpCallBean2.setRestPostQueryObjects(
        DocumentBuilderFactory.newInstance()
            .newDocumentBuilder()
            .parse(
                new ByteArrayInputStream(
                    "<message><bodyParameter>-50</bodyParameter></message>".getBytes())));
    // Get current time for getting log entries later

    Timestamp getTimeAsTimeStamp11 = new Timestamp(System.currentTimeMillis());
    // Make the 4 REST calls to the operation
    cougarManager2.makeRestCougarHTTPCalls(getNewHttpCallBean2);
    // Create the expected response as an XML document (Fault)
    XMLHelpers xMLHelpers6 = new XMLHelpers();
    Document createAsDocument13 =
        xMLHelpers6.getXMLObjectFromString(
            "<fault><faultcode>Client</faultcode><faultstring>DSC-0009</faultstring><detail/></fault>");
    // Convert the expected response to REST types for comparison with actual responses
    Map<CougarMessageProtocolRequestTypeEnum, Object> convertResponseToRestTypes14 =
        cougarManager2.convertResponseToRestTypes(createAsDocument13, getNewHttpCallBean2);
    // Check the 4 responses are as expected (Bad Request)
    HttpResponseBean response7 =
        getNewHttpCallBean2.getResponseObjectsByEnum(
            com.betfair.testing.utils.cougar.enums.CougarMessageProtocolResponseTypeEnum
                .RESTXMLXML);
    AssertionUtils.multiAssertEquals(
        convertResponseToRestTypes14.get(CougarMessageProtocolRequestTypeEnum.RESTXML),
        response7.getResponseObject());
    AssertionUtils.multiAssertEquals((int) 400, response7.getHttpStatusCode());
    AssertionUtils.multiAssertEquals("Bad Request", response7.getHttpStatusText());

    HttpResponseBean response8 =
        getNewHttpCallBean2.getResponseObjectsByEnum(
            com.betfair.testing.utils.cougar.enums.CougarMessageProtocolResponseTypeEnum
                .RESTJSONJSON);
    AssertionUtils.multiAssertEquals(
        convertResponseToRestTypes14.get(CougarMessageProtocolRequestTypeEnum.RESTJSON),
        response8.getResponseObject());
    AssertionUtils.multiAssertEquals((int) 400, response8.getHttpStatusCode());
    AssertionUtils.multiAssertEquals("Bad Request", response8.getHttpStatusText());

    HttpResponseBean response9 =
        getNewHttpCallBean2.getResponseObjectsByEnum(
            com.betfair.testing.utils.cougar.enums.CougarMessageProtocolResponseTypeEnum
                .RESTXMLJSON);
    AssertionUtils.multiAssertEquals(
        convertResponseToRestTypes14.get(CougarMessageProtocolRequestTypeEnum.RESTJSON),
        response9.getResponseObject());
    AssertionUtils.multiAssertEquals((int) 400, response9.getHttpStatusCode());
    AssertionUtils.multiAssertEquals("Bad Request", response9.getHttpStatusText());

    HttpResponseBean response10 =
        getNewHttpCallBean2.getResponseObjectsByEnum(
            com.betfair.testing.utils.cougar.enums.CougarMessageProtocolResponseTypeEnum
                .RESTJSONXML);
    AssertionUtils.multiAssertEquals(
        convertResponseToRestTypes14.get(CougarMessageProtocolRequestTypeEnum.RESTXML),
        response10.getResponseObject());
    AssertionUtils.multiAssertEquals((int) 400, response10.getHttpStatusCode());
    AssertionUtils.multiAssertEquals("Bad Request", response10.getHttpStatusText());
    // Check the log entries are as expected

    CougarManager cougarManager12 = CougarManager.getInstance();
    cougarManager12.verifyAccessLogEntriesAfterDate(
        getTimeAsTimeStamp11,
        new AccessLogRequirement("87.248.113.14", "/cougarBaseline/v2/i32Operation", "BadRequest"),
        new AccessLogRequirement("87.248.113.14", "/cougarBaseline/v2/i32Operation", "BadRequest"),
        new AccessLogRequirement("87.248.113.14", "/cougarBaseline/v2/i32Operation", "BadRequest"),
        new AccessLogRequirement("87.248.113.14", "/cougarBaseline/v2/i32Operation", "BadRequest"));
  }
  @Test
  public void doTest() throws Exception {

    CougarManager cougarManager1 = CougarManager.getInstance();
    HttpCallBean getNewHttpCallBean1 = cougarManager1.getNewHttpCallBean("87.248.113.14");
    cougarManager1 = cougarManager1;

    getNewHttpCallBean1.setOperationName("TestSimpleMapGet", "simpleMapGet");

    getNewHttpCallBean1.setServiceName("baseline", "cougarBaseline");

    getNewHttpCallBean1.setVersion("v2");

    getNewHttpCallBean1.setRestPostQueryObjects(
        DocumentBuilderFactory.newInstance()
            .newDocumentBuilder()
            .parse(
                new ByteArrayInputStream(
                    "<inputMap><entry key=\"bbb\"><String>Value for bbb</String></entry><entry key=\"aaa\"><String>Value for aaa</String></entry><entry key=\"ddd\"></entry><entry key=\"ccc\"><String>Value for ccc</String></entry></inputMap>"
                        .getBytes())));

    Timestamp getTimeAsTimeStamp7 = new Timestamp(System.currentTimeMillis());

    cougarManager1.makeRestCougarHTTPCall(
        getNewHttpCallBean1,
        com.betfair.testing.utils.cougar.enums.CougarMessageProtocolRequestTypeEnum.RESTXML,
        com.betfair.testing.utils.cougar.enums.CougarMessageContentTypeEnum.XML);

    cougarManager1.makeRestCougarHTTPCall(
        getNewHttpCallBean1,
        com.betfair.testing.utils.cougar.enums.CougarMessageProtocolRequestTypeEnum.RESTXML,
        com.betfair.testing.utils.cougar.enums.CougarMessageContentTypeEnum.JSON);

    XMLHelpers xMLHelpers3 = new XMLHelpers();
    Document createAsDocument10 =
        xMLHelpers3.getXMLObjectFromString(
            "<TestSimpleMapGetResponse><entry key=\"aaa\"><String>Value for aaa</String></entry><entry key=\"ddd\"></entry><entry key=\"ccc\"><String>Value for ccc</String></entry><entry key=\"bbb\"><String>Value for bbb</String></entry></TestSimpleMapGetResponse>");

    JSONHelpers jSONHelpers4 = new JSONHelpers();
    JSONObject createAsJSONObject11 =
        jSONHelpers4.createAsJSONObject(
            new JSONObject(
                "{\"aaa\": \"Value for aaa\",\"bbb\": \"Value for bbb\",\"ccc\": \"Value for ccc\",\"ddd\": null}"));

    HttpResponseBean response5 =
        getNewHttpCallBean1.getResponseObjectsByEnum(
            com.betfair.testing.utils.cougar.enums.CougarMessageProtocolResponseTypeEnum
                .RESTXMLXML);
    AssertionUtils.multiAssertEquals(createAsDocument10, response5.getResponseObject());
    AssertionUtils.multiAssertEquals((int) 200, response5.getHttpStatusCode());
    AssertionUtils.multiAssertEquals("OK", response5.getHttpStatusText());

    HttpResponseBean response6 =
        getNewHttpCallBean1.getResponseObjectsByEnum(
            com.betfair.testing.utils.cougar.enums.CougarMessageProtocolResponseTypeEnum
                .RESTXMLJSON);
    AssertionUtils.multiAssertEquals(createAsJSONObject11, response6.getResponseObject());
    AssertionUtils.multiAssertEquals((int) 200, response6.getHttpStatusCode());
    AssertionUtils.multiAssertEquals("OK", response6.getHttpStatusText());

    // generalHelpers.pauseTest(500L);

    cougarManager1.verifyRequestLogEntriesAfterDate(
        getTimeAsTimeStamp7,
        new RequestLogRequirement("2.8", "testSimpleMapGet"),
        new RequestLogRequirement("2.8", "testSimpleMapGet"));
  }
  @Test
  public void doTest() throws Exception {
    // Create the HttpCallBean
    CougarManager cougarManager1 = CougarManager.getInstance();
    HttpCallBean httpCallBeanBaseline = cougarManager1.getNewHttpCallBean();
    CougarManager cougarManagerBaseline = cougarManager1;
    // Get the cougar logging attribute for getting log entries later
    // Point the created HttpCallBean at the correct service
    httpCallBeanBaseline.setServiceName("baseline", "cougarBaseline");

    httpCallBeanBaseline.setVersion("v2");
    // Set up the Http Call Bean to make the request
    CougarManager cougarManager2 = CougarManager.getInstance();
    HttpCallBean getNewHttpCallBean2 = cougarManager2.getNewHttpCallBean("87.248.113.14");
    cougarManager2 = cougarManager2;

    cougarManager2.setCougarFaultControllerJMXMBeanAttrbiute("DetailedFaults", "false");

    getNewHttpCallBean2.setOperationName("floatOperation");

    getNewHttpCallBean2.setServiceName("baseline", "cougarBaseline");

    getNewHttpCallBean2.setVersion("v2");

    Map map3 = new HashMap();
    map3.put("HeaderParam", "5.43");
    getNewHttpCallBean2.setHeaderParams(map3);

    Map map4 = new HashMap();
    map4.put("queryParam", "3455.54");
    getNewHttpCallBean2.setQueryParams(map4);
    // Set the Float body parameter as a non Float
    getNewHttpCallBean2.setRestPostQueryObjects(
        DocumentBuilderFactory.newInstance()
            .newDocumentBuilder()
            .parse(
                new ByteArrayInputStream(
                    "<message><bodyParameter>dfdsfsf</bodyParameter></message>".getBytes())));
    // Get current time for getting log entries later

    Timestamp getTimeAsTimeStamp11 = new Timestamp(System.currentTimeMillis());
    // Make the 4 REST calls to the operation
    cougarManager2.makeRestCougarHTTPCalls(getNewHttpCallBean2);
    // Create the expected response to XML requests as an XML document (XML Fault)
    XMLHelpers xMLHelpers6 = new XMLHelpers();
    Document createAsDocument13 =
        xMLHelpers6.getXMLObjectFromString(
            "<fault><faultcode>Client</faultcode><faultstring>DSC-0044</faultstring><detail/></fault>");
    // Create the expected response to JSON requests as an XML document (JSON Fault)
    XMLHelpers xMLHelpers7 = new XMLHelpers();
    Document createAsDocument14 =
        xMLHelpers7.getXMLObjectFromString(
            "<fault><faultcode>Client</faultcode><faultstring>DSC-0044</faultstring><detail/></fault>");
    // Convert expected response to XML requests to JSON object
    JSONHelpers jSONHelpers8 = new JSONHelpers();
    JSONObject convertXMLDocumentToJSONObjectRemoveRootElement15 =
        jSONHelpers8.convertXMLDocumentToJSONObjectRemoveRootElement(createAsDocument13);
    // Convert expected response to JSON requests to JSON object
    JSONHelpers jSONHelpers9 = new JSONHelpers();
    JSONObject convertXMLDocumentToJSONObjectRemoveRootElement16 =
        jSONHelpers9.convertXMLDocumentToJSONObjectRemoveRootElement(createAsDocument14);
    // Check the 4 responses are as expected (Bad Request)
    HttpResponseBean response10 =
        getNewHttpCallBean2.getResponseObjectsByEnum(
            com.betfair.testing.utils.cougar.enums.CougarMessageProtocolResponseTypeEnum
                .RESTXMLXML);
    AssertionUtils.multiAssertEquals(createAsDocument13, response10.getResponseObject());
    AssertionUtils.multiAssertEquals((int) 400, response10.getHttpStatusCode());
    AssertionUtils.multiAssertEquals("Bad Request", response10.getHttpStatusText());

    HttpResponseBean response11 =
        getNewHttpCallBean2.getResponseObjectsByEnum(
            com.betfair.testing.utils.cougar.enums.CougarMessageProtocolResponseTypeEnum
                .RESTJSONJSON);
    AssertionUtils.multiAssertEquals(
        convertXMLDocumentToJSONObjectRemoveRootElement16, response11.getResponseObject());
    AssertionUtils.multiAssertEquals((int) 400, response11.getHttpStatusCode());
    AssertionUtils.multiAssertEquals("Bad Request", response11.getHttpStatusText());

    HttpResponseBean response12 =
        getNewHttpCallBean2.getResponseObjectsByEnum(
            com.betfair.testing.utils.cougar.enums.CougarMessageProtocolResponseTypeEnum
                .RESTXMLJSON);
    AssertionUtils.multiAssertEquals(
        convertXMLDocumentToJSONObjectRemoveRootElement15, response12.getResponseObject());
    AssertionUtils.multiAssertEquals((int) 400, response12.getHttpStatusCode());
    AssertionUtils.multiAssertEquals("Bad Request", response12.getHttpStatusText());

    HttpResponseBean response13 =
        getNewHttpCallBean2.getResponseObjectsByEnum(
            com.betfair.testing.utils.cougar.enums.CougarMessageProtocolResponseTypeEnum
                .RESTJSONXML);
    AssertionUtils.multiAssertEquals(createAsDocument14, response13.getResponseObject());
    AssertionUtils.multiAssertEquals((int) 400, response13.getHttpStatusCode());
    AssertionUtils.multiAssertEquals("Bad Request", response13.getHttpStatusText());
    // Check the log entries are as expected

    CougarManager cougarManager15 = CougarManager.getInstance();
    cougarManager15.verifyAccessLogEntriesAfterDate(
        getTimeAsTimeStamp11,
        new AccessLogRequirement(
            "87.248.113.14", "/cougarBaseline/v2/floatOperation", "BadRequest"),
        new AccessLogRequirement(
            "87.248.113.14", "/cougarBaseline/v2/floatOperation", "BadRequest"),
        new AccessLogRequirement(
            "87.248.113.14", "/cougarBaseline/v2/floatOperation", "BadRequest"),
        new AccessLogRequirement(
            "87.248.113.14", "/cougarBaseline/v2/floatOperation", "BadRequest"));
  }
  @Test
  public void doTest() throws Exception {
    // Set up the Http Call Bean to make the request
    CougarManager cougarManager1 = CougarManager.getInstance();
    HttpCallBean getNewHttpCallBean1 = cougarManager1.getNewHttpCallBean("87.248.113.14");
    cougarManager1 = cougarManager1;

    getNewHttpCallBean1.setOperationName("complexMapOperation");

    getNewHttpCallBean1.setServiceName("baseline", "cougarBaseline");

    getNewHttpCallBean1.setVersion("v2");
    // Instruct cougar to use a delegate to populate the complex response object
    getNewHttpCallBean1.setRestPostQueryObjects(
        DocumentBuilderFactory.newInstance()
            .newDocumentBuilder()
            .parse(
                new ByteArrayInputStream(
                    "<message><complexMap><entry key=\"DELEGATE\"><SomeComplexObject/></entry></complexMap></message>"
                        .getBytes())));
    // Get current time for getting log entries later

    Timestamp getTimeAsTimeStamp7 = new Timestamp(System.currentTimeMillis());
    // Make the XML call to the operation with XML response type
    cougarManager1.makeRestCougarHTTPCall(
        getNewHttpCallBean1,
        com.betfair.testing.utils.cougar.enums.CougarMessageProtocolRequestTypeEnum.RESTXML,
        com.betfair.testing.utils.cougar.enums.CougarMessageContentTypeEnum.XML);
    // Make the XML call to the operation with JSON response type
    cougarManager1.makeRestCougarHTTPCall(
        getNewHttpCallBean1,
        com.betfair.testing.utils.cougar.enums.CougarMessageProtocolRequestTypeEnum.RESTXML,
        com.betfair.testing.utils.cougar.enums.CougarMessageContentTypeEnum.JSON);
    // Create date object expected to be received in response object

    String date =
        TimingHelpers.convertUTCDateTimeToCougarFormat(
            (int) 1970, (int) 1, (int) 1, (int) 0, (int) 1, (int) 52, (int) 233);
    // Create the expected response as an XML document (using date just created)
    XMLHelpers xMLHelpers4 = new XMLHelpers();
    Document expectedResponseXML =
        xMLHelpers4.createAsDocument(
            DocumentBuilderFactory.newInstance()
                .newDocumentBuilder()
                .parse(
                    new ByteArrayInputStream(
                        ("<ComplexMapOperationResponse><ComplexMapOperationResponseObject><responseMap><entry key=\"object1\"><SomeComplexObject><dateTimeParameter>"
                                + date
                                + "</dateTimeParameter><listParameter><String>item1</String><String>item2</String></listParameter><enumParameter>BAR</enumParameter><stringParameter>delegate1</stringParameter></SomeComplexObject></entry><entry key=\"object2\"><SomeComplexObject><dateTimeParameter>"
                                + date
                                + "</dateTimeParameter><listParameter><String>item1</String><String>item2</String></listParameter><enumParameter>BAR</enumParameter><stringParameter>delegate2</stringParameter></SomeComplexObject></entry><entry key=\"object3\"><SomeComplexObject><dateTimeParameter>"
                                + date
                                + "</dateTimeParameter><listParameter><String>item1</String><String>item2</String></listParameter><enumParameter>BAR</enumParameter><stringParameter>delegate3</stringParameter></SomeComplexObject></entry></responseMap></ComplexMapOperationResponseObject></ComplexMapOperationResponse>")
                            .getBytes())));
    // Create the expected response as an JSON document (using date just created)
    JSONHelpers jSONHelpers5 = new JSONHelpers();
    JSONObject expectedResponseJSON =
        jSONHelpers5.createAsJSONObject(
            new JSONObject(
                "{responseMap:{object1:{dateTimeParameter:\""
                    + date
                    + "\",listParameter:[item1,item2],enumParameter:\"BAR\",stringParameter:\"delegate1\"},object2:{dateTimeParameter:\""
                    + date
                    + "\",listParameter:[item1,item2],enumParameter:\"BAR\",stringParameter:\"delegate2\"},object3:{dateTimeParameter:\""
                    + date
                    + "\",listParameter:[item1,item2],enumParameter:\"BAR\",stringParameter:\"delegate3\"}}}"));
    // Check the XML response is as expected
    HttpResponseBean response6 =
        getNewHttpCallBean1.getResponseObjectsByEnum(
            com.betfair.testing.utils.cougar.enums.CougarMessageProtocolResponseTypeEnum
                .RESTXMLXML);
    AssertionUtils.multiAssertEquals(expectedResponseXML, response6.getResponseObject());
    AssertionUtils.multiAssertEquals((int) 200, response6.getHttpStatusCode());
    AssertionUtils.multiAssertEquals("OK", response6.getHttpStatusText());
    // Check the JSON response is as expected
    HttpResponseBean response7 =
        getNewHttpCallBean1.getResponseObjectsByEnum(
            com.betfair.testing.utils.cougar.enums.CougarMessageProtocolResponseTypeEnum
                .RESTXMLJSON);
    AssertionUtils.multiAssertEquals(expectedResponseJSON, response7.getResponseObject());
    AssertionUtils.multiAssertEquals((int) 200, response7.getHttpStatusCode());
    AssertionUtils.multiAssertEquals("OK", response7.getHttpStatusText());

    // generalHelpers.pauseTest(500L);
    // Check the log entries are as expected

    cougarManager1.verifyRequestLogEntriesAfterDate(
        getTimeAsTimeStamp7,
        new RequestLogRequirement("2.8", "complexMapOperation"),
        new RequestLogRequirement("2.8", "complexMapOperation"));
  }