package com.example.util;
import com.example.App;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import okhttp3.mockwebserver.MockResponse;
import okhttp3.mockwebserver.MockWebServer;
import javax.annotation.Nullable;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class MockWebServerHelper {
public MockWebServer initMockWebServer() throws IOException {
MockWebServer mockWebServer = new MockWebServer();
mockWebServer.start();
setBaseUrlToMockWebServer(mockWebServer);
return mockWebServer;
}
/**
* Change Retrofit's base url to the Mock Web Server provides us.
*/
private void setBaseUrlToMockWebServer(MockWebServer mockWebServer) {
App.getApplicationComponent().baseUrlInterceptor().setBaseUrl(mockWebServer.url("").toString());
}
public void enqueueErrorResponseForMockWebServer(MockWebServer mockWebServer, int restErrorCode) {
mockWebServer.enqueue(new MockResponse().setStatus("HTTP/1.1 " + restErrorCode + " Boom!"));
}
public void enqueueJsonResponseFromFileForMockWebServer(MockWebServer mockWebServer, String fileName) throws IOException {
mockWebServer.enqueue(new MockResponse().setBody(loadJson(fileName)));
}
@SuppressFBWarnings("OS_OPEN_STREAM_EXCEPTION_PATH")
@SuppressWarnings("PMD.AssignmentInOperand")
private String loadJson(String dummyJsonFileName) throws IOException {
@Nullable InputStream inputStream = getClass().getClassLoader().getResourceAsStream(dummyJsonFileName);
StringBuilder builder = new StringBuilder();
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
String line;
while ((line = in.readLine()) != null) {
builder.append(line);
}
in.close();
return builder.toString();
}
}