aboutsummaryrefslogtreecommitdiff
path: root/WordPress/src/androidTest/java/org/wordpress/android/mocks/XMLRPCClientCustomizableJSONMock.java
diff options
context:
space:
mode:
Diffstat (limited to 'WordPress/src/androidTest/java/org/wordpress/android/mocks/XMLRPCClientCustomizableJSONMock.java')
-rw-r--r--WordPress/src/androidTest/java/org/wordpress/android/mocks/XMLRPCClientCustomizableJSONMock.java94
1 files changed, 94 insertions, 0 deletions
diff --git a/WordPress/src/androidTest/java/org/wordpress/android/mocks/XMLRPCClientCustomizableJSONMock.java b/WordPress/src/androidTest/java/org/wordpress/android/mocks/XMLRPCClientCustomizableJSONMock.java
new file mode 100644
index 000000000..d68746c4a
--- /dev/null
+++ b/WordPress/src/androidTest/java/org/wordpress/android/mocks/XMLRPCClientCustomizableJSONMock.java
@@ -0,0 +1,94 @@
+package org.wordpress.android.mocks;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+
+import org.wordpress.android.TestUtils;
+import org.wordpress.android.util.AppLog;
+import org.wordpress.android.util.AppLog.T;
+import org.xmlrpc.android.LoggedInputStream;
+import org.xmlrpc.android.XMLRPCCallback;
+import org.xmlrpc.android.XMLRPCException;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.net.URI;
+import java.util.HashMap;
+
+public class XMLRPCClientCustomizableJSONMock extends XMLRPCClientCustomizableMockAbstract {
+ private LoggedInputStream mLoggedInputStream;
+
+ public XMLRPCClientCustomizableJSONMock(URI uri, String httpUser, String httpPassword) {
+ }
+
+ public void addQuickPostHeader(String type) {
+ }
+
+ public void setAuthorizationHeader(String authToken) {
+ }
+
+ private Object readFile(String method, String prefix) {
+ // method example: wp.getUsersBlogs
+ // Filename: default-wp.getUsersBlogs.json
+ String filename = prefix + "-" + method + ".json";
+ try {
+ Gson gson = new Gson();
+ mLoggedInputStream = new LoggedInputStream(mContext.getAssets().open(filename));
+ String jsonString = TestUtils.convertStreamToString(mLoggedInputStream);
+ AppLog.i(T.TESTS, "loading: " + filename);
+ try {
+ // Try to load a JSONArray
+ return TestUtils.injectDateInArray(gson.fromJson(jsonString, Object[].class));
+ } catch (Exception e) {
+ // If that fails, try to load a JSONObject
+ Type type = new TypeToken<HashMap<String, Object>>(){}.getType();
+ HashMap<String, Object> map = gson.fromJson(jsonString, type);
+ return TestUtils.injectDateInMap(map);
+ }
+ } catch (IOException e) {
+ AppLog.e(T.TESTS, "can't read file: " + filename);
+ }
+ return null;
+ }
+
+ public Object call(String method, Object[] params) throws XMLRPCException {
+ mLoggedInputStream = null;
+ AppLog.v(T.TESTS, "XMLRPCClientCustomizableJSONMock: call: " + method);
+ if ("login-failure".equals(mPrefix)) {
+ // Wrong login
+ throw new XMLRPCException("code 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();
+ }
+}