diff options
Diffstat (limited to 'app/src/androidTest/java')
-rw-r--r-- | app/src/androidTest/java/com/zeapo/pwdstore/DecryptTest.kt | 85 |
1 files changed, 58 insertions, 27 deletions
diff --git a/app/src/androidTest/java/com/zeapo/pwdstore/DecryptTest.kt b/app/src/androidTest/java/com/zeapo/pwdstore/DecryptTest.kt index 52e1e65d..eba20e1d 100644 --- a/app/src/androidTest/java/com/zeapo/pwdstore/DecryptTest.kt +++ b/app/src/androidTest/java/com/zeapo/pwdstore/DecryptTest.kt @@ -9,6 +9,7 @@ import android.support.test.runner.AndroidJUnit4 import android.util.Log import com.zeapo.pwdstore.crypto.PgpActivity import kotlinx.android.synthetic.main.decrypt_layout.* +import org.apache.commons.io.FileUtils import org.apache.commons.io.IOUtils import org.junit.Assert.assertEquals import org.junit.Assert.assertNotNull @@ -22,37 +23,47 @@ import java.io.IOException @RunWith(AndroidJUnit4::class) @LargeTest -class WelcomeActivityTest { - @Rule @JvmField - var mActivityRule: ActivityTestRule<PgpActivity> = ActivityTestRule(PgpActivity::class.java, true, false) +class DecryptTest { + lateinit var targetContext: Context + lateinit var testContext: Context + lateinit var activity: PgpActivity - @Test - fun pathShouldDecompose() { - val path = "/data/my.app.com/files/store/cat1/name.gpg" - val repoPath = "/data/my.app.com/files/store" - assertEquals("/cat1/name.gpg", PgpActivity.getRelativePath(path, repoPath)) - assertEquals("/cat1/", PgpActivity.getParentPath(path, repoPath)) - assertEquals("name", PgpActivity.getName(path, repoPath)) - assertEquals("name", PgpActivity.getName(path, "$repoPath/")) - } + val name = "sub" + val parentPath = "/category/" + lateinit var path: String + lateinit var repoPath: String - @Test - fun activityShouldShowName() { - val context = InstrumentationRegistry.getInstrumentation().targetContext - val name = "name" - val parentPath = "/cat1/" - val repoPath = "${context.filesDir}/store/" - val path = "$repoPath/cat1/name.gpg" + @Rule @JvmField + var mActivityRule: ActivityTestRule<PgpActivity> = ActivityTestRule<PgpActivity>(PgpActivity::class.java, true, false) + fun init() { + targetContext = InstrumentationRegistry.getInstrumentation().targetContext + testContext = InstrumentationRegistry.getContext() + copyAssets("encrypted-store", File(targetContext.filesDir, "test-store").absolutePath) + repoPath = File(targetContext.filesDir, "test-store").absolutePath + path = "$repoPath/$parentPath/$name.gpg".replace("//", "/") - val intent = Intent(context, PgpActivity::class.java) + val intent = Intent(targetContext, PgpActivity::class.java) intent.putExtra("OPERATION", "DECRYPT") intent.putExtra("FILE_PATH", path) intent.putExtra("REPO_PATH", repoPath) - copyAssets(context, "store", context.filesDir.absolutePath) + activity = mActivityRule.launchActivity(intent) + } + + @Test + fun pathShouldDecompose() { + init() + + assertEquals("/category/sub.gpg", PgpActivity.getRelativePath(path, repoPath)) + assertEquals("/category/", PgpActivity.getParentPath(path, repoPath)) + assertEquals("sub", PgpActivity.getName(path, repoPath)) + assertEquals("sub", PgpActivity.getName(path, "$repoPath/")) + } - val activity: PgpActivity = mActivityRule.launchActivity(intent) + @Test + fun activityShouldShowName() { + init() val categoryView = activity.crypto_password_category_decrypt assertNotNull(categoryView) @@ -63,17 +74,37 @@ class WelcomeActivityTest { assertEquals(name, nameView.text) } + @Test + fun shouldDecrypt() { + init() + + activity.onBound(null) + val clearPass = IOUtils.toString( + IOUtils.toByteArray(testContext.assets.open("clear-store/category/sub")), + Charsets.UTF_8.name() + ) + val passEntry = PasswordEntry(clearPass) + assertEquals(passEntry.password, activity.crypto_password_show.text) + assertEquals(passEntry.username, activity.crypto_username_show.text.toString()) + assertEquals(passEntry.extraContent, activity.crypto_extra_show.text.toString()) + } + companion object { - fun copyAssets(context: Context, source: String, destination: String) { - val assetManager = context.assets + fun copyAssets(source: String, destination: String) { + FileUtils.forceMkdir(File(destination)) + FileUtils.cleanDirectory(File(destination)) + + val testContext = InstrumentationRegistry.getContext() + val assetManager = testContext.assets val files: Array<String>? = assetManager.list(source) files?.map { filename -> val destPath = "$destination/$filename" val sourcePath = "$source/$filename" - if (assetManager.list(filename).isNotEmpty()) { - File(destPath).mkdir() - copyAssets(context, "$source/$filename", destPath) + + if (assetManager.list(sourcePath).isNotEmpty()) { + FileUtils.forceMkdir(File(destination, filename)) + copyAssets("$source/$filename", destPath) } else { try { val input = assetManager.open(sourcePath) |