blob: 57e8291f9f660cb6418bd1f30b731248168ae7fe [file] [log] [blame]
package org.wordpress.android.mocks;
import org.wordpress.android.util.AppLog;
import org.wordpress.android.util.AppLog.T;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlrpc.android.LoggedInputStream;
import org.xmlrpc.android.XMLRPCCallback;
import org.xmlrpc.android.XMLRPCClient;
import org.xmlrpc.android.XMLRPCException;
import org.xmlrpc.android.XMLRPCFault;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URI;
public class XMLRPCClientCustomizableXMLMock extends XMLRPCClientCustomizableMockAbstract {
XMLRPCClient mXmlRpcClient;
private LoggedInputStream mLoggedInputStream;
public XMLRPCClientCustomizableXMLMock(URI uri, String httpUser, String httpPassword) {
// Used to test ctor and preparePostMethod
mXmlRpcClient = new XMLRPCClient("", "", "");
}
public void addQuickPostHeader(String type) {
}
public void setAuthorizationHeader(String authToken) {
}
private Object readFile(String method, String prefix) throws IOException, XMLRPCException, XmlPullParserException {
// method example: wp.getUsersBlogs
// Filename: default-wp.getUsersBlogs.xml
String filename = prefix + "-" + method + ".xml";
try {
mLoggedInputStream = new LoggedInputStream(mContext.getAssets().open(filename));
return XMLRPCClient.parseXMLRPCResponse(mLoggedInputStream, null);
} catch (FileNotFoundException e) {
AppLog.e(T.TESTS, "file not found: " + filename);
}
return null;
}
public Object call(String method, Object[] params) throws XMLRPCException, IOException, XmlPullParserException {
mLoggedInputStream = null;
try {
mXmlRpcClient.preparePostMethod(method, params, null);
} catch (IOException e) {
// unexpected error, test must fail
throw new XMLRPCException("preparePostMethod failed");
}
AppLog.v(T.TESTS, "XMLRPCClientCustomizableXMLMock call: " + method);
if ("login-failure".equals(mPrefix)) {
// Wrong login
throw new XMLRPCFault("code 403", 403);
}
Object retValue = readFile(method, mPrefix);
if (retValue == null) {
// failback to default
AppLog.w(T.TESTS, "failback to default");
retValue = readFile(method, "default");
}
return retValue;
}
public Object call(String method) throws XMLRPCException {
return null;
}
public Object call(String method, Object[] params, File tempFile) throws XMLRPCException {
return null;
}
public long callAsync(XMLRPCCallback listener, String methodName, Object[] params) {
return 0;
}
public long callAsync(XMLRPCCallback listener, String methodName, Object[] params, File tempFile) {
return 0;
}
public String getResponse() {
if (mLoggedInputStream == null) {
return "";
}
return mLoggedInputStream.getResponseDocument();
}
}