package org.openecomp.portalapp.portal.controller; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.UUID; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; import com.fasterxml.jackson.databind.ObjectMapper; /** * Tests the endpoints exposed by the Shared Context REST controller in Portal * Core. * * @author clott */ public class SharedContextRestControllerTest { private final Log logger = LogFactory.getLog(getClass()); private final SharedContextTestProperties properties; private final String ckey = "ckey"; private final String cvalue = "cvalue"; // Supposed to be a Portal session ID private final String cxid = UUID.randomUUID().toString(); private final String key = "key123"; private final String value1 = "first value"; private final String value2 = "second value"; public SharedContextRestControllerTest() throws IOException { properties = new SharedContextTestProperties(); } @SuppressWarnings("unchecked") //@Test public void test() throws Exception { String response = null, val = null; ObjectMapper mapper = new ObjectMapper(); Map responseMap, jsonMap; logger.info("Get on empty context"); response = SharedContextRestClient.getJson(properties, "get", cxid, key); // Should not exist - just generated the UUID Map responseMap1 = mapper.readValue(response, Map.class); response = (String) responseMap1.get("response"); Assert.assertNull(response); logger.info("Set a new context"); response = setContext(cxid, key, value1); Assert.assertNotNull(response); responseMap = mapper.readValue(response, Map.class); String responseValue = (String) responseMap.get("response"); Assert.assertNotNull(responseValue); Assert.assertEquals("added", responseValue); logger.info("Get existing context"); response = SharedContextRestClient.getJson(properties, "get", cxid, key); responseMap = mapper.readValue(response, Map.class); jsonMap = (Map) responseMap.get("response"); Assert.assertNotNull(jsonMap); val = (String) jsonMap.get(cvalue); Assert.assertEquals(val, value1); logger.info("Overwrite exiting context"); response = setContext(cxid, key, value2); Assert.assertNotNull(response); responseMap = mapper.readValue(response, Map.class); response = (String) responseMap.get("response"); Assert.assertNotNull(responseValue); // Assert.assertEquals("replaced", responseValue); logger.info("Get existing context to verify overwrite"); response = SharedContextRestClient.getJson(properties, "get", cxid, key); responseMap = mapper.readValue(response, Map.class); jsonMap = (Map) responseMap.get("response"); Assert.assertNotNull(jsonMap); val = (String) jsonMap.get(cvalue); Assert.assertEquals(val, value2); logger.info("Delete one context"); response = SharedContextRestClient.getJson(properties, "remove", cxid, key); responseMap = mapper.readValue(response, Map.class); response = (String) responseMap.get("response"); Assert.assertEquals(response, "removed"); logger.info("Clear the context"); response = SharedContextRestClient.getJson(properties, "clear", cxid, null); Assert.assertEquals("", response); } private String setContext(String context, String id, String value) throws Exception { ObjectMapper mapper = new ObjectMapper(); HashMap stringMap = new HashMap(); stringMap.put("context_id", cxid); stringMap.put(ckey, key); stringMap.put(cvalue, value2); String json = mapper.writeValueAsString(stringMap); String response = SharedContextRestClient.postJson(properties, "set", json); return response; } }