You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.1 KiB
112 lines
3.1 KiB
package core;
|
|
|
|
import exchange.ExchangeMock;
|
|
import org.json.JSONObject;
|
|
|
|
import javax.servlet.ServletException;
|
|
import java.io.DataOutputStream;
|
|
import java.io.IOException;
|
|
import java.net.HttpURLConnection;
|
|
|
|
/**
|
|
* Wraps a ClientServlet so it can be debugged easily, i.e. without running Tomcat.
|
|
*/
|
|
public class ClientMock extends ClientServlet {
|
|
|
|
private MockSet mockSet;
|
|
|
|
public ClientMock(MockSet mockSet){
|
|
super();
|
|
mockSet.clientMock = this;
|
|
this.mockSet = mockSet;
|
|
}
|
|
|
|
@Override
|
|
void sendPostRide(Ride ride) throws IOException, ServletException, InterruptedException {
|
|
|
|
rideMap.put(ride.getID(), ride.setState(State.AVAILABLE));
|
|
|
|
|
|
// Mock Exchange
|
|
ExchangeMock exchange = new ExchangeMock();
|
|
|
|
exchange.request.setMethod("POST");
|
|
exchange.request.setContentType("application/json");
|
|
exchange.request.setContent(ride.json().getBytes());
|
|
|
|
synchronized (exchange){
|
|
// Mock POST (Ride)
|
|
exchange.notify();
|
|
mockSet.bridgeMock.doPost(exchange.request,exchange.response);
|
|
exchange.wait();
|
|
|
|
// handle OK (Ride)(Request)
|
|
Ride parsedRide = new Ride(exchange.response.getContentAsString());
|
|
ride.setRequest(parsedRide.getRequest());
|
|
|
|
exchange.notify();
|
|
}
|
|
ride.setState(State.BOOKED);
|
|
sendGetRequest(ride);
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* # send GET (Request) to App
|
|
*/
|
|
@Override
|
|
void sendGetRequest(Ride ride) throws IOException, ServletException, InterruptedException {
|
|
|
|
// Mock Exchange
|
|
ExchangeMock exchange = new ExchangeMock();
|
|
|
|
exchange.request.setMethod("GET");
|
|
exchange.request.setContentType("application/json");
|
|
exchange.request.setContent(ride.json().getBytes());
|
|
|
|
synchronized (exchange){
|
|
// Mock GET (Request)
|
|
exchange.notify();
|
|
mockSet.appMock.doGet(exchange.request,exchange.response);
|
|
//exchange.wait();
|
|
|
|
// handle OK (Data)
|
|
Ride parsedRide = new Ride(exchange.response.getContentAsString());
|
|
ride.setData(parsedRide.getData());
|
|
exchange.notify();
|
|
}
|
|
ride.setState(State.LOADED);
|
|
sendGetRideRequestData(ride);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* # send GET (Ride)(Request)(Data)
|
|
*/
|
|
@Override
|
|
void sendGetRideRequestData(Ride ride) throws IOException, ServletException, InterruptedException {
|
|
|
|
// Mock Exchange
|
|
ExchangeMock exchange = new ExchangeMock();
|
|
|
|
exchange.request.setMethod("GET");
|
|
exchange.request.setContentType("application/json");
|
|
exchange.request.setContent(ride.json().getBytes());
|
|
|
|
synchronized (exchange){
|
|
// Mock GET (Ride)(Request)(Data)
|
|
exchange.notify();
|
|
mockSet.bridgeMock.doGet(exchange.request,exchange.response);
|
|
exchange.wait();
|
|
|
|
// handle OK (Ride)
|
|
Ride parsedRide = new Ride(exchange.response.getContentAsString());
|
|
rideMap.remove(parsedRide.getID());
|
|
exchange.notify();
|
|
}
|
|
}
|
|
|
|
} |