aboutsummaryrefslogtreecommitdiff
path: root/app/src/androidTest/java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/androidTest/java')
-rw-r--r--app/src/androidTest/java/com/zeapo/pwdstore/DecryptTest.kt85
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)