Java tutorial
/* * Copyright 2013, The Sporting Exchange Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.betfair.testing.utils.cougar.manager; import com.betfair.testing.utils.cougar.beans.HttpCallBean; import com.betfair.testing.utils.cougar.callmaker.AbstractCallMaker; import com.betfair.testing.utils.cougar.callmaker.*; import com.betfair.testing.utils.cougar.enums.*; import com.betfair.testing.utils.cougar.helpers.CougarHelpers; import org.apache.http.Header; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.entity.StringEntity; import org.junit.Test; import org.junit.runner.RunWith; import org.w3c.dom.Document; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.util.HashMap; import java.util.List; import java.util.Map; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNull; public class CougarManagerTest { private CougarManager cougarManager = CougarManager.getInstance(); private CougarHelpers cougarHelpers = new CougarHelpers(); private CougarTestDAO cougarTestDAO = new CougarTestDAO(); public CougarManagerTest() { cougarHelpers.setCougarDAO(cougarTestDAO); cougarManager.setCougarHelpers(cougarHelpers); RestJSONCallMaker restJSONCallMaker = new RestJSONCallMaker(); restJSONCallMaker.setCougarHelpers(cougarHelpers); RestXMLCallMaker restXMLCallMaker = new RestXMLCallMaker(); restXMLCallMaker.setCougarHelpers(cougarHelpers); SoapCallMaker soapXMLCallMaker = new SoapCallMaker(); Map<CougarMessageProtocolRequestTypeEnum, AbstractCallMaker> requestBuilderMap = new HashMap<CougarMessageProtocolRequestTypeEnum, AbstractCallMaker>(); requestBuilderMap.put(CougarMessageProtocolRequestTypeEnum.RESTJSON, restJSONCallMaker); requestBuilderMap.put(CougarMessageProtocolRequestTypeEnum.RESTXML, restXMLCallMaker); requestBuilderMap.put(CougarMessageProtocolRequestTypeEnum.SOAP, soapXMLCallMaker); CallMakerFactory.setRequestBuilderMap(requestBuilderMap); } @Test public void sendPostRestRequest_Test() throws ParserConfigurationException, SAXException, IOException { String POSTQUERY = "<ComplexObject><name>sum</name><value1>7</value1><value2>75</value2></ComplexObject>"; //String expRestXMLRequestBody = "<ComplexObject xmlns=\"http://www.betfair.com/servicetypes/v2/Baseline/\"><name>sum</name><value1>7</value1><value2>75</value2></ComplexObject>"; String operationName = "someOperation"; String requestWrapper = "SomeOperationRequest"; String expRestXMLRequestBody = "<" + requestWrapper + " xmlns=\"http://www.betfair.com/servicetypes/v2/Baseline/\"><complexObject><name>sum</name><value1>7</value1><value2>75</value2></complexObject></" + requestWrapper + ">"; //String expRestJSONRequestBody = "{\"name\":\"sum\",\"value1\":7,\"value2\":75}" ; String expRestJSONRequestBody = "{\"complexObject\":{\"name\":\"sum\",\"value1\":7,\"value2\":75}}"; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new InputSource(new StringReader(POSTQUERY))); HttpCallBean httpCallBean = new HttpCallBean(); httpCallBean.setOperationName(operationName); httpCallBean.setServiceName("Baseline"); httpCallBean.setVersion("v2"); httpCallBean.setQueryParams(null); httpCallBean.setHeaderParams(null); httpCallBean.setRestPostQueryObjects(document); cougarManager.makeRestCougarHTTPCalls(httpCallBean); List<HttpUriRequest> methodsSent = cougarTestDAO.methods; HttpPost methodSent; methodSent = (HttpPost) methodsSent.get(0); assertNull(methodSent.getURI().getQuery()); assertEquals("/Baseline/v2/" + operationName, methodSent.getURI().getPath()); Header[] headers = methodSent.getAllHeaders(); assertEquals(4, headers.length); assertEquals("Content-Type: application/json", String.valueOf(headers[0])); assertEquals("User-Agent: java/socket", String.valueOf(headers[1])); assertEquals("Accept: application/json", String.valueOf(headers[2])); //Changed this from 37... //assertEquals("Content-Length: 55", String.valueOf(headers[3])); assertEquals("X-Forwarded-For: 87.248.113.14", String.valueOf(headers[3])); StringEntity stringRequestEntity = (StringEntity) methodSent.getEntity(); InputStream inputStream = stringRequestEntity.getContent(); byte[] buffer = new byte[inputStream.available()]; int offset = 0; int read; while ((read = inputStream.read(buffer, offset, inputStream.available())) != -1) { offset += read; } assertEquals(expRestJSONRequestBody, new String(buffer, "UTF-8")); methodSent = (HttpPost) methodsSent.get(2); assertNull(methodSent.getURI().getQuery()); assertEquals("/Baseline/v2/" + operationName, methodSent.getURI().getPath()); headers = methodSent.getAllHeaders(); assertEquals(4, headers.length); stringRequestEntity = (StringEntity) methodSent.getEntity(); inputStream = stringRequestEntity.getContent(); buffer = new byte[inputStream.available()]; offset = 0; while ((read = inputStream.read(buffer, offset, inputStream.available())) != -1) { offset += read; } assertEquals(expRestXMLRequestBody, new String(buffer, "UTF-8")); assertEquals("Content-Type: application/xml", String.valueOf(headers[0])); assertEquals("User-Agent: java/socket", String.valueOf(headers[1])); assertEquals("Accept: application/xml", String.valueOf(headers[2])); //assertEquals("Content-Length: 141", String.valueOf(headers[3])); //assertEquals("Content-Length: 186", String.valueOf(headers[3])); assertEquals("X-Forwarded-For: 87.248.113.14", String.valueOf(headers[3])); } @Test public void sendGetRestRequest_Test() throws ParserConfigurationException, SAXException, IOException { Document document = null; HttpCallBean httpCallBean = new HttpCallBean(); httpCallBean.setOperationName("complex"); httpCallBean.setServiceName("rest"); httpCallBean.setVersion("v2"); Map<String, String> queryParams = new HashMap<String, String>(); queryParams.put("queryParam", "qp1"); httpCallBean.setQueryParams(queryParams); HashMap<String, String> headerParams = new HashMap<String, String>(); headerParams.put("HeaderParam", "hp1"); httpCallBean.setHeaderParams(headerParams); httpCallBean.setRestPostQueryObjects(document); cougarManager.makeRestCougarHTTPCalls(httpCallBean); List<HttpUriRequest> methodsSent = cougarTestDAO.methods; HttpGet methodSent; methodSent = (HttpGet) methodsSent.get(0); assertEquals("queryParam=qp1", methodSent.getURI().getQuery()); assertEquals("/rest/v2/complex", methodSent.getURI().getPath()); Header[] headers = methodSent.getAllHeaders(); assertEquals(5, headers.length); assertEquals("Content-Type: application/json", String.valueOf(headers[0])); assertEquals("User-Agent: java/socket", String.valueOf(headers[1])); assertEquals("Accept: application/json", String.valueOf(headers[2])); assertEquals("HeaderParam: hp1", String.valueOf(headers[3])); assertEquals("X-Forwarded-For: 87.248.113.14", String.valueOf(headers[4])); methodSent = (HttpGet) methodsSent.get(2); assertEquals("queryParam=qp1", methodSent.getURI().getQuery()); assertEquals("/rest/v2/complex", methodSent.getURI().getPath()); headers = methodSent.getAllHeaders(); assertEquals(5, headers.length); assertEquals("Content-Type: application/xml", String.valueOf(headers[0])); assertEquals("User-Agent: java/socket", String.valueOf(headers[1])); assertEquals("Accept: application/xml", String.valueOf(headers[2])); assertEquals("HeaderParam: hp1", String.valueOf(headers[3])); assertEquals("X-Forwarded-For: 87.248.113.14", String.valueOf(headers[4])); } @Test public void sortMapArrayByServiceVersion_Test() { Map<String, Object>[] mapArray = new HashMap[5]; int[] insertOrder = new int[] { 3, 1, 4, 0, 2 }; for (int i = 0; i < mapArray.length; i++) { Map<String, Object> map = new HashMap<String, Object>(); map.put("ServiceVersion", Double.valueOf(i)); map.put("Operation", "testSimpleGet" + i); mapArray[insertOrder[i]] = map; } mapArray = cougarManager.sortRequestLogEntriesByServiceVersion(mapArray); for (int i = 0; i < mapArray.length; i++) { assertEquals("testSimpleGet" + i, mapArray[i].get("Operation")); assertEquals(Double.valueOf(i), mapArray[i].get("ServiceVersion")); } } }