package org.openintents.wifiserver.test;
import java.io.IOException;
import org.apache.http.HttpResponse;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.openintents.wifiserver.util.StringUtil;
public class TestShoppinglistInterface extends BasicServerTest {
public void testDeleteAllLists() throws IllegalStateException, IOException {
HttpResponse response = doGet(baseURL+"/shoppinglist/list/delete");
assertEquals(200, response.getStatusLine().getStatusCode());
assertEquals(0, response.getEntity().getContentLength());
response = doGet(baseURL+"/shoppinglist/list/get");
assertEquals(200, response.getStatusLine().getStatusCode());
assertEquals(2, response.getEntity().getContentLength());
assertEquals("[]", StringUtil.fromInputStream(response.getEntity().getContent()));
}
public void testCreateAndGetList() throws IllegalStateException, IOException, JSONException {
String testlist = "Testlist";
doGet(baseURL+"/shoppinglist/list/delete");
HttpResponse response = doGet(baseURL+"/shoppinglist/list/new?name="+testlist);
assertEquals(200, response.getStatusLine().getStatusCode());
assertEquals(0, response.getEntity().getContentLength());
response = doGet(baseURL+"/shoppinglist/list/get");
assertEquals(200, response.getStatusLine().getStatusCode());
String stringArray = StringUtil.fromInputStream(response.getEntity().getContent());
JSONArray jsonArray = new JSONArray(stringArray);
assertEquals(1, jsonArray.length());
JSONObject actualList = jsonArray.getJSONObject(0);
assertEquals(actualList.getString("name"), testlist);
}
public void testCreateListWithoutName() throws IllegalStateException, IOException, JSONException {
doGet(baseURL+"/shoppinglist/list/delete");
HttpResponse response = doGet(baseURL+"/shoppinglist/list/new");
assertEquals(400, response.getStatusLine().getStatusCode());
assertEquals(0, response.getEntity().getContentLength());
response = doGet(baseURL+"/shoppinglist/list/get");
assertEquals(200, response.getStatusLine().getStatusCode());
String stringArray = StringUtil.fromInputStream(response.getEntity().getContent());
JSONArray jsonArray = new JSONArray(stringArray);
assertEquals(0, jsonArray.length());
}
public void testCreateListWithEmptyName() throws IllegalStateException, IOException, JSONException {
String testlist = "";
doGet(baseURL+"/shoppinglist/list/delete");
HttpResponse response = doGet(baseURL+"/shoppinglist/list/new?name="+testlist);
assertEquals(400, response.getStatusLine().getStatusCode());
assertEquals(0, response.getEntity().getContentLength());
response = doGet(baseURL+"/shoppinglist/list/get");
assertEquals(200, response.getStatusLine().getStatusCode());
String stringArray = StringUtil.fromInputStream(response.getEntity().getContent());
JSONArray jsonArray = new JSONArray(stringArray);
assertEquals(1, jsonArray.length());
}
public void testCreateExistingList() throws IllegalStateException, IOException, JSONException {
String testlist = "Testlist";
doGet(baseURL+"/shoppinglist/list/delete");
HttpResponse response = doGet(baseURL+"/shoppinglist/list/new?name="+testlist);
assertEquals(200, response.getStatusLine().getStatusCode());
assertEquals(0, response.getEntity().getContentLength());
response = doGet(baseURL+"/shoppinglist/list/new?name="+testlist);
assertEquals(200, response.getStatusLine().getStatusCode());
assertEquals(0, response.getEntity().getContentLength());
response = doGet(baseURL+"/shoppinglist/list/get");
assertEquals(200, response.getStatusLine().getStatusCode());
String stringArray = StringUtil.fromInputStream(response.getEntity().getContent());
JSONArray jsonArray = new JSONArray(stringArray);
assertEquals(1, jsonArray.length());
}
public void testCreateAndGetLists() throws IllegalStateException, IOException, JSONException {
String testlist_1 = "Testlist_1";
String testlist_2 = "Testlist_2";
doGet(baseURL+"/shoppinglist/list/delete");
doGet(baseURL+"/shoppinglist/list/new?name="+testlist_1);
doGet(baseURL+"/shoppinglist/list/new?name="+testlist_2);
HttpResponse response = doGet(baseURL+"/shoppinglist/list/get");
assertEquals(200, response.getStatusLine().getStatusCode());
String stringArray = StringUtil.fromInputStream(response.getEntity().getContent());
JSONArray jsonArray = new JSONArray(stringArray);
assertEquals(2, jsonArray.length());
JSONObject actualList_1 = jsonArray.getJSONObject(0);
JSONObject actualList_2 = jsonArray.getJSONObject(1);
assertTrue( (actualList_1.getString("name").equals(testlist_1) && actualList_2.getString("name").equals(testlist_2)) ||
(actualList_2.getString("name").equals(testlist_1) && actualList_1.getString("name").equals(testlist_2)) );
}
public void testDeleteSpecificList() throws IllegalStateException, IOException, JSONException {
String beforeRename = "List1";
doGet(baseURL+"/shoppinglist/list/delete");
doGet(baseURL+"/shoppinglist/list/new?name="+beforeRename);
HttpResponse response = doGet(baseURL+"/shoppinglist/list/get");
String stringArray = StringUtil.fromInputStream(response.getEntity().getContent());
JSONArray jsonArray = new JSONArray(stringArray);
assertEquals(1, jsonArray.length());
JSONObject list = jsonArray.getJSONObject(0);
String id = list.getString("_id");
response = doGet(baseURL+"/shoppinglist/list/delete?id="+id);
assertEquals(200, response.getStatusLine().getStatusCode());
response = doGet(baseURL+"/shoppinglist/list/get");
stringArray = StringUtil.fromInputStream(response.getEntity().getContent());
jsonArray = new JSONArray(stringArray);
assertEquals(0, jsonArray.length());
}
public void testRenameListByName() throws IllegalStateException, IOException, JSONException {
String beforeRename = "List1";
String afterRename = "List2";
doGet(baseURL+"/shoppinglist/list/delete");
doGet(baseURL+"/shoppinglist/list/new?name="+beforeRename);
HttpResponse response = doGet(baseURL+"/shoppinglist/list/rename?oldname="+beforeRename+"&newname="+afterRename);
assertEquals(200, response.getStatusLine().getStatusCode());
response = doGet(baseURL+"/shoppinglist/list/get");
String stringArray = StringUtil.fromInputStream(response.getEntity().getContent());
JSONArray jsonArray = new JSONArray(stringArray);
assertEquals(1, jsonArray.length());
JSONObject afterList = jsonArray.getJSONObject(0);
assertEquals(afterList.getString("name"), afterRename);
}
public void testRenameListById() throws IllegalStateException, IOException, JSONException {
String beforeRename = "List1";
String afterRename = "List2";
doGet(baseURL+"/shoppinglist/list/delete");
doGet(baseURL+"/shoppinglist/list/new?name="+beforeRename);
HttpResponse response = doGet(baseURL+"/shoppinglist/list/get");
String stringArray = StringUtil.fromInputStream(response.getEntity().getContent());
JSONArray jsonArray = new JSONArray(stringArray);
assertEquals(1, jsonArray.length());
JSONObject list = jsonArray.getJSONObject(0);
String id = list.getString("_id");
response = doGet(baseURL+"/shoppinglist/list/rename?id="+id+"&newname="+afterRename);
assertEquals(200, response.getStatusLine().getStatusCode());
response = doGet(baseURL+"/shoppinglist/list/get");
stringArray = StringUtil.fromInputStream(response.getEntity().getContent());
jsonArray = new JSONArray(stringArray);
assertEquals(1, jsonArray.length());
list = jsonArray.getJSONObject(0);
assertEquals(list.getString("name"), afterRename);
}
public void testRenameListByIdAndName() throws IllegalStateException, IOException, JSONException {
String beforeRename = "List1";
String afterRename = "List2";
doGet(baseURL+"/shoppinglist/list/delete");
doGet(baseURL+"/shoppinglist/list/new?name="+beforeRename);
HttpResponse response = doGet(baseURL+"/shoppinglist/list/get");
String stringArray = StringUtil.fromInputStream(response.getEntity().getContent());
JSONArray jsonArray = new JSONArray(stringArray);
assertEquals(1, jsonArray.length());
JSONObject list = jsonArray.getJSONObject(0);
String id = list.getString("_id");
response = doGet(baseURL+"/shoppinglist/list/rename?id="+id+"&newname="+afterRename+"&oldname="+beforeRename);
assertEquals(400, response.getStatusLine().getStatusCode());
response = doGet(baseURL+"/shoppinglist/list/get");
stringArray = StringUtil.fromInputStream(response.getEntity().getContent());
jsonArray = new JSONArray(stringArray);
assertEquals(1, jsonArray.length());
list = jsonArray.getJSONObject(0);
assertEquals(list.getString("name"), beforeRename);
}
public void testRenameListWithoutName() throws IllegalStateException, IOException, JSONException {
String beforeRename = "List1";
doGet(baseURL+"/shoppinglist/list/delete");
doGet(baseURL+"/shoppinglist/list/new?name="+beforeRename);
HttpResponse response = doGet(baseURL+"/shoppinglist/list/rename?oldname="+beforeRename);
assertEquals(400, response.getStatusLine().getStatusCode());
response = doGet(baseURL+"/shoppinglist/list/get");
String stringArray = StringUtil.fromInputStream(response.getEntity().getContent());
JSONArray jsonArray = new JSONArray(stringArray);
assertEquals(1, jsonArray.length());
JSONObject list = jsonArray.getJSONObject(0);
assertEquals(list.getString("name"), beforeRename);
}
public void testRenameListWithEmptyName() throws IllegalStateException, IOException, JSONException {
String beforeRename = "List1";
String afterRename = "";
doGet(baseURL+"/shoppinglist/list/delete");
doGet(baseURL+"/shoppinglist/list/new?name="+beforeRename);
HttpResponse response = doGet(baseURL+"/shoppinglist/list/rename?newname="+afterRename+"&oldname="+beforeRename);
assertEquals(400, response.getStatusLine().getStatusCode());
response = doGet(baseURL+"/shoppinglist/list/get");
String stringArray = StringUtil.fromInputStream(response.getEntity().getContent());
JSONArray jsonArray = new JSONArray(stringArray);
assertEquals(1, jsonArray.length());
JSONObject list = jsonArray.getJSONObject(0);
assertEquals(list.getString("name"), beforeRename);
}
}