/*
|
* Copyright (C) 2017 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 android.cts.backup.backupnotallowedapp;
|
|
import static androidx.test.InstrumentationRegistry.getTargetContext;
|
|
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertTrue;
|
|
import android.content.Context;
|
import android.platform.test.annotations.AppModeFull;
|
import android.util.Log;
|
|
import androidx.test.runner.AndroidJUnit4;
|
|
import org.junit.Before;
|
import org.junit.Test;
|
import org.junit.runner.RunWith;
|
|
import java.io.BufferedOutputStream;
|
import java.io.File;
|
import java.io.FileOutputStream;
|
import java.io.IOException;
|
import java.util.Random;
|
|
/**
|
* Device side routines to be invoked by the host side AllowBackupHostSideTest. These are not
|
* designed to be called in any other way, as they rely on state set up by the host side test.
|
*
|
*/
|
@RunWith(AndroidJUnit4.class)
|
@AppModeFull
|
public class AllowBackupTest {
|
public static final String TAG = "AllowBackupCTSApp";
|
private static final int FILE_SIZE_BYTES = 1024 * 1024;
|
|
private Context mContext;
|
|
private File mDoBackupFile;
|
private File mDoBackupFile2;
|
|
@Before
|
public void setUp() {
|
mContext = getTargetContext();
|
setupFiles();
|
}
|
|
private void setupFiles() {
|
File filesDir = mContext.getFilesDir();
|
File normalFolder = new File(filesDir, "normal_folder");
|
|
mDoBackupFile = new File(filesDir, "file_to_backup");
|
mDoBackupFile2 = new File(normalFolder, "file_to_backup2");
|
}
|
|
@Test
|
public void createFiles() throws Exception {
|
// Make sure the data does not exist from before
|
deleteAllFiles();
|
assertNoFilesExist();
|
|
// Create test data
|
generateFiles();
|
assertAllFilesExist();
|
|
Log.d(TAG, "Test files created: \n"
|
+ mDoBackupFile.getAbsolutePath() + "\n"
|
+ mDoBackupFile2.getAbsolutePath());
|
}
|
|
@Test
|
public void checkNoFilesExist() throws Exception {
|
assertNoFilesExist();
|
}
|
|
@Test
|
public void checkAllFilesExist() throws Exception {
|
assertAllFilesExist();
|
}
|
|
private void generateFiles() {
|
try {
|
// Add data to all the files we created
|
addData(mDoBackupFile);
|
addData(mDoBackupFile2);
|
Log.d(TAG, "Files generated!");
|
} catch (IOException e) {
|
Log.e(TAG, "Unable to generate files", e);
|
}
|
}
|
|
private void deleteAllFiles() {
|
mDoBackupFile.delete();
|
mDoBackupFile2.delete();
|
Log.d(TAG, "Files deleted!");
|
}
|
|
private void addData(File file) throws IOException {
|
file.getParentFile().mkdirs();
|
byte[] bytes = new byte[FILE_SIZE_BYTES];
|
new Random().nextBytes(bytes);
|
|
try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file))) {
|
bos.write(bytes, 0, bytes.length);
|
}
|
}
|
|
private void assertAllFilesExist() {
|
assertTrue("File in 'files' did not exist!", mDoBackupFile.exists());
|
assertTrue("File in folder inside 'files' did not exist!", mDoBackupFile2.exists());
|
}
|
|
private void assertNoFilesExist() {
|
assertFalse("File in 'files' did exist!", mDoBackupFile.exists());
|
assertFalse("File in folder inside 'files' did exist!", mDoBackupFile2.exists());
|
}
|
}
|