Имам RESTlet сървър, работещ на моето Android устройство. Конфигуриран е добре. Сега го тествам jUnit и този конкретен тест се проваля без причина.
Имам този URL:
http://10.17.1.72:8080/contacts?order=ASC&limit=10&offset=1
което е правилно, получавам отговор 200 според очакванията.
Но тогава, ако напиша грешно параметрите в URL адреса, трябва да получа отговор 404. Използване на разширение пощальон за Chrome, ако натисна http://10.17.1.72:8080/contacts?oooooooorder=ASC&limit=10&offset=1
(имайте предвид, че „ поръчка" е изписан неправилно) Получавам 404, както трябва. До тук всичко е наред.
Проблемът идва, когато създам RESTlet клиент, за да направя това GET request
на моя jUnit тест, той получава отговор 200.
Ето моят метод за тестване на jUnit:
public void testGoodRequest() // Success, receives a 200 code.
{
// Create the client resource
ClientResource resource = new ClientResource("http://10.17.1.72:8080/contacts?order=ASC&limit=10&offset=1");
Response response = resource.getResponse();
Log.d(TAG, "Good: " + response.getStatus().getCode());
assertTrue(response.getStatus().getCode() == 200);
}
И този трябва да получи 404, но получи 200, ако същата заявка за получаване, използвайки пощальона на Chrome, получи 404:
public void testBadRequestWithOrderMisspelled()
{
// Create the client resource
ClientResource resource = new ClientResource("http://10.17.1.72:8080/contacts?oofdgrder=ASC&limit=10&offset=1");
Response response = resource.getResponse();
Log.d(TAG, "BadRequestWithOrderMisspelled: " + response.getStatus().getCode());
assertTrue(response.getStatus().getCode() == 404); // Assert fails, receives 200 instead of 404
}
И ето моят метод за обработка на Restlet:
@Override
public void handle(Request request, Response response) {
//final ContactList contactList = new ContactList(mContext);
String type = request.getMethod().getName();
String order = request.getResourceRef().getQueryAsForm().getFirstValue("order");
String limit = request.getResourceRef().getQueryAsForm().getFirstValue("limit");
String offset = request.getResourceRef().getQueryAsForm().getFirstValue("offset");
String query = request.getResourceRef().getQueryAsForm().getFirstValue("query");
if(!"order".equals(order) || !"limit".equals(limit) || !"offset".equals(offset) || !"query".equals(query))
{
// Show error
response.setStatus(new Status(Status.CLIENT_ERROR_NOT_FOUND, "Badly formatted URL."));
return;
}
(...)
}