-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCryptoResourceGeneratorTest.kt
59 lines (50 loc) · 1.87 KB
/
CryptoResourceGeneratorTest.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package core
import com.kitano.crypto.internal.CryptoResourceGenerator
import com.kitano.crypto.internal.CryptoResourceGenerator.generateSalt
import java.security.NoSuchAlgorithmException
import javax.crypto.SecretKeyFactory
import org.junit.Assert.assertArrayEquals
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Test
class CryptoResourceGeneratorTest {
private val classUnderTest = CryptoResourceGenerator
@Test
fun `deriveKey produces consistent output`() {
val password = "testPassword"
val salt = generateSalt()
val keyLength = 256
val derivedKey1 = CryptoResourceGenerator.deriveKey(password, salt, keyLength)
val derivedKey2 = CryptoResourceGenerator.deriveKey(password, salt, keyLength)
assertArrayEquals(derivedKey1, derivedKey2)
}
@Test(expected = NoSuchAlgorithmException::class)
fun `deriveKey throws NoSuchAlgorithmException if invalid algorithm is used`() {
SecretKeyFactory.getInstance("InvalidAlgorithm")
}
@Test
fun `generateIV produces random output`() {
val size = 16
val iv1 = CryptoResourceGenerator.generateIV(size)
val iv2 = CryptoResourceGenerator.generateIV(size)
assertFalse(iv1.contentEquals(iv2))
}
@Test
fun `generateIV produces correct length output`() {
val size = 16
val iv = CryptoResourceGenerator.generateIV(size)
assertEquals(size, iv.size)
}
@Test
fun `generateSalt produces random output`() {
val salt1 = classUnderTest.generateSalt()
val salt2 = classUnderTest.generateSalt()
assertFalse(salt1.contentEquals(salt2))
}
@Test
fun `generateSalt produces correct length output`() {
val expectedSize = 16
val salt = classUnderTest.generateSalt()
assertEquals(expectedSize, salt.size)
}
}