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

Unverified Commit 5fbc39c7 authored by Tobias Kaminsky's avatar Tobias Kaminsky Committed by GitHub
Browse files

Merge pull request #373 from nextcloud/ezaquarii/make-own-cloud-account-parcelable

Add Parcelable interface to OwnCloudAccount and OwnCloudVersion
parents c424805b 1f617089
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
160
 No newline at end of file
168
 No newline at end of file
+33 −0
Original line number Diff line number Diff line
package com.owncloud.android.lib.common;

import android.content.Intent;
import android.net.Uri;
import android.os.Parcel;

import androidx.test.ext.junit.runners.AndroidJUnit4;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(AndroidJUnit4.class)
public class OwnCloudAccountTest {

    @Test
    public void parcelableIsImplemented() {
        Uri uri = Uri.parse("https://nextcloud.localhost.localdomain");
        OwnCloudCredentials credentials = new OwnCloudBasicCredentials(
                "user",
                "pass",
                true
        );
        OwnCloudAccount original = new OwnCloudAccount(uri, credentials);
        Parcel parcel = Parcel.obtain();
        parcel.setDataPosition(0);
        parcel.writeParcelable(original, 0);
        parcel.setDataPosition(0);
        OwnCloudAccount retrieved = parcel.readParcelable(OwnCloudAccount.class.getClassLoader());
        Assert.assertNotSame(original, retrieved);
        Assert.assertEquals(original, retrieved);
    }
}
+79 −0
Original line number Diff line number Diff line
package com.owncloud.android.lib.common;

import android.content.Intent;

import androidx.test.ext.junit.runners.AndroidJUnit4;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(AndroidJUnit4.class)
public class OwnCloudBasicCredentialsTest {

    @Test
    public void notEquals() {

        OwnCloudBasicCredentials original = new OwnCloudBasicCredentials(
                "user",
                "pass",
                true
        );

        OwnCloudBasicCredentials[] differentCredentials = new OwnCloudBasicCredentials[] {
                new OwnCloudBasicCredentials(
                    "different user",
                    "pass",
                    true
                ),
                new OwnCloudBasicCredentials(
                        "user",
                        "different pass",
                        true
                ),
                new OwnCloudBasicCredentials(
                        "user",
                        "pass",
                        false
                ),
        };

        for (OwnCloudBasicCredentials modified : differentCredentials) {
            Assert.assertNotEquals(original, modified);
        }
    }

    @Test
    public void equals() {
        OwnCloudBasicCredentials original = new OwnCloudBasicCredentials(
                "user",
                "pass",
                true
        );

        OwnCloudBasicCredentials identical = new OwnCloudBasicCredentials(
                "user",
                "pass",
                true
        );

        Assert.assertEquals(original, identical);
    }

    @Test
    public void parcelableIsImplemented() {

        OwnCloudBasicCredentials original = new OwnCloudBasicCredentials(
                "username",
                "password",
                false
        );

        Intent intent = new Intent();
        intent.putExtra("credentials", original);

        OwnCloudBasicCredentials copy = intent.getParcelableExtra("credentials");

        Assert.assertEquals(original, copy);
    }
}
+28 −0
Original line number Diff line number Diff line
package com.owncloud.android.lib.resources.status;

import android.os.Parcel;

import androidx.test.ext.junit.runners.AndroidJUnit4;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(AndroidJUnit4.class)
public class OwnCloudVersionTest {

    @Test
    public void parcelableIsImplemented() {
        OwnCloudVersion original = new OwnCloudVersion(42);

        Parcel parcel = Parcel.obtain();
        parcel.setDataPosition(0);
        parcel.writeParcelable(original, 0);

        parcel.setDataPosition(0);
        OwnCloudVersion retrieved = parcel.readParcelable(OwnCloudVersion.class.getClassLoader());

        Assert.assertNotSame(original, retrieved);
        Assert.assertEquals(original, retrieved);
    }
}
+43 −1
Original line number Diff line number Diff line
@@ -31,12 +31,15 @@ import android.accounts.AuthenticatorException;
import android.accounts.OperationCanceledException;
import android.content.Context;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;

import com.owncloud.android.lib.common.accounts.AccountUtils;
import com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException;

import java.io.IOException;

import lombok.EqualsAndHashCode;
import lombok.Getter;

/**
@@ -44,7 +47,8 @@ import lombok.Getter;
 * 
 * @author David A. Velasco
 */
public class OwnCloudAccount {
@EqualsAndHashCode
public class OwnCloudAccount implements Parcelable {

    @Getter private Uri baseUri;
    @Getter private OwnCloudCredentials credentials;
@@ -135,4 +139,42 @@ public class OwnCloudAccount {
            return null;
        }
    }

    /*
     * Autogenerated Parcelable interface
     */

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeParcelable(baseUri, flags);
        dest.writeParcelable(credentials, flags);
        dest.writeString(displayName);
        dest.writeString(name);
        dest.writeParcelable(savedAccount, flags);
    }

    protected OwnCloudAccount(Parcel in) {
        baseUri = in.readParcelable(Uri.class.getClassLoader());
        credentials = in.readParcelable(OwnCloudCredentials.class.getClassLoader());
        displayName = in.readString();
        name = in.readString();
        savedAccount = in.readParcelable(Account.class.getClassLoader());
    }

    public static final Creator<OwnCloudAccount> CREATOR = new Creator<OwnCloudAccount>() {
        @Override
        public OwnCloudAccount createFromParcel(Parcel source) {
            return new OwnCloudAccount(source);
        }

        @Override
        public OwnCloudAccount[] newArray(int size) {
            return new OwnCloudAccount[size];
        }
    };
}
Loading