1 package org.robolectric.integrationtests.axt; 2 3 import static org.junit.Assert.fail; 4 5 import androidx.biometric.BiometricPrompt; 6 import androidx.biometric.BiometricPrompt.PromptInfo; 7 import androidx.fragment.app.FragmentActivity; 8 import androidx.test.ext.junit.runners.AndroidJUnit4; 9 import java.security.NoSuchAlgorithmException; 10 import javax.crypto.Cipher; 11 import javax.crypto.NoSuchPaddingException; 12 import org.junit.Before; 13 import org.junit.Test; 14 import org.junit.runner.RunWith; 15 import org.robolectric.android.controller.ActivityController; 16 17 /** Test intercepting classes not present in OpenJDK. */ 18 @RunWith(AndroidJUnit4.class) 19 public class CryptoObjectTest { 20 21 private FragmentActivity fragmentActivity; 22 23 @Before setUp()24 public void setUp() { 25 fragmentActivity = 26 ActivityController.of(new FragmentActivity()).create().resume().start().get(); 27 } 28 29 @Test biometricPromptAuthenticateShouldNotCrashWithNoSuchMethodError()30 public void biometricPromptAuthenticateShouldNotCrashWithNoSuchMethodError() 31 throws NoSuchPaddingException, NoSuchAlgorithmException { 32 BiometricPrompt biometricPrompt = 33 new BiometricPrompt( 34 fragmentActivity, command -> {}, new BiometricPrompt.AuthenticationCallback() {}); 35 36 PromptInfo promptInfo = 37 new PromptInfo.Builder() 38 .setTitle("Set and not empty") 39 .setNegativeButtonText("Set and not empty") 40 .build(); 41 try { 42 biometricPrompt.authenticate( 43 promptInfo, new BiometricPrompt.CryptoObject(Cipher.getInstance("RSA"))); 44 } catch (NoSuchMethodError e) { 45 fail(); 46 } 47 } 48 } 49