|
14 | 14 |
|
15 | 15 | package com.google.firebase.appcheck.recaptchaenterprise;
|
16 | 16 |
|
17 |
| -import static com.google.common.truth.Truth.assertThat; |
| 17 | +import static org.junit.Assert.assertEquals; |
| 18 | +import static org.junit.Assert.assertNotNull; |
| 19 | +import static org.junit.Assert.assertThrows; |
| 20 | +import static org.mockito.ArgumentMatchers.anyString; |
| 21 | +import static org.mockito.ArgumentMatchers.eq; |
| 22 | +import static org.mockito.Mockito.times; |
| 23 | +import static org.mockito.Mockito.verify; |
| 24 | +import static org.mockito.Mockito.when; |
18 | 25 |
|
| 26 | +import com.google.firebase.FirebaseApp; |
| 27 | +import com.google.firebase.appcheck.AppCheckProvider; |
| 28 | +import com.google.firebase.appcheck.recaptchaenterprise.internal.ProviderMultiResourceComponent; |
| 29 | +import com.google.firebase.appcheck.recaptchaenterprise.internal.RecaptchaEnterpriseAppCheckProvider; |
| 30 | + |
| 31 | +import org.junit.Before; |
19 | 32 | import org.junit.Test;
|
20 | 33 | import org.junit.runner.RunWith;
|
21 |
| -import org.robolectric.RobolectricTestRunner; |
22 |
| -import org.robolectric.annotation.Config; |
| 34 | +import org.mockito.Mock; |
| 35 | +import org.mockito.junit.MockitoJUnitRunner; |
23 | 36 |
|
24 | 37 | /** Tests for {@link RecaptchaEnterpriseAppCheckProviderFactory}. */
|
25 |
| -@RunWith(RobolectricTestRunner.class) |
26 |
| -@Config(manifest = Config.NONE) |
| 38 | +@RunWith(MockitoJUnitRunner.class) |
27 | 39 | public class RecaptchaEnterpriseAppCheckProviderFactoryTest {
|
28 | 40 | static final String SITE_KEY_1 = "siteKey1";
|
29 |
| - static final String SITE_KEY_2 = "siteKey2"; |
| 41 | + |
| 42 | + @Mock private FirebaseApp mockFirebaseApp; |
| 43 | + @Mock private ProviderMultiResourceComponent mockComponent; |
| 44 | + @Mock private RecaptchaEnterpriseAppCheckProvider mockProvider; |
| 45 | + |
| 46 | + @Before |
| 47 | + public void setUp() { |
| 48 | + when(mockFirebaseApp.get(eq(ProviderMultiResourceComponent.class))).thenReturn(mockComponent); |
| 49 | + when(mockComponent.get(anyString())).thenReturn(mockProvider); |
| 50 | + } |
30 | 51 |
|
31 | 52 | @Test
|
32 |
| - public void testGetInstance_callTwiceSameSiteKey_sameInstance() { |
33 |
| - RecaptchaEnterpriseAppCheckProviderFactory firstInstance = |
34 |
| - RecaptchaEnterpriseAppCheckProviderFactory.getInstance(SITE_KEY_1); |
35 |
| - RecaptchaEnterpriseAppCheckProviderFactory secondInstance = |
| 53 | + public void getInstance_nonNullSiteKey_returnsNonNullInstance() { |
| 54 | + RecaptchaEnterpriseAppCheckProviderFactory factory = |
36 | 55 | RecaptchaEnterpriseAppCheckProviderFactory.getInstance(SITE_KEY_1);
|
| 56 | + assertNotNull(factory); |
| 57 | + } |
37 | 58 |
|
38 |
| - assertThat(firstInstance).isEqualTo(secondInstance); |
| 59 | + @Test |
| 60 | + public void getInstance_nullSiteKey_expectThrows() { |
| 61 | + assertThrows( |
| 62 | + NullPointerException.class, |
| 63 | + () -> RecaptchaEnterpriseAppCheckProviderFactory.getInstance(null)); |
| 64 | + } |
| 65 | + |
| 66 | + @Test |
| 67 | + public void create_nonNullFirebaseApp_returnsRecaptchaEnterpriseAppCheckProvider() { |
| 68 | + RecaptchaEnterpriseAppCheckProviderFactory factory = |
| 69 | + RecaptchaEnterpriseAppCheckProviderFactory.getInstance(SITE_KEY_1); |
| 70 | + AppCheckProvider provider = factory.create(mockFirebaseApp); |
| 71 | + assertNotNull(provider); |
| 72 | + assertEquals(RecaptchaEnterpriseAppCheckProvider.class, provider.getClass()); |
39 | 73 | }
|
40 | 74 |
|
41 | 75 | @Test
|
42 |
| - public void testGetInstance_callTwiceDifferentSiteKey_differentInstance() { |
43 |
| - RecaptchaEnterpriseAppCheckProviderFactory firstInstance = |
| 76 | + public void create_callMultipleTimes_providerIsInitializedOnlyOnce() { |
| 77 | + RecaptchaEnterpriseAppCheckProviderFactory factory = |
44 | 78 | RecaptchaEnterpriseAppCheckProviderFactory.getInstance(SITE_KEY_1);
|
45 |
| - RecaptchaEnterpriseAppCheckProviderFactory secondInstance = |
46 |
| - RecaptchaEnterpriseAppCheckProviderFactory.getInstance(SITE_KEY_2); |
47 | 79 |
|
48 |
| - assertThat(firstInstance).isNotEqualTo(secondInstance); |
| 80 | + factory.create(mockFirebaseApp); |
| 81 | + factory.create(mockFirebaseApp); |
| 82 | + factory.create(mockFirebaseApp); |
| 83 | + verify(mockProvider, times(1)).initializeRecaptchaClient(); |
49 | 84 | }
|
50 | 85 | }
|
0 commit comments