package org.uiautomation.ios.e2e.config;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.message.BasicHttpEntityEnclosingRequest;
import org.json.JSONArray;
import org.json.JSONObject;
import org.testng.Assert;
import org.testng.annotations.Test;
import org.uiautomation.ios.BaseIOSDriverTest;
import org.uiautomation.ios.SampleApps;
import org.uiautomation.ios.communication.Helper;
import org.uiautomation.ios.communication.HttpClientFactory;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.uiautomation.ios.IOSCapabilities.BUNDLE_DISPLAY_NAME;
import static org.uiautomation.ios.IOSCapabilities.BUNDLE_ID;
import static org.uiautomation.ios.IOSCapabilities.BUNDLE_NAME;
import static org.uiautomation.ios.IOSCapabilities.BUNDLE_VERSION;
import static org.uiautomation.ios.IOSCapabilities.SUPPORTED_LANGUAGES;
public class StatusTest extends BaseIOSDriverTest {
@Test
public void statusTest() throws Exception {
HttpClient client = HttpClientFactory.getClient();
String url = getRemoteURL() + "/status";
URL u = new URL(url);
BasicHttpEntityEnclosingRequest r = new BasicHttpEntityEnclosingRequest("GET", url);
HttpHost h = new HttpHost(u.getHost(), u.getPort());
HttpResponse response = client.execute(h, r);
JSONObject o = Helper.extractObject(response);
JSONArray array = o.getJSONObject("value").getJSONArray("supportedApps");
Assert.assertTrue(array.length() > 3); // registered app + safari
Map<String, JSONObject> apps = new HashMap<String, JSONObject>();
for (int i = 0; i < array.length(); i++) {
JSONObject a = array.getJSONObject(i);
String name = a.optString(BUNDLE_DISPLAY_NAME);
if (name.isEmpty()) {
name = a.optString(BUNDLE_NAME);
}
apps.put(name, a);
}
JSONObject uicatalog = apps.get("UICatalog");
Assert.assertEquals(uicatalog.get(BUNDLE_DISPLAY_NAME), "UICatalog");
Assert.assertEquals(uicatalog.get(BUNDLE_ID), "com.yourcompany.UICatalog");
Assert.assertEquals(uicatalog.get(BUNDLE_NAME), "UICatalog");
Assert.assertEquals(uicatalog.get(BUNDLE_VERSION), "2.10");
JSONArray locales1 = uicatalog.getJSONArray(SUPPORTED_LANGUAGES);
Assert.assertEquals(locales1.length(), 1);
Assert.assertEquals(locales1.get(0), "en");
JSONObject intMount = apps.get("InternationalMountains");
Assert.assertEquals(intMount.get(BUNDLE_ID), "com.yourcompany.InternationalMountains");
Assert.assertEquals(intMount.get(BUNDLE_NAME), "InternationalMountains");
Assert.assertEquals(intMount.get(BUNDLE_VERSION), "1.1");
Assert.assertEquals(intMount.get("applicationPath"), SampleApps.getIntlMountainsFile());
JSONArray locales2 = intMount.getJSONArray(SUPPORTED_LANGUAGES);
int nbLanguages = 4;
Assert.assertEquals(locales2.length(), nbLanguages);
List<String> all = new ArrayList<String>();
for (int i = 0; i < nbLanguages; i++) {
all.add(locales2.getString(i));
}
Assert.assertTrue(all.contains("en"));
Assert.assertTrue(all.contains("zh"));
Assert.assertTrue(all.contains("fr"));
}
}