• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.robolectric.integrationtests.axt;
2 
3 import static org.junit.Assert.fail;
4 
5 import androidx.annotation.NonNull;
6 import androidx.biometric.BiometricPrompt;
7 import androidx.biometric.BiometricPrompt.PromptInfo;
8 import androidx.fragment.app.FragmentActivity;
9 import androidx.test.ext.junit.runners.AndroidJUnit4;
10 import java.security.NoSuchAlgorithmException;
11 import java.util.concurrent.Executor;
12 import javax.crypto.Cipher;
13 import javax.crypto.NoSuchPaddingException;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.junit.runner.RunWith;
17 import org.robolectric.android.controller.ActivityController;
18 
19 /** Test intercepting classes not present in OpenJDK. */
20 @RunWith(AndroidJUnit4.class)
21 public class CryptoObjectTest {
22 
23   private FragmentActivity fragmentActivity;
24 
25   @Before
setUp()26   public void setUp() {
27     fragmentActivity =
28         ActivityController.of(new FragmentActivity()).create().resume().start().get();
29   }
30 
31   @Test
biometricPromptAuthenticateShouldNotCrashWithNoSuchMethodError()32   public void biometricPromptAuthenticateShouldNotCrashWithNoSuchMethodError()
33       throws NoSuchPaddingException, NoSuchAlgorithmException {
34     BiometricPrompt biometricPrompt =
35         new BiometricPrompt(
36             fragmentActivity,
37             new Executor() {
38               @Override
39               public void execute(Runnable command) {}
40             },
41             new BiometricPrompt.AuthenticationCallback() {
42               @Override
43               public void onAuthenticationError(int errorCode, @NonNull CharSequence errString) {}
44 
45               @Override
46               public void onAuthenticationSucceeded(
47                   @NonNull BiometricPrompt.AuthenticationResult result) {}
48 
49               @Override
50               public void onAuthenticationFailed() {}
51             });
52 
53     PromptInfo promptInfo =
54         new PromptInfo.Builder()
55             .setTitle("Set and not empty")
56             .setNegativeButtonText("Set and not empty")
57             .build();
58     try {
59       biometricPrompt.authenticate(
60           promptInfo, new BiometricPrompt.CryptoObject(Cipher.getInstance("RSA")));
61     } catch (NoSuchMethodError e) {
62       fail();
63     }
64   }
65 }
66