summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crypto-pgpainless/src/test/kotlin/app/passwordstore/crypto/PGPKeyManagerTest.kt81
1 files changed, 22 insertions, 59 deletions
diff --git a/crypto-pgpainless/src/test/kotlin/app/passwordstore/crypto/PGPKeyManagerTest.kt b/crypto-pgpainless/src/test/kotlin/app/passwordstore/crypto/PGPKeyManagerTest.kt
index 1bb8553c..c8bd66c5 100644
--- a/crypto-pgpainless/src/test/kotlin/app/passwordstore/crypto/PGPKeyManagerTest.kt
+++ b/crypto-pgpainless/src/test/kotlin/app/passwordstore/crypto/PGPKeyManagerTest.kt
@@ -11,25 +11,18 @@ import com.github.michaelbull.result.Ok
import com.github.michaelbull.result.unwrap
import com.github.michaelbull.result.unwrapError
import java.io.File
-import kotlin.test.AfterTest
-import kotlin.test.BeforeTest
import kotlin.test.Test
import kotlin.test.assertContentEquals
import kotlin.test.assertEquals
import kotlin.test.assertIs
import kotlin.test.assertNotEquals
import kotlin.test.assertNotNull
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
-import kotlinx.coroutines.test.resetMain
import kotlinx.coroutines.test.runTest
-import kotlinx.coroutines.test.setMain
import org.junit.Rule
import org.junit.rules.TemporaryFolder
-@OptIn(ExperimentalCoroutinesApi::class)
class PGPKeyManagerTest {
@get:Rule val temporaryFolder: TemporaryFolder = TemporaryFolder()
@@ -44,26 +37,14 @@ class PGPKeyManagerTest {
private fun <T> unsafeLazy(initializer: () -> T) =
lazy(LazyThreadSafetyMode.NONE) { initializer.invoke() }
- @BeforeTest
- fun setUp() {
- Dispatchers.setMain(dispatcher)
- }
-
- @AfterTest
- fun tearDown() {
- Dispatchers.resetMain()
- }
-
@Test
fun addKey() =
- scope.runTest {
+ runTest(dispatcher) {
// Check if the key id returned is correct
val keyId = keyManager.getKeyId(keyManager.addKey(secretKey).unwrap())
assertEquals(KeyId(CryptoConstants.KEY_ID), keyId)
-
// Check if the keys directory have one file
assertEquals(1, filesDir.list()?.size)
-
// Check if the file name is correct
val keyFile = keysDir.listFiles()?.first()
assertEquals(keyFile?.name, "$keyId.${PGPKeyManager.KEY_EXTENSION}")
@@ -71,7 +52,7 @@ class PGPKeyManagerTest {
@Test
fun addKeyWithoutReplaceFlag() =
- scope.runTest {
+ runTest(dispatcher) {
// Check adding the keys twice
keyManager.addKey(secretKey, false).unwrap()
val error = keyManager.addKey(secretKey, false).unwrapError()
@@ -81,7 +62,7 @@ class PGPKeyManagerTest {
@Test
fun addKeyWithReplaceFlag() =
- scope.runTest {
+ runTest(dispatcher) {
// Check adding the keys twice
keyManager.addKey(secretKey, true).unwrap()
val keyId = keyManager.getKeyId(keyManager.addKey(secretKey, true).unwrap())
@@ -91,13 +72,11 @@ class PGPKeyManagerTest {
@Test
fun removeKey() =
- scope.runTest {
+ runTest(dispatcher) {
// Add key using KeyManager
keyManager.addKey(secretKey).unwrap()
-
// Remove key
keyManager.removeKey(tryGetId(secretKey)!!).unwrap()
-
// Check that no keys remain
val keys = keyManager.getAllKeys().unwrap()
assertEquals(0, keys.size)
@@ -105,14 +84,12 @@ class PGPKeyManagerTest {
@Test
fun getKeyById() =
- scope.runTest {
+ runTest(dispatcher) {
// Add key using KeyManager
keyManager.addKey(secretKey).unwrap()
-
val keyId = keyManager.getKeyId(secretKey)
assertNotNull(keyId)
assertEquals(KeyId(CryptoConstants.KEY_ID), keyManager.getKeyId(secretKey))
-
// Check returned key id matches the expected id and the created key id
val returnedKey = keyManager.getKeyById(keyId).unwrap()
assertEquals(keyManager.getKeyId(secretKey), keyManager.getKeyId(returnedKey))
@@ -120,9 +97,8 @@ class PGPKeyManagerTest {
@Test
fun getKeyByFullUserId() =
- scope.runTest {
+ runTest(dispatcher) {
keyManager.addKey(secretKey).unwrap()
-
val keyId = "${CryptoConstants.KEY_NAME} <${CryptoConstants.KEY_EMAIL}>"
val returnedKey = keyManager.getKeyById(UserId(keyId)).unwrap()
assertEquals(keyManager.getKeyId(secretKey), keyManager.getKeyId(returnedKey))
@@ -130,9 +106,8 @@ class PGPKeyManagerTest {
@Test
fun getKeyByEmailUserId() =
- scope.runTest {
+ runTest(dispatcher) {
keyManager.addKey(secretKey).unwrap()
-
val keyId = CryptoConstants.KEY_EMAIL
val returnedKey = keyManager.getKeyById(UserId(keyId)).unwrap()
assertEquals(keyManager.getKeyId(secretKey), keyManager.getKeyId(returnedKey))
@@ -140,12 +115,10 @@ class PGPKeyManagerTest {
@Test
fun getNonExistentKey() =
- scope.runTest {
+ runTest(dispatcher) {
// Add key using KeyManager
keyManager.addKey(secretKey).unwrap()
-
val keyId = KeyId(0x08edf7567183ce44)
-
// Check returned key
val error = keyManager.getKeyById(keyId).unwrapError()
assertIs<KeyNotFoundException>(error)
@@ -154,7 +127,7 @@ class PGPKeyManagerTest {
@Test
fun findNonExistentKey() =
- scope.runTest {
+ runTest(dispatcher) {
// Check returned key
val error = keyManager.getKeyById(KeyId(0x08edf7567183ce44)).unwrapError()
assertIs<NoKeysAvailableException>(error)
@@ -163,52 +136,46 @@ class PGPKeyManagerTest {
@Test
fun getAllKeys() =
- scope.runTest {
+ runTest(dispatcher) {
// Check if KeyManager returns no key
val noKeyList = keyManager.getAllKeys().unwrap()
assertEquals(0, noKeyList.size)
-
// Add key using KeyManager
keyManager.addKey(secretKey).unwrap()
keyManager.addKey(PGPKey(TestUtils.getArmoredSecretKeyWithMultipleIdentities())).unwrap()
-
// Check if KeyManager returns one key
val singleKeyList = keyManager.getAllKeys().unwrap()
assertEquals(2, singleKeyList.size)
}
@Test
- fun getMultipleIdentityKeyWithAllIdentities() {
- scope.runTest {
+ fun getMultipleIdentityKeyWithAllIdentities() =
+ runTest(dispatcher) {
val key = PGPKey(TestUtils.getArmoredSecretKeyWithMultipleIdentities())
keyManager.addKey(key).unwrap()
-
val johnKey = keyManager.getKeyById(UserId("john@doe.org")).unwrap()
val janeKey = keyManager.getKeyById(UserId("jane@doe.org")).unwrap()
assertContentEquals(johnKey.contents, janeKey.contents)
}
- }
@Test
- fun replaceSecretKeyWithPublicKey() {
- scope.runTest {
+ fun replaceSecretKeyWithPublicKey() =
+ runTest(dispatcher) {
assertIs<Ok<PGPKey>>(keyManager.addKey(secretKey))
assertIs<Err<KeyAlreadyExistsException>>(keyManager.addKey(publicKey))
}
- }
@Test
- fun replacePublicKeyWithSecretKey() {
- scope.runTest {
+ fun replacePublicKeyWithSecretKey() =
+ runTest(dispatcher) {
assertIs<Ok<PGPKey>>(keyManager.addKey(publicKey))
assertIs<Ok<PGPKey>>(keyManager.addKey(secretKey))
}
- }
@Test
- fun replacePublicKeyWithPublicKey() {
- scope.runTest {
+ fun replacePublicKeyWithPublicKey() =
+ runTest(dispatcher) {
assertIs<Ok<PGPKey>>(keyManager.addKey(publicKey))
assertIs<Ok<PGPKey>>(keyManager.addKey(publicKey))
val allKeys = keyManager.getAllKeys()
@@ -217,19 +184,17 @@ class PGPKeyManagerTest {
val key = allKeys.value[0]
assertContentEquals(publicKey.contents, key.contents)
}
- }
@Test
- fun replaceSecretKeyWithSecretKey() {
- scope.runTest {
+ fun replaceSecretKeyWithSecretKey() =
+ runTest(dispatcher) {
assertIs<Ok<PGPKey>>(keyManager.addKey(secretKey))
assertIs<Err<KeyAlreadyExistsException>>(keyManager.addKey(secretKey))
}
- }
@Test
- fun addMultipleKeysWithSameEmail() {
- scope.runTest {
+ fun addMultipleKeysWithSameEmail() =
+ runTest(dispatcher) {
val alice =
PGPKey(this::class.java.classLoader.getResource("alice_owner@example_com")!!.readBytes())
val bobby =
@@ -241,7 +206,6 @@ class PGPKeyManagerTest {
assertIs<Ok<List<PGPKey>>>(this)
assertEquals(2, this.value.size)
}
-
val longKeyIds =
arrayOf(
KeyId(-7087927403306410599), // Alice
@@ -261,5 +225,4 @@ class PGPKeyManagerTest {
assertNotEquals(alice1.value.contents, bobby1.value.contents)
}
}
- }
}