package com.socrata.datasync.utilities;
import com.socrata.datasync.HttpUtility;
import com.socrata.datasync.TestBase;
import com.socrata.datasync.config.userpreferences.UserPreferences;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.entity.EntityBuilder;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.codehaus.jackson.map.ObjectMapper;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
public class HttpUtilityTest extends TestBase {
ObjectMapper mapper;
HttpUtility http;
@Before
public void setUp() throws Exception {
mapper = new ObjectMapper();
UserPreferences userPrefs = getUserPrefs();
http = new HttpUtility(userPrefs, true);
}
@After
public void tearDown() throws IOException {
http.close();
}
@Test
public void testHttpGet() throws Exception {
URI getUri = new URIBuilder()
.setScheme("https")
.setHost(DOMAIN.split("//")[1])
.setPath("/datasync/version")
.build();
try(CloseableHttpResponse response = http.get(getUri, ContentType.APPLICATION_JSON.getMimeType());
InputStream body = response.getEntity().getContent()) {
// uncomment the test below, when di2 is running in prod
/*
HashMap<String,String> versionNotes = mapper.readValue(body,
new TypeReference<HashMap<String,Object>>() {});
TestCase.assertEquals(200, response.getStatusLine().getStatusCode());
TestCase.assertTrue(versionNotes.containsKey("version"));
*/
}
http.close();
}
@Test
public void testHttpPost() throws Exception {
URI postUri = new URIBuilder()
.setScheme("https")
.setHost(DOMAIN.split("//")[1])
.setPath("/datasync/id/" + UNITTEST_DATASET_ID)
.build();
InputStream is = new FileInputStream(new File("src/test/resources/example_patch.sdiff"));
byte[] data = IOUtils.toByteArray(is);
HttpEntity entity = EntityBuilder.create().setBinary(data).build();
try(CloseableHttpResponse response = http.post(postUri, entity);
InputStream body = response.getEntity().getContent()) {
// uncomment the test below, when di2 is running in prod
/*
TestCase.assertEquals(201, response.getStatusLine().getStatusCode());
String blobId = mapper.readValue(response.getEntity().getContent(), BlobId.class).blobId;
TestCase.assertNotNull(blobId);
*/
}
}
}