Skip to content

Commit 2fbeb17

Browse files
committed
Update tests.
1 parent 132d7c2 commit 2fbeb17

File tree

4 files changed

+95
-43
lines changed

4 files changed

+95
-43
lines changed

appcheck/firebase-appcheck/src/main/java/com/google/firebase/appcheck/internal/NetworkClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ public class NetworkClient {
4747
private static final String CONTENT_TYPE = "Content-Type";
4848
private static final String APPLICATION_JSON = "application/json";
4949
private static final String UTF_8 = "UTF-8";
50-
private static final String X_FIREBASE_CLIENT = "X-Firebase-Client";
51-
private static final String X_FIREBASE_CLIENT_LOG_TYPE = "X-Firebase-Client-Log-Type";
50+
@VisibleForTesting static final String X_FIREBASE_CLIENT = "X-Firebase-Client";
51+
@VisibleForTesting static final String X_FIREBASE_CLIENT_LOG_TYPE = "X-Firebase-Client-Log-Type";
5252

5353
private final DefaultFirebaseAppCheck firebaseAppCheck;
5454
private final String apiKey;

appcheck/firebase-appcheck/src/test/java/com/google/firebase/appcheck/FirebaseAppCheckRegistrarTest.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import com.google.firebase.FirebaseApp;
2020
import com.google.firebase.components.Component;
2121
import com.google.firebase.components.Dependency;
22+
import com.google.firebase.heartbeatinfo.HeartBeatInfo;
23+
import com.google.firebase.platforminfo.UserAgentPublisher;
2224
import java.util.List;
2325
import org.junit.Test;
2426
import org.junit.runner.RunWith;
@@ -33,10 +35,13 @@ public void testGetComponents() {
3335
FirebaseAppCheckRegistrar firebaseAppCheckRegistrar = new FirebaseAppCheckRegistrar();
3436
List<Component<?>> components = firebaseAppCheckRegistrar.getComponents();
3537
assertThat(components).isNotEmpty();
36-
assertThat(components).hasSize(1);
38+
assertThat(components).hasSize(2);
3739
Component<?> firebaseAppCheckComponent = components.get(0);
3840
assertThat(firebaseAppCheckComponent.getDependencies())
39-
.containsExactly(Dependency.required(FirebaseApp.class));
41+
.containsExactly(
42+
Dependency.required(FirebaseApp.class),
43+
Dependency.optionalProvider(UserAgentPublisher.class),
44+
Dependency.optionalProvider(HeartBeatInfo.class));
4045
assertThat(firebaseAppCheckComponent.isAlwaysEager()).isTrue();
4146
}
4247
}

appcheck/firebase-appcheck/src/test/java/com/google/firebase/appcheck/internal/DefaultFirebaseAppCheckTest.java

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import com.google.firebase.appcheck.AppCheckProviderFactory;
3030
import com.google.firebase.appcheck.AppCheckTokenResult;
3131
import com.google.firebase.appcheck.interop.AppCheckTokenListener;
32+
import com.google.firebase.heartbeatinfo.HeartBeatInfo;
33+
import com.google.firebase.platforminfo.UserAgentPublisher;
3234
import org.junit.Before;
3335
import org.junit.Test;
3436
import org.junit.runner.RunWith;
@@ -53,8 +55,11 @@ public class DefaultFirebaseAppCheckTest {
5355
@Mock private AppCheckProviderFactory mockAppCheckProviderFactory;
5456
@Mock private AppCheckProvider mockAppCheckProvider;
5557
@Mock private AppCheckTokenListener mockAppCheckTokenListener;
58+
@Mock private UserAgentPublisher mockUserAgentPublisher;
59+
@Mock private HeartBeatInfo mockHeartBeatInfo;
5660

5761
private DefaultAppCheckToken validDefaultAppCheckToken;
62+
private DefaultFirebaseAppCheck defaultFirebaseAppCheck;
5863

5964
@Before
6065
public void setup() {
@@ -66,20 +71,41 @@ public void setup() {
6671
when(mockFirebaseApp.getPersistenceKey()).thenReturn(PERSISTENCE_KEY);
6772
when(mockAppCheckProviderFactory.create(any())).thenReturn(mockAppCheckProvider);
6873
when(mockAppCheckProvider.getToken()).thenReturn(Tasks.forResult(validDefaultAppCheckToken));
74+
75+
defaultFirebaseAppCheck =
76+
new DefaultFirebaseAppCheck(
77+
mockFirebaseApp, () -> mockUserAgentPublisher, () -> mockHeartBeatInfo);
6978
}
7079

7180
@Test
7281
public void testConstructor_nullFirebaseApp_expectThrows() {
7382
assertThrows(
7483
NullPointerException.class,
7584
() -> {
76-
new DefaultFirebaseAppCheck(null);
85+
new DefaultFirebaseAppCheck(null, () -> mockUserAgentPublisher, () -> mockHeartBeatInfo);
86+
});
87+
}
88+
89+
@Test
90+
public void testConstructor_nullUserAgentPublisherProvider_expectThrows() {
91+
assertThrows(
92+
NullPointerException.class,
93+
() -> {
94+
new DefaultFirebaseAppCheck(mockFirebaseApp, null, () -> mockHeartBeatInfo);
95+
});
96+
}
97+
98+
@Test
99+
public void testConstructor_nullHeartBeatInfoProvider_expectThrows() {
100+
assertThrows(
101+
NullPointerException.class,
102+
() -> {
103+
new DefaultFirebaseAppCheck(mockFirebaseApp, () -> mockUserAgentPublisher, null);
77104
});
78105
}
79106

80107
@Test
81108
public void testInstallAppCheckFactory_nullFactory_expectThrows() {
82-
DefaultFirebaseAppCheck defaultFirebaseAppCheck = new DefaultFirebaseAppCheck(mockFirebaseApp);
83109
assertThrows(
84110
NullPointerException.class,
85111
() -> {
@@ -89,7 +115,6 @@ public void testInstallAppCheckFactory_nullFactory_expectThrows() {
89115

90116
@Test
91117
public void testAddAppCheckTokenListener_nullListener_expectThrows() {
92-
DefaultFirebaseAppCheck defaultFirebaseAppCheck = new DefaultFirebaseAppCheck(mockFirebaseApp);
93118
assertThrows(
94119
NullPointerException.class,
95120
() -> {
@@ -99,7 +124,6 @@ public void testAddAppCheckTokenListener_nullListener_expectThrows() {
99124

100125
@Test
101126
public void testRemoveAppCheckTokenListener_nullListener_expectThrows() {
102-
DefaultFirebaseAppCheck defaultFirebaseAppCheck = new DefaultFirebaseAppCheck(mockFirebaseApp);
103127
assertThrows(
104128
NullPointerException.class,
105129
() -> {
@@ -109,7 +133,6 @@ public void testRemoveAppCheckTokenListener_nullListener_expectThrows() {
109133

110134
@Test
111135
public void testGetToken_noFactoryInstalled_returnResultWithError() throws Exception {
112-
DefaultFirebaseAppCheck defaultFirebaseAppCheck = new DefaultFirebaseAppCheck(mockFirebaseApp);
113136
Task<AppCheckTokenResult> tokenTask =
114137
defaultFirebaseAppCheck.getToken(/* forceRefresh= */ false);
115138
assertThat(tokenTask.isComplete()).isTrue();
@@ -120,7 +143,6 @@ public void testGetToken_noFactoryInstalled_returnResultWithError() throws Excep
120143

121144
@Test
122145
public void testGetToken_factoryInstalled_proxiesToAppCheckFactory() {
123-
DefaultFirebaseAppCheck defaultFirebaseAppCheck = new DefaultFirebaseAppCheck(mockFirebaseApp);
124146
defaultFirebaseAppCheck.installAppCheckProviderFactory(mockAppCheckProviderFactory);
125147

126148
defaultFirebaseAppCheck.getToken(/* forceRefresh= */ false);
@@ -130,14 +152,11 @@ public void testGetToken_factoryInstalled_proxiesToAppCheckFactory() {
130152

131153
@Test
132154
public void testGetInstalledAppCheckProviderFactory_noFactoryInstalled_returnsNull() {
133-
DefaultFirebaseAppCheck defaultFirebaseAppCheck = new DefaultFirebaseAppCheck(mockFirebaseApp);
134-
135155
assertThat(defaultFirebaseAppCheck.getInstalledAppCheckProviderFactory()).isNull();
136156
}
137157

138158
@Test
139159
public void testGetInstalledAppCheckProviderFactory_factoryInstalled_returnsFactory() {
140-
DefaultFirebaseAppCheck defaultFirebaseAppCheck = new DefaultFirebaseAppCheck(mockFirebaseApp);
141160
defaultFirebaseAppCheck.installAppCheckProviderFactory(mockAppCheckProviderFactory);
142161

143162
assertThat(defaultFirebaseAppCheck.getInstalledAppCheckProviderFactory())
@@ -146,7 +165,6 @@ public void testGetInstalledAppCheckProviderFactory_factoryInstalled_returnsFact
146165

147166
@Test
148167
public void testGetToken_factoryInstalledAndListenerRegistered_triggersListenerOnSuccess() {
149-
DefaultFirebaseAppCheck defaultFirebaseAppCheck = new DefaultFirebaseAppCheck(mockFirebaseApp);
150168
defaultFirebaseAppCheck.installAppCheckProviderFactory(mockAppCheckProviderFactory);
151169
defaultFirebaseAppCheck.addAppCheckTokenListener(mockAppCheckTokenListener);
152170

@@ -162,7 +180,6 @@ public void testGetToken_factoryInstalledAndListenerRegistered_triggersListenerO
162180

163181
@Test
164182
public void testGetToken_factoryInstalledAndListenerRegistered_doesNotTriggerListenerOnFailure() {
165-
DefaultFirebaseAppCheck defaultFirebaseAppCheck = new DefaultFirebaseAppCheck(mockFirebaseApp);
166183
defaultFirebaseAppCheck.installAppCheckProviderFactory(mockAppCheckProviderFactory);
167184
defaultFirebaseAppCheck.addAppCheckTokenListener(mockAppCheckTokenListener);
168185

@@ -177,7 +194,6 @@ public void testGetToken_factoryInstalledAndListenerRegistered_doesNotTriggerLis
177194

178195
@Test
179196
public void testGetToken_existingValidToken_triggersListenerUponAdding() {
180-
DefaultFirebaseAppCheck defaultFirebaseAppCheck = new DefaultFirebaseAppCheck(mockFirebaseApp);
181197
defaultFirebaseAppCheck.setCachedToken(validDefaultAppCheckToken);
182198

183199
defaultFirebaseAppCheck.addAppCheckTokenListener(mockAppCheckTokenListener);
@@ -193,8 +209,6 @@ public void testGetToken_existingValidToken_triggersListenerUponAdding() {
193209
public void testGetToken_existingInvalidToken_doesNotTriggerListenerUponAdding() {
194210
DefaultAppCheckToken invalidDefaultAppCheckToken =
195211
new DefaultAppCheckToken(TOKEN_PAYLOAD, EXPIRES_NOW);
196-
197-
DefaultFirebaseAppCheck defaultFirebaseAppCheck = new DefaultFirebaseAppCheck(mockFirebaseApp);
198212
defaultFirebaseAppCheck.setCachedToken(invalidDefaultAppCheckToken);
199213

200214
defaultFirebaseAppCheck.addAppCheckTokenListener(mockAppCheckTokenListener);
@@ -204,7 +218,6 @@ public void testGetToken_existingInvalidToken_doesNotTriggerListenerUponAdding()
204218

205219
@Test
206220
public void testGetToken_existingValidToken_doesNotRequestNewToken() {
207-
DefaultFirebaseAppCheck defaultFirebaseAppCheck = new DefaultFirebaseAppCheck(mockFirebaseApp);
208221
defaultFirebaseAppCheck.setCachedToken(validDefaultAppCheckToken);
209222
defaultFirebaseAppCheck.installAppCheckProviderFactory(mockAppCheckProviderFactory);
210223

@@ -215,7 +228,6 @@ public void testGetToken_existingValidToken_doesNotRequestNewToken() {
215228

216229
@Test
217230
public void testGetToken_existingValidToken_forceRefresh_requestsNewToken() {
218-
DefaultFirebaseAppCheck defaultFirebaseAppCheck = new DefaultFirebaseAppCheck(mockFirebaseApp);
219231
defaultFirebaseAppCheck.setCachedToken(validDefaultAppCheckToken);
220232
defaultFirebaseAppCheck.installAppCheckProviderFactory(mockAppCheckProviderFactory);
221233

@@ -228,8 +240,6 @@ public void testGetToken_existingValidToken_forceRefresh_requestsNewToken() {
228240
public void testGetToken_existingInvalidToken_requestsNewToken() {
229241
DefaultAppCheckToken invalidDefaultAppCheckToken =
230242
new DefaultAppCheckToken(TOKEN_PAYLOAD, EXPIRES_NOW);
231-
232-
DefaultFirebaseAppCheck defaultFirebaseAppCheck = new DefaultFirebaseAppCheck(mockFirebaseApp);
233243
defaultFirebaseAppCheck.setCachedToken(invalidDefaultAppCheckToken);
234244
defaultFirebaseAppCheck.installAppCheckProviderFactory(mockAppCheckProviderFactory);
235245

appcheck/firebase-appcheck/src/test/java/com/google/firebase/appcheck/internal/NetworkClientTest.java

Lines changed: 58 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,21 @@
2020
import static com.google.firebase.appcheck.internal.HttpErrorResponse.CODE_KEY;
2121
import static com.google.firebase.appcheck.internal.HttpErrorResponse.ERROR_KEY;
2222
import static com.google.firebase.appcheck.internal.HttpErrorResponse.MESSAGE_KEY;
23+
import static com.google.firebase.appcheck.internal.NetworkClient.X_FIREBASE_CLIENT;
24+
import static com.google.firebase.appcheck.internal.NetworkClient.X_FIREBASE_CLIENT_LOG_TYPE;
2325
import static org.junit.Assert.assertThrows;
2426
import static org.mockito.ArgumentMatchers.any;
2527
import static org.mockito.Mockito.doReturn;
28+
import static org.mockito.Mockito.spy;
2629
import static org.mockito.Mockito.verify;
2730
import static org.mockito.Mockito.when;
2831

32+
import android.content.Context;
33+
import androidx.test.core.app.ApplicationProvider;
34+
import com.google.firebase.FirebaseApp;
2935
import com.google.firebase.FirebaseException;
36+
import com.google.firebase.FirebaseOptions;
37+
import com.google.firebase.appcheck.FirebaseAppCheck;
3038
import java.io.ByteArrayInputStream;
3139
import java.io.OutputStream;
3240
import java.net.HttpURLConnection;
@@ -37,7 +45,6 @@
3745
import org.junit.runner.RunWith;
3846
import org.mockito.Mock;
3947
import org.mockito.MockitoAnnotations;
40-
import org.mockito.Spy;
4148
import org.robolectric.RobolectricTestRunner;
4249
import org.robolectric.annotation.Config;
4350

@@ -59,42 +66,33 @@ public class NetworkClientTest {
5966
private static final String ATTESTATION_TOKEN = "token";
6067
private static final String TIME_TO_LIVE = "3600s";
6168
private static final String ERROR_MESSAGE = "error message";
69+
private static final String SDK_NAME = "fire-app-check";
6270

6371
@Mock HttpURLConnection mockHttpUrlConnection;
6472
@Mock OutputStream outputStream;
6573

66-
@Spy NetworkClient networkClient = new NetworkClient(API_KEY, APP_ID, PROJECT_ID);
74+
private FirebaseApp firebaseApp;
75+
private NetworkClient networkClient;
6776

6877
@Before
6978
public void setup() throws Exception {
7079
MockitoAnnotations.initMocks(this);
71-
doReturn(mockHttpUrlConnection).when(networkClient).createHttpUrlConnection(any(URL.class));
72-
}
7380

74-
@Test
75-
public void init_nullApiKey_throwsException() {
76-
assertThrows(
77-
NullPointerException.class,
78-
() -> {
79-
new NetworkClient(null, APP_ID, PROJECT_ID);
80-
});
81-
}
81+
FirebaseApp.clearInstancesForTest();
82+
firebaseApp =
83+
initializeFirebaseApp(
84+
ApplicationProvider.getApplicationContext(), FirebaseApp.DEFAULT_APP_NAME);
85+
networkClient = spy(new NetworkClient(firebaseApp));
8286

83-
@Test
84-
public void init_nullAppId_throwsException() {
85-
assertThrows(
86-
NullPointerException.class,
87-
() -> {
88-
new NetworkClient(API_KEY, null, PROJECT_ID);
89-
});
87+
doReturn(mockHttpUrlConnection).when(networkClient).createHttpUrlConnection(any(URL.class));
9088
}
9189

9290
@Test
93-
public void init_nullProjectId_throwsException() {
91+
public void init_nullFirebaseApp_throwsException() {
9492
assertThrows(
9593
NullPointerException.class,
9694
() -> {
97-
new NetworkClient(API_KEY, APP_ID, null);
95+
new NetworkClient(null);
9896
});
9997
}
10098

@@ -118,6 +116,13 @@ public void exchangeSafetyNetToken_successResponse_returnsAppCheckTokenResponse(
118116
verify(networkClient).createHttpUrlConnection(expectedUrl);
119117
verify(outputStream)
120118
.write(JSON_REQUEST.getBytes(), /* off= */ 0, JSON_REQUEST.getBytes().length);
119+
120+
String userAgent = ((DefaultFirebaseAppCheck) FirebaseAppCheck.getInstance()).getUserAgent();
121+
String heartBeatCode =
122+
((DefaultFirebaseAppCheck) FirebaseAppCheck.getInstance()).getHeartbeatCode();
123+
verify(mockHttpUrlConnection).setRequestProperty(X_FIREBASE_CLIENT, userAgent);
124+
verify(mockHttpUrlConnection).setRequestProperty(X_FIREBASE_CLIENT_LOG_TYPE, heartBeatCode);
125+
assertThat(userAgent).contains(SDK_NAME);
121126
}
122127

123128
@Test
@@ -141,6 +146,13 @@ public void exchangeSafetyNetToken_errorResponse_throwsException() throws Except
141146
verify(networkClient).createHttpUrlConnection(expectedUrl);
142147
verify(outputStream)
143148
.write(JSON_REQUEST.getBytes(), /* off= */ 0, JSON_REQUEST.getBytes().length);
149+
150+
String userAgent = ((DefaultFirebaseAppCheck) FirebaseAppCheck.getInstance()).getUserAgent();
151+
String heartBeatCode =
152+
((DefaultFirebaseAppCheck) FirebaseAppCheck.getInstance()).getHeartbeatCode();
153+
verify(mockHttpUrlConnection).setRequestProperty(X_FIREBASE_CLIENT, userAgent);
154+
verify(mockHttpUrlConnection).setRequestProperty(X_FIREBASE_CLIENT_LOG_TYPE, heartBeatCode);
155+
assertThat(userAgent).contains(SDK_NAME);
144156
}
145157

146158
@Test
@@ -162,6 +174,13 @@ public void exchangeDebugToken_successResponse_returnsAppCheckTokenResponse() th
162174
verify(networkClient).createHttpUrlConnection(expectedUrl);
163175
verify(outputStream)
164176
.write(JSON_REQUEST.getBytes(), /* off= */ 0, JSON_REQUEST.getBytes().length);
177+
178+
String userAgent = ((DefaultFirebaseAppCheck) FirebaseAppCheck.getInstance()).getUserAgent();
179+
String heartBeatCode =
180+
((DefaultFirebaseAppCheck) FirebaseAppCheck.getInstance()).getHeartbeatCode();
181+
verify(mockHttpUrlConnection).setRequestProperty(X_FIREBASE_CLIENT, userAgent);
182+
verify(mockHttpUrlConnection).setRequestProperty(X_FIREBASE_CLIENT_LOG_TYPE, heartBeatCode);
183+
assertThat(userAgent).contains(SDK_NAME);
165184
}
166185

167186
@Test
@@ -185,6 +204,13 @@ public void exchangeDebugToken_errorResponse_throwsException() throws Exception
185204
verify(networkClient).createHttpUrlConnection(expectedUrl);
186205
verify(outputStream)
187206
.write(JSON_REQUEST.getBytes(), /* off= */ 0, JSON_REQUEST.getBytes().length);
207+
208+
String userAgent = ((DefaultFirebaseAppCheck) FirebaseAppCheck.getInstance()).getUserAgent();
209+
String heartBeatCode =
210+
((DefaultFirebaseAppCheck) FirebaseAppCheck.getInstance()).getHeartbeatCode();
211+
verify(mockHttpUrlConnection).setRequestProperty(X_FIREBASE_CLIENT, userAgent);
212+
verify(mockHttpUrlConnection).setRequestProperty(X_FIREBASE_CLIENT_LOG_TYPE, heartBeatCode);
213+
assertThat(userAgent).contains(SDK_NAME);
188214
}
189215

190216
@Test
@@ -213,4 +239,15 @@ private static JSONObject createHttpErrorResponse() throws Exception {
213239

214240
return responseBodyJson;
215241
}
242+
243+
private static FirebaseApp initializeFirebaseApp(Context context, String name) {
244+
return FirebaseApp.initializeApp(
245+
context,
246+
new FirebaseOptions.Builder()
247+
.setApiKey(API_KEY)
248+
.setApplicationId(APP_ID)
249+
.setProjectId(PROJECT_ID)
250+
.build(),
251+
name);
252+
}
216253
}

0 commit comments

Comments
 (0)