/* * Copyright 2012 Shared Learning Collaborative, LLC * * 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 org.slc.sli.dashboard.unit.client; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.mock; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import org.junit.Test; import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.slc.sli.dashboard.client.RESTClient; import org.springframework.http.HttpEntity; import org.springframework.http.HttpMethod; import org.springframework.web.client.RestTemplate; /** * * @author svankina * */ public class RESTClientTest { @Test public void testSessionCheck() { final String jsonText = "{\"name\": \"something\"}"; RESTClient client = new RESTClient() { public String makeJsonRequestWHeaders(String path, String token) { return jsonText; } }; JsonParser parser = new JsonParser(); JsonObject obj2 = client.sessionCheck(null); JsonObject obj1 = parser.parse(jsonText).getAsJsonObject(); assertEquals(obj2, obj1); } @Test public void testMakeJsonRequestWHeaders() { //TODO: Change the overridden function to support HTTPEntity RESTClient client = new RESTClient() { public HttpEntity<String> exchange(RestTemplate template, String url, HttpMethod method, HttpEntity entity, Class cl) { return new HttpEntity<String>("fakeResponse"); } }; String s = client.makeJsonRequestWHeaders("http://www.google.com", "fakeToken"); assertEquals(s, "fakeResponse"); } @Test public void testPutJsonRequestWHeaders() { String path = "http://local.slidev.org"; String token = "token"; String id = "id"; String json = "{" + "\"component_1\": " + "{" + "\"id\" : \"component_1\", " + "\"name\" : \"Component 1\", " + "\"type\" : \"LAYOUT\", " + "\"items\": [" + "{\"id\" : \"component_1_1\", \"name\": \"First Child Component\", \"type\": \"PANEL\"}, " + "{\"id\" : \"component_1_2\", \"name\": \"Second Child Component\", \"type\": \"PANEL\"}" + "]" + "}" + "}"; RESTClient client = new RESTClient(); RestTemplate mockTemplate = mock(RestTemplate.class); client.setTemplate(mockTemplate); RestTemplateAnswer restTemplateAnswer = new RestTemplateAnswer(); Mockito.doAnswer(restTemplateAnswer).when(mockTemplate).put(Mockito.anyString(), Mockito.anyObject()); client.putJsonRequestWHeaders(path, token, json); String customJson = restTemplateAnswer.getJson(); assertNotNull(customJson); assertEquals(json, customJson); } private static class RestTemplateAnswer implements Answer { private String json; @Override public Object answer(InvocationOnMock invocation) throws Throwable { HttpEntity httpEntity = (HttpEntity) invocation.getArguments()[1]; json = (String) httpEntity.getBody(); return null; } public String getJson() { return json; } } }