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.
misp/mispmock/src/core/ClientMock.java

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();
}
}
}