diff --git a/core/main/src/test/java/info/nightscout/core/utils/CryptoUtilTest.kt b/core/main/src/test/java/info/nightscout/core/utils/CryptoUtilTest.kt index e6ca023bc4..e57753fddb 100644 --- a/core/main/src/test/java/info/nightscout/core/utils/CryptoUtilTest.kt +++ b/core/main/src/test/java/info/nightscout/core/utils/CryptoUtilTest.kt @@ -1,9 +1,7 @@ package info.nightscout.core.utils +import com.google.common.truth.TruthJUnit.assume import info.nightscout.sharedtests.TestBase -import org.hamcrest.CoreMatchers.containsString -import org.hamcrest.CoreMatchers.not -import org.junit.Assume.assumeThat import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test @@ -11,9 +9,10 @@ import org.junit.jupiter.api.Test // https://stackoverflow.com/questions/47708951/can-aes-256-work-on-android-devices-with-api-level-26 // Java prior to Oracle Java 8u161 does not have policy for 256 bit AES - but Android support it // when test is run in Vanilla JVM without policy - Invalid key size exception is thrown -fun assumeAES256isSupported(cryptoUtil: CryptoUtil) { +private fun assumeAES256isSupported(cryptoUtil: CryptoUtil) { cryptoUtil.lastException?.message?.let { exceptionMessage -> - assumeThat("Upgrade your testing environment Java (OpenJDK or Java 8u161) and JAVA_HOME - AES 256 is supported by Android so this exception should not happen!", exceptionMessage, not(containsString("key size"))) + assume().withMessage("Upgrade your testing environment Java (OpenJDK or Java 8u161) and JAVA_HOME - AES 256 is supported by Android so this exception should not happen!") + .that(exceptionMessage).doesNotContain("key size") } } @@ -26,7 +25,8 @@ class CryptoUtilTest : TestBase() { fun testFixedSaltCrypto() { val salt = byteArrayOf( -33, -29, 16, -19, 99, -111, -3, 2, 116, 106, 47, 38, -54, 11, -77, 28, - 111, -15, -65, -110, 4, -32, -29, -70, -95, -88, -53, 19, 87, -103, 123, -15) + 111, -15, -65, -110, 4, -32, -29, -70, -95, -88, -53, 19, 87, -103, 123, -15 + ) val password = "thisIsFixedPassword" val payload = "FIXED-PAYLOAD" @@ -83,10 +83,30 @@ class CryptoUtilTest : TestBase() { Assertions.assertTrue(cryptoUtil.checkPassword("givenSecret", cryptoUtil.hashPassword("givenSecret"))) Assertions.assertFalse(cryptoUtil.checkPassword("givenSecret", cryptoUtil.hashPassword("otherSecret"))) - Assertions.assertTrue(cryptoUtil.checkPassword("givenHashToCheck", "hmac:7fe5f9c7b4b97c5d32d5cfad9d07473543a9938dc07af48a46dbbb49f4f68c12:a0c7cee14312bbe31b51359a67f0d2dfdf46813f319180269796f1f617a64be1")) - Assertions.assertFalse(cryptoUtil.checkPassword("givenMashToCheck", "hmac:7fe5f9c7b4b97c5d32d5cfad9d07473543a9938dc07af48a46dbbb49f4f68c12:a0c7cee14312bbe31b51359a67f0d2dfdf46813f319180269796f1f617a64be1")) - Assertions.assertFalse(cryptoUtil.checkPassword("givenHashToCheck", "hmac:0fe5f9c7b4b97c5d32d5cfad9d07473543a9938dc07af48a46dbbb49f4f68c12:a0c7cee14312bbe31b51359a67f0d2dfdf46813f319180269796f1f617a64be1")) - Assertions.assertFalse(cryptoUtil.checkPassword("givenHashToCheck", "hmac:7fe5f9c7b4b97c5d32d5cfad9d07473543a9938dc07af48a46dbbb49f4f68c12:b0c7cee14312bbe31b51359a67f0d2dfdf46813f319180269796f1f617a64be1")) + Assertions.assertTrue( + cryptoUtil.checkPassword( + "givenHashToCheck", + "hmac:7fe5f9c7b4b97c5d32d5cfad9d07473543a9938dc07af48a46dbbb49f4f68c12:a0c7cee14312bbe31b51359a67f0d2dfdf46813f319180269796f1f617a64be1" + ) + ) + Assertions.assertFalse( + cryptoUtil.checkPassword( + "givenMashToCheck", + "hmac:7fe5f9c7b4b97c5d32d5cfad9d07473543a9938dc07af48a46dbbb49f4f68c12:a0c7cee14312bbe31b51359a67f0d2dfdf46813f319180269796f1f617a64be1" + ) + ) + Assertions.assertFalse( + cryptoUtil.checkPassword( + "givenHashToCheck", + "hmac:0fe5f9c7b4b97c5d32d5cfad9d07473543a9938dc07af48a46dbbb49f4f68c12:a0c7cee14312bbe31b51359a67f0d2dfdf46813f319180269796f1f617a64be1" + ) + ) + Assertions.assertFalse( + cryptoUtil.checkPassword( + "givenHashToCheck", + "hmac:7fe5f9c7b4b97c5d32d5cfad9d07473543a9938dc07af48a46dbbb49f4f68c12:b0c7cee14312bbe31b51359a67f0d2dfdf46813f319180269796f1f617a64be1" + ) + ) } } diff --git a/core/main/test_dependencies.gradle b/core/main/test_dependencies.gradle index cce79fc6ba..b4f8cf5370 100644 --- a/core/main/test_dependencies.gradle +++ b/core/main/test_dependencies.gradle @@ -8,7 +8,6 @@ dependencies { testImplementation "joda-time:joda-time:$jodatime_version" testImplementation 'com.google.truth:truth:1.1.5' testImplementation "org.skyscreamer:jsonassert:1.5.0" - testImplementation "org.hamcrest:hamcrest-all:1.3" androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' androidTestImplementation "androidx.test.ext:junit-ktx:$androidx_junit_version" @@ -37,4 +36,4 @@ android { } } } -} \ No newline at end of file +} diff --git a/plugins/configuration/src/test/java/info/nightscout/configuration/maintenance/formats/EncryptedPrefsFormatTest.kt b/plugins/configuration/src/test/java/info/nightscout/configuration/maintenance/formats/EncryptedPrefsFormatTest.kt index f97b8fad23..bf76df1f30 100644 --- a/plugins/configuration/src/test/java/info/nightscout/configuration/maintenance/formats/EncryptedPrefsFormatTest.kt +++ b/plugins/configuration/src/test/java/info/nightscout/configuration/maintenance/formats/EncryptedPrefsFormatTest.kt @@ -1,5 +1,6 @@ package info.nightscout.configuration.maintenance.formats +import com.google.common.truth.TruthJUnit.assume import info.nightscout.core.utils.CryptoUtil import info.nightscout.interfaces.maintenance.PrefFormatError import info.nightscout.interfaces.maintenance.PrefMetadata @@ -9,8 +10,6 @@ import info.nightscout.interfaces.maintenance.PrefsMetadataKey import info.nightscout.interfaces.maintenance.PrefsStatus import info.nightscout.shared.interfaces.ResourceHelper import info.nightscout.sharedtests.TestBase -import org.hamcrest.CoreMatchers -import org.junit.Assume import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test @@ -19,6 +18,17 @@ import org.mockito.Mock import org.mockito.Mockito import java.io.File +// https://stackoverflow.com/questions/52344522/joseexception-couldnt-create-aes-gcm-nopadding-cipher-illegal-key-size +// https://stackoverflow.com/questions/47708951/can-aes-256-work-on-android-devices-with-api-level-26 +// Java prior to Oracle Java 8u161 does not have policy for 256 bit AES - but Android support it +// when test is run in Vanilla JVM without policy - Invalid key size exception is thrown +private fun assumeAES256isSupported(cryptoUtil: CryptoUtil) { + cryptoUtil.lastException?.message?.let { exceptionMessage -> + assume().withMessage("Upgrade your testing environment Java (OpenJDK or Java 8u161) and JAVA_HOME - AES 256 is supported by Android so this exception should not happen!") + .that(exceptionMessage).doesNotContain("key size") + } +} + @Suppress("SpellCheckingInspection") open class EncryptedPrefsFormatTest : TestBase() { @@ -27,16 +37,6 @@ open class EncryptedPrefsFormatTest : TestBase() { private var cryptoUtil: CryptoUtil = CryptoUtil(aapsLogger) - // https://stackoverflow.com/questions/52344522/joseexception-couldnt-create-aes-gcm-nopadding-cipher-illegal-key-size - // https://stackoverflow.com/questions/47708951/can-aes-256-work-on-android-devices-with-api-level-26 - // Java prior to Oracle Java 8u161 does not have policy for 256 bit AES - but Android support it - // when test is run in Vanilla JVM without policy - Invalid key size exception is thrown - private fun assumeAES256isSupported(cryptoUtil: CryptoUtil) { - cryptoUtil.lastException?.message?.let { exceptionMessage -> - Assume.assumeThat("Upgrade your testing environment Java (OpenJDK or Java 8u161) and JAVA_HOME - AES 256 is supported by Android so this exception should not happen!", exceptionMessage, CoreMatchers.not(CoreMatchers.containsString("key size"))) - } - } - @BeforeEach fun mock() { Mockito.`when`(rh.gs(ArgumentMatchers.anyInt())).thenReturn("mock translation")