|
24 | 24 | import static org.mockito.Mockito.when; |
25 | 25 |
|
26 | 26 | import com.google.firebase.FirebaseApp; |
| 27 | +import com.google.firebase.FirebaseOptions; |
27 | 28 | import com.google.firebase.appcheck.AppCheckProvider; |
28 | 29 | import com.google.firebase.appcheck.recaptchaenterprise.internal.ProviderMultiResourceComponent; |
29 | 30 | import com.google.firebase.appcheck.recaptchaenterprise.internal.RecaptchaEnterpriseAppCheckProvider; |
30 | 31 | import org.junit.Before; |
31 | 32 | import org.junit.Test; |
32 | 33 | import org.junit.runner.RunWith; |
33 | 34 | import org.mockito.Mock; |
34 | | -import org.mockito.junit.MockitoJUnitRunner; |
| 35 | +import org.mockito.MockitoAnnotations; |
| 36 | +import org.robolectric.RobolectricTestRunner; |
| 37 | +import org.robolectric.annotation.Config; |
35 | 38 |
|
36 | 39 | /** Tests for {@link RecaptchaEnterpriseAppCheckProviderFactory}. */ |
37 | | -@RunWith(MockitoJUnitRunner.class) |
| 40 | +@RunWith(RobolectricTestRunner.class) |
| 41 | +@Config(manifest = Config.NONE) |
38 | 42 | public class RecaptchaEnterpriseAppCheckProviderFactoryTest { |
39 | 43 | static final String SITE_KEY_1 = "siteKey1"; |
40 | 44 |
|
41 | 45 | @Mock private FirebaseApp mockFirebaseApp; |
| 46 | + @Mock private FirebaseOptions mockFirebaseOptions; |
42 | 47 | @Mock private ProviderMultiResourceComponent mockComponent; |
43 | 48 | @Mock private RecaptchaEnterpriseAppCheckProvider mockProvider; |
44 | 49 |
|
45 | 50 | @Before |
46 | 51 | public void setUp() { |
| 52 | + MockitoAnnotations.openMocks(this); |
47 | 53 | when(mockFirebaseApp.get(eq(ProviderMultiResourceComponent.class))).thenReturn(mockComponent); |
48 | 54 | when(mockComponent.get(anyString())).thenReturn(mockProvider); |
| 55 | + when(mockFirebaseApp.getOptions()).thenReturn(mockFirebaseOptions); |
49 | 56 | } |
50 | 57 |
|
51 | 58 | @Test |
52 | | - public void getInstance_nonNullSiteKey_returnsNonNullInstance() { |
| 59 | + public void getInstance_returnsNonNullInstance() { |
53 | 60 | RecaptchaEnterpriseAppCheckProviderFactory factory = |
54 | | - RecaptchaEnterpriseAppCheckProviderFactory.getInstance(SITE_KEY_1); |
| 61 | + RecaptchaEnterpriseAppCheckProviderFactory.getInstance(); |
55 | 62 | assertNotNull(factory); |
56 | 63 | } |
57 | 64 |
|
58 | 65 | @Test |
59 | | - public void getInstance_nullSiteKey_expectThrows() { |
60 | | - assertThrows( |
61 | | - NullPointerException.class, |
62 | | - () -> RecaptchaEnterpriseAppCheckProviderFactory.getInstance(null)); |
63 | | - } |
64 | | - |
65 | | - @Test |
66 | | - public void create_nonNullFirebaseApp_returnsRecaptchaEnterpriseAppCheckProvider() { |
| 66 | + public void create_siteKeyInOptions_returnsRecaptchaEnterpriseAppCheckProvider() { |
| 67 | + when(mockFirebaseOptions.getRecaptchaSiteKey()).thenReturn(SITE_KEY_1); |
67 | 68 | RecaptchaEnterpriseAppCheckProviderFactory factory = |
68 | | - RecaptchaEnterpriseAppCheckProviderFactory.getInstance(SITE_KEY_1); |
| 69 | + RecaptchaEnterpriseAppCheckProviderFactory.getInstance(); |
69 | 70 | AppCheckProvider provider = factory.create(mockFirebaseApp); |
70 | 71 | assertNotNull(provider); |
71 | 72 | assertEquals(RecaptchaEnterpriseAppCheckProvider.class, provider.getClass()); |
| 73 | + verify(mockComponent).get(SITE_KEY_1); |
| 74 | + } |
| 75 | + |
| 76 | + @Test |
| 77 | + public void create_noSiteKeyInOptionsOrFactory_expectThrows() { |
| 78 | + when(mockFirebaseOptions.getRecaptchaSiteKey()).thenReturn(null); |
| 79 | + RecaptchaEnterpriseAppCheckProviderFactory factory = |
| 80 | + RecaptchaEnterpriseAppCheckProviderFactory.getInstance(); |
| 81 | + assertThrows(IllegalArgumentException.class, () -> factory.create(mockFirebaseApp)); |
72 | 82 | } |
73 | 83 |
|
74 | 84 | @Test |
75 | 85 | public void create_callMultipleTimes_providerIsInitializedOnlyOnce() { |
| 86 | + when(mockFirebaseOptions.getRecaptchaSiteKey()).thenReturn(SITE_KEY_1); |
76 | 87 | RecaptchaEnterpriseAppCheckProviderFactory factory = |
77 | | - RecaptchaEnterpriseAppCheckProviderFactory.getInstance(SITE_KEY_1); |
| 88 | + RecaptchaEnterpriseAppCheckProviderFactory.getInstance(); |
78 | 89 |
|
79 | 90 | factory.create(mockFirebaseApp); |
80 | 91 | factory.create(mockFirebaseApp); |
|
0 commit comments