package com.telefonica.euro_iaas.placement.rest;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.Reader;
import javax.ws.rs.core.MediaType;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import org.dmtf.schemas.ovf.envelope._1.EnvelopeType;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.web.client.RestTemplate;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import com.telefonica.schemas.nuba_model.exp.ArrayCIMUserEntityType;
import com.telefonica.schemas.nuba_model.exp.CIMUserEntityType;
import com.telefonica.schemas.tcloud._1.InstantiateOvfParamsType;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:restTemplateContext.xml"})
public class RestClientTest {
private static final String OVF_URL_LIST = "http://127.0.0.1:8892/placement/api/org/1/vdc/1/action/ovflistprovidermapping";
private static final String OVF_URL_BEST = "http://127.0.0.1:8892/placement/api/org/1/vdc/1/action/ovfprovidermapping";
private static final String OVF_TEST = "DescriptorOVFtest.xml";
private static final String TCLOUD_URL_LIST = "http://127.0.0.1:8892/placement/api/org/1/vdc/1/action/listprovidermapping";
private static final String TCLOUD_URL_BEST = "http://127.0.0.1:8892/placement/api/org/1/vdc/1/action/providermapping";
private static final String TCLOUD_TEST = "DemoService01.xml";
@Autowired
RestTemplate restTemplate;
@Before
public void setup(){
}
@Test
public void testListProviderMappingJersey() throws JAXBException{
Reader reader = new BufferedReader(new InputStreamReader(
getClass().getClassLoader().getResourceAsStream(
TCLOUD_TEST)));
// JAXBContext context = JAXBContext.newInstance(InstantiateOvfParamsType.class);
JAXBContext context = JAXBContext.newInstance("com.telefonica.schemas.tcloud._1");
Unmarshaller unmarshaller = context.createUnmarshaller();
JAXBElement<InstantiateOvfParamsType> obj = (JAXBElement<InstantiateOvfParamsType>) unmarshaller.unmarshal( reader );
//InstantiateOvfParamsType instantiateOvfParamsType = (InstantiateOvfParamsType) obj.getValue();
Client c = Client.create();
WebResource r = c.resource(TCLOUD_URL_LIST);
//String request = "content";
ArrayCIMUserEntityType response = r.accept(MediaType.APPLICATION_XML_TYPE).
type(MediaType.APPLICATION_XML_TYPE).
post(ArrayCIMUserEntityType.class, obj);
System.out.println("response testListProviderMappingJersey->" + response);
System.out.println(" length: " + response.getCIMUserEntityType().size());
for (CIMUserEntityType user: response.getCIMUserEntityType()){
System.out.println(" user: " + user.getElementName().getValue());
System.out.println(" user url: " + user.getURLDRP());
}
}
@Test
public void testOVFListProviderMappingJersey() throws JAXBException{
Reader reader = new BufferedReader(new InputStreamReader(
getClass().getClassLoader().getResourceAsStream(
OVF_TEST)));
JAXBContext context = JAXBContext.newInstance(EnvelopeType.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
JAXBElement<EnvelopeType> obj = (JAXBElement<EnvelopeType>) unmarshaller.unmarshal( reader );
EnvelopeType envelope = (EnvelopeType) obj.getValue();
Client c = Client.create();
WebResource r = c.resource(OVF_URL_LIST);
String request = "content";
ArrayCIMUserEntityType response = r.accept(MediaType.APPLICATION_XML_TYPE).
type(MediaType.APPLICATION_XML_TYPE).
post(ArrayCIMUserEntityType.class, obj);
System.out.println("response" + response);
System.out.println("length: " + response.getCIMUserEntityType().size());
}
@Test
public void testOVFProviderMappingJersey() throws JAXBException{
Reader reader = new BufferedReader(new InputStreamReader(
getClass().getClassLoader().getResourceAsStream(
OVF_TEST)));
JAXBContext context = JAXBContext.newInstance(EnvelopeType.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
JAXBElement<EnvelopeType> obj = (JAXBElement<EnvelopeType>) unmarshaller.unmarshal( reader );
EnvelopeType envelope = (EnvelopeType) obj.getValue();
Client c = Client.create();
WebResource r = c.resource(OVF_URL_BEST);
String request = "content";
CIMUserEntityType response = r.accept(MediaType.APPLICATION_XML_TYPE).
type(MediaType.APPLICATION_XML_TYPE).
post(CIMUserEntityType.class, obj);
System.out.println("response testOVFProviderMappingJersey ->" + response + " is: " + response.getId() + " url: " + response.getURLDRP());
}
/*
@Test
public void testListProviderMapping() throws JAXBException{
Reader reader = new BufferedReader(new InputStreamReader(
getClass().getClassLoader().getResourceAsStream(
OVF_TEST)));
JAXBContext context = JAXBContext.newInstance(EnvelopeType.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
JAXBElement<EnvelopeType> obj = (JAXBElement<EnvelopeType>) unmarshaller.unmarshal( reader );
EnvelopeType envelope = (EnvelopeType) obj.getValue();
//EnvelopeType envelope = (EnvelopeType)unmarshaller.unmarshal(reader);
CloudProviderList cpl = restTemplate.postForObject(URL_LIST, envelope, CloudProviderList.class);
System.out.println ("result: " + cpl);
String cp = restTemplate.postForObject(URL_LIST, envelope, String.class);
System.out.println ("result in xml: " + cp);
}
@Test
public void testProviderMapping() throws JAXBException{
Reader reader = new BufferedReader(new InputStreamReader(
getClass().getClassLoader().getResourceAsStream(
"DescriptorOVF.xml")));
JAXBContext context = JAXBContext.newInstance(EnvelopeType.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
JAXBElement<EnvelopeType> obj = (JAXBElement<EnvelopeType>) unmarshaller.unmarshal( reader );
EnvelopeType envelope = (EnvelopeType) obj.getValue();
//EnvelopeType envelope = (EnvelopeType)unmarshaller.unmarshal(reader);
//CloudProvider cp = restTemplate.postForObject(URL_BEST, envelope, CloudProvider.class);
String cp = restTemplate.postForObject(URL_BEST, envelope, String.class);
System.out.println ("result: " + cp);
}
*/
}