package com.socrata.datasync;
import com.socrata.api.HttpLowLevel;
import com.socrata.api.Soda2Consumer;
import com.socrata.api.Soda2Producer;
import com.socrata.api.SodaDdl;
import com.socrata.datasync.config.userpreferences.UserPreferences;
import com.socrata.datasync.config.userpreferences.UserPreferencesFile;
import com.socrata.exceptions.LongRunningQueryException;
import com.socrata.exceptions.SodaError;
import com.sun.jersey.api.client.ClientResponse;
import org.codehaus.jackson.map.ObjectMapper;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* A Base class that pulls the config information for running the "unit" tests
*/
public class TestBase
{
public static final boolean testOnStaging = false;
public static final String DOMAIN = (testOnStaging) ?
"https://opendata.test-socrata.com" : "https://sandbox.demo.socrata.com";
public static final String USERNAME = (testOnStaging) ?
"adrian.laurenzi+nonadmin2@socrata.com" : "testuser@gmail.com";
public static final String PASSWORD = (testOnStaging) ?
"rubes94]yokes" : "OpenData";
public static final String API_KEY = (testOnStaging) ?
"EKCJmWioetV1B3roSNIQfb7Z7" : "D8Atrg62F2j017ZTdkMpuZ9vY";
public static final String UNITTEST_DATASET_ID = (testOnStaging) ? "33re-zxku" : "geue-g9cw";
public static final String UNITTEST_PORT_RESULT_DATASET_ID = (testOnStaging) ? "8cfm-nx8q" : "szbe-ez5m";
public static final String UNITTEST_LOG_DATASET_ID = (testOnStaging) ? "7mxj-sxrh" : "ufmq-enj6";
public static final String UNITTEST_DATASET_ID_LOCATION_COL = (testOnStaging) ? "78vi-gt6w" : "qcq7-r62w";
public static final String PATH_TO_STAGING_CONFIG_FILE = "src/test/resources/basic_test_config_staging.json";
public static final String PATH_TO_PROD_CONFIG_FILE = "src/test/resources/basic_test_config.json";
public static final String PATH_TO_SIMPLE_CONFIG_FILE = "src/test/resources/simple_config.json";
public static final String PATH_TO_CONFIG_FILE = (testOnStaging) ?
PATH_TO_STAGING_CONFIG_FILE : PATH_TO_PROD_CONFIG_FILE;
protected Soda2Producer createProducer() throws IOException {
return Soda2Producer.newProducer(DOMAIN, USERNAME, PASSWORD, API_KEY);
}
protected SodaDdl createSodaDdl() throws IOException {
return SodaDdl.newDdl(DOMAIN, USERNAME, PASSWORD, API_KEY);
}
protected int getTotalRows(String UnitTestDataset) throws LongRunningQueryException, SodaError {
final Soda2Consumer consumer = Soda2Consumer.newConsumer(DOMAIN, USERNAME, PASSWORD, API_KEY);
ClientResponse response = consumer.query(UnitTestDataset, HttpLowLevel.JSON_TYPE, "select count(*)");
ArrayList results = response.getEntity(ArrayList.class);
Map count = (HashMap<String,String>) results.get(0);
return Integer.parseInt((String) count.get("count"));
}
protected com.socrata.datasync.job.IntegrationJob getIntegrationJobWithUserPrefs() throws IOException {
return new com.socrata.datasync.job.IntegrationJob(
getUserPrefs());
}
protected UserPreferences getUserPrefs() throws IOException {
File configFile = new File(PATH_TO_CONFIG_FILE);
ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(configFile, UserPreferencesFile.class);
}
}