package org.openintents.wifiserver.test;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.openintents.wifiserver.OIWiFiServerActivity_;
import org.openintents.wifiserver.R;
import com.jayway.android.robotium.solo.Solo;
import android.app.Activity;
import android.content.Intent;
import android.test.InstrumentationTestCase;
public abstract class BasicServerTest extends InstrumentationTestCase {
private Solo solo;
private Activity activity;
protected static final String baseURL = "http://127.0.0.1:8080";
private String getString(int resId) {
return activity.getString(resId);
}
private void startServer() {
solo.assertCurrentActivity(
"Expected " + OIWiFiServerActivity_.class.getSimpleName()
+ " activity!", OIWiFiServerActivity_.class);
if (solo.searchToggleButton(getString(R.string.startServer))) {
solo.clickOnToggleButton(getString(R.string.startServer));
solo.waitForText(getString(R.string.stopServer));
}
}
private void stopServer() {
solo.assertCurrentActivity(
"Expected " + OIWiFiServerActivity_.class.getSimpleName()
+ " activity!", OIWiFiServerActivity_.class);
if (solo.searchToggleButton(getString(R.string.stopServer))) {
solo.clickOnToggleButton(getString(R.string.stopServer));
solo.waitForText(getString(R.string.startServer));
}
}
private void startWiFiActivity() {
Intent i = new Intent();
i.setAction("android.intent.action.MAIN");
i.setClassName(OIWiFiServerActivity_.class.getPackage().getName(),
OIWiFiServerActivity_.class.getCanonicalName());
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
activity = getInstrumentation().startActivitySync(i);
this.solo = new Solo(getInstrumentation(), activity);
}
@Override
protected void setUp() throws Exception {
super.setUp();
startWiFiActivity();
startServer();
}
@Override
protected void tearDown() {
stopServer();
solo.finishOpenedActivities();
}
protected HttpResponse doGet(String url) {
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
try {
HttpResponse response = client.execute(request);
return response;
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
protected HttpResponse doPost(String url, Map<String, String> parameters) {
HttpClient client = new DefaultHttpClient();
HttpPost request = new HttpPost(url);
try {
if (parameters != null) {
List<NameValuePair> nvpList = new ArrayList<NameValuePair>(
parameters.size());
for (String key : parameters.keySet()) {
nvpList.add(new BasicNameValuePair(key, parameters.get(key)));
}
request.setEntity(new UrlEncodedFormEntity(nvpList));
}
request.setEntity(new StringEntity("blank"));
HttpResponse response = client.execute(request);
return response;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}