blob: bae11eb86b3233ce0a7e00fff65f8c29a54f3ce1 [file] [log] [blame]
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.server.backup.transport;
import static junit.framework.Assert.assertEquals;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import android.app.backup.RestoreDescription;
import android.app.backup.RestoreSet;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.platform.test.annotations.Presubmit;
import androidx.test.runner.AndroidJUnit4;
import com.android.internal.backup.IBackupTransport;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
@Presubmit
@RunWith(AndroidJUnit4.class)
public class DelegatingTransportTest {
@Mock private IBackupTransport mBackupTransport;
@Mock private PackageInfo mPackageInfo;
@Mock private ParcelFileDescriptor mFd;
private final String mPackageName = "testpackage";
private final RestoreSet mRestoreSet = new RestoreSet();
private final int mFlags = 1;
private final long mRestoreToken = 10;
private final long mSize = 100;
private final int mNumBytes = 1000;
private DelegatingTransport mDelegatingTransport;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mDelegatingTransport = new DelegatingTransport() {
@Override
protected IBackupTransport getDelegate() {
return mBackupTransport;
}
};
}
@Test
public void testName() throws RemoteException {
String exp = "dummy";
when(mBackupTransport.name()).thenReturn(exp);
String ret = mDelegatingTransport.name();
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).name();
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testConfigurationIntent() throws RemoteException {
Intent exp = new Intent("dummy");
when(mBackupTransport.configurationIntent()).thenReturn(exp);
Intent ret = mDelegatingTransport.configurationIntent();
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).configurationIntent();
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testCurrentDestinationString() throws RemoteException {
String exp = "dummy";
when(mBackupTransport.currentDestinationString()).thenReturn(exp);
String ret = mDelegatingTransport.currentDestinationString();
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).currentDestinationString();
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testDataManagementIntent() throws RemoteException {
Intent exp = new Intent("dummy");
when(mBackupTransport.dataManagementIntent()).thenReturn(exp);
Intent ret = mDelegatingTransport.dataManagementIntent();
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).dataManagementIntent();
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testDataManagementIntentLabel() throws RemoteException {
String exp = "dummy";
when(mBackupTransport.dataManagementIntentLabel()).thenReturn(exp);
CharSequence ret = mDelegatingTransport.dataManagementIntentLabel();
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).dataManagementIntentLabel();
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testTransportDirName() throws RemoteException {
String exp = "dummy";
when(mBackupTransport.transportDirName()).thenReturn(exp);
String ret = mDelegatingTransport.transportDirName();
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).transportDirName();
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testRequestBackupTime() throws RemoteException {
long exp = 1000L;
when(mBackupTransport.requestBackupTime()).thenReturn(exp);
long ret = mDelegatingTransport.requestBackupTime();
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).requestBackupTime();
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testInitializeDevice() throws RemoteException {
int exp = 1000;
when(mBackupTransport.initializeDevice()).thenReturn(exp);
long ret = mDelegatingTransport.initializeDevice();
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).initializeDevice();
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testPerformBackup() throws RemoteException {
int exp = 1000;
when(mBackupTransport.performBackup(mPackageInfo, mFd, mFlags)).thenReturn(exp);
int ret = mDelegatingTransport.performBackup(mPackageInfo, mFd, mFlags);
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).performBackup(mPackageInfo, mFd, mFlags);
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testClearBackupData() throws RemoteException {
int exp = 1000;
when(mBackupTransport.clearBackupData(mPackageInfo)).thenReturn(exp);
int ret = mDelegatingTransport.clearBackupData(mPackageInfo);
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).clearBackupData(mPackageInfo);
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testFinishBackup() throws RemoteException {
int exp = 1000;
when(mBackupTransport.finishBackup()).thenReturn(exp);
int ret = mDelegatingTransport.finishBackup();
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).finishBackup();
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testGetAvailableRestoreSets() throws RemoteException {
RestoreSet[] exp = new RestoreSet[] {mRestoreSet};
when(mBackupTransport.getAvailableRestoreSets()).thenReturn(exp);
RestoreSet[] ret = mDelegatingTransport.getAvailableRestoreSets();
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).getAvailableRestoreSets();
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testGetCurrentRestoreSet() throws RemoteException {
long exp = 1000;
when(mBackupTransport.getCurrentRestoreSet()).thenReturn(exp);
long ret = mDelegatingTransport.getCurrentRestoreSet();
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).getCurrentRestoreSet();
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testStartRestore() throws RemoteException {
int exp = 1000;
PackageInfo[] packageInfos = {mPackageInfo};
when(mBackupTransport.startRestore(mRestoreToken, packageInfos)).thenReturn(exp);
int ret = mDelegatingTransport.startRestore(mRestoreToken, packageInfos);
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).startRestore(mRestoreToken, packageInfos);
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testNextRestorePackage() throws RemoteException {
RestoreDescription exp = new RestoreDescription(mPackageName, 1);
when(mBackupTransport.nextRestorePackage()).thenReturn(exp);
RestoreDescription ret = mDelegatingTransport.nextRestorePackage();
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).nextRestorePackage();
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testGetRestoreData() throws RemoteException {
int exp = 1000;
when(mBackupTransport.getRestoreData(mFd)).thenReturn(exp);
int ret = mDelegatingTransport.getRestoreData(mFd);
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).getRestoreData(mFd);
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void tesFinishRestore() throws RemoteException {
mDelegatingTransport.finishRestore();
verify(mBackupTransport, times(1)).finishRestore();
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testRequestFullBackupTime() throws RemoteException {
long exp = 1000L;
when(mBackupTransport.requestFullBackupTime()).thenReturn(exp);
long ret = mDelegatingTransport.requestFullBackupTime();
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).requestFullBackupTime();
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testPerformFullBackup() throws RemoteException {
int exp = 1000;
when(mBackupTransport.performFullBackup(mPackageInfo, mFd, mFlags)).thenReturn(exp);
int ret = mDelegatingTransport.performFullBackup(mPackageInfo, mFd, mFlags);
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).performFullBackup(mPackageInfo, mFd, mFlags);
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testCheckFullBackupSize() throws RemoteException {
int exp = 1000;
when(mBackupTransport.checkFullBackupSize(mSize)).thenReturn(exp);
int ret = mDelegatingTransport.checkFullBackupSize(mSize);
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).checkFullBackupSize(mSize);
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testSendBackupData() throws RemoteException {
int exp = 1000;
when(mBackupTransport.sendBackupData(mNumBytes)).thenReturn(exp);
int ret = mDelegatingTransport.sendBackupData(mNumBytes);
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).sendBackupData(mNumBytes);
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testCancelFullBackup() throws RemoteException {
mDelegatingTransport.cancelFullBackup();
verify(mBackupTransport, times(1)).cancelFullBackup();
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testIsAppEligibleForBackup() throws RemoteException {
boolean exp = true;
when(mBackupTransport.isAppEligibleForBackup(mPackageInfo, true)).thenReturn(exp);
boolean ret = mDelegatingTransport.isAppEligibleForBackup(mPackageInfo, true);
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).isAppEligibleForBackup(mPackageInfo, true);
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testGetBackupQuota() throws RemoteException {
long exp = 1000;
when(mBackupTransport.getBackupQuota(mPackageName, true)).thenReturn(exp);
long ret = mDelegatingTransport.getBackupQuota(mPackageName, true);
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).getBackupQuota(mPackageName, true);
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testGetNextFullRestoreDataChunk() throws RemoteException {
int exp = 1000;
when(mBackupTransport.getNextFullRestoreDataChunk(mFd)).thenReturn(exp);
int ret = mDelegatingTransport.getNextFullRestoreDataChunk(mFd);
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).getNextFullRestoreDataChunk(mFd);
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testAbortFullRestore() throws RemoteException {
int exp = 1000;
when(mBackupTransport.abortFullRestore()).thenReturn(exp);
int ret = mDelegatingTransport.abortFullRestore();
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).abortFullRestore();
verifyNoMoreInteractions(mBackupTransport);
}
@Test
public void testGetTransportFlags() throws RemoteException {
int exp = 1000;
when(mBackupTransport.getTransportFlags()).thenReturn(exp);
int ret = mDelegatingTransport.getTransportFlags();
assertEquals(exp, ret);
verify(mBackupTransport, times(1)).getTransportFlags();
verifyNoMoreInteractions(mBackupTransport);
}
}