Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 11f04085 authored by tobiasKaminsky's avatar tobiasKaminsky
Browse files

Handle empty/null/invalid activity response better

parent 296359bb
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -139,6 +139,10 @@ android {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    testOptions {
        unitTests.returnDefaultValues = true
    }
}

task combinedTestReport(type: JacocoReport) {
+22 −10
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;
import com.google.gson.reflect.TypeToken;
import com.owncloud.android.lib.common.OwnCloudClient;
import com.owncloud.android.lib.common.operations.RemoteOperation;
@@ -180,6 +181,11 @@ public class GetActivitiesRemoteOperation extends RemoteOperation {
    }

    protected ArrayList<Activity> parseResult(String response) {
        if (response == null || response.isEmpty()) {
            return new ArrayList<>();
        }

        try {
            JsonParser jsonParser = new JsonParser();
            JsonObject jo = (JsonObject) jsonParser.parse(response);
            JsonArray jsonDataArray = jo.getAsJsonObject(NODE_OCS).getAsJsonArray(NODE_DATA);
@@ -188,9 +194,15 @@ public class GetActivitiesRemoteOperation extends RemoteOperation {
                    .registerTypeAdapter(RichElement.class, new RichElementTypeAdapter())
                    .registerTypeAdapter(PreviewObject.class, new PreviewObjectAdapter())
                    .create();
        Type listType = new TypeToken<List<Activity>>(){}.getType();
            Type listType = new TypeToken<List<Activity>>() {
            }.getType();

            return gson.fromJson(jsonDataArray, listType);

        } catch (JsonSyntaxException e) {
            Log_OC.e(TAG, "Not a valid json: " + response, e);
            return new ArrayList<>();
        }
    }

    private boolean isSuccess(int status) {
+34 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import org.junit.Test;

import java.util.ArrayList;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

public class GetActivitiesRemoteOperationTest {
@@ -55,4 +56,37 @@ public class GetActivitiesRemoteOperationTest {

        assertTrue(activityList.size() > 0);
    }

    @Test
    public void testEmptyString() {
        String activities = "";

        GetActivitiesRemoteOperation sut = new GetActivitiesRemoteOperation();

        ArrayList<Activity> activityList = sut.parseResult(activities);

        assertEquals(0, activityList.size());
    }

    @Test
    public void testNotValidString() {
        String activities = "Wrong json syntax";

        GetActivitiesRemoteOperation sut = new GetActivitiesRemoteOperation();

        ArrayList<Activity> activityList = sut.parseResult(activities);

        assertEquals(0, activityList.size());
    }

    @Test
    public void testNullString() {
        String activities = null;

        GetActivitiesRemoteOperation sut = new GetActivitiesRemoteOperation();

        ArrayList<Activity> activityList = sut.parseResult(activities);

        assertEquals(0, activityList.size());
    }
}