17
17
import com .google .firebase .crashlytics .internal .CrashlyticsTestCase ;
18
18
import com .google .firebase .crashlytics .internal .common .CrashlyticsBackgroundWorker ;
19
19
import com .google .firebase .crashlytics .internal .persistence .FileStore ;
20
+ import java .io .File ;
21
+ import java .io .IOException ;
22
+ import java .io .PrintWriter ;
20
23
import java .util .Collections ;
21
24
import java .util .HashMap ;
22
25
import java .util .Map ;
23
26
27
+ @ SuppressWarnings ("ResultOfMethodCallIgnored" ) // Convenient use of files.
24
28
public class MetaDataStoreTest extends CrashlyticsTestCase {
25
29
26
30
private static final String SESSION_ID_1 = "session1" ;
@@ -40,7 +44,7 @@ public class MetaDataStoreTest extends CrashlyticsTestCase {
40
44
private static final String ESCAPED = "\t test\n value" ;
41
45
42
46
private FileStore fileStore ;
43
- private CrashlyticsBackgroundWorker worker = new CrashlyticsBackgroundWorker (Runnable ::run );
47
+ private final CrashlyticsBackgroundWorker worker = new CrashlyticsBackgroundWorker (Runnable ::run );
44
48
45
49
private MetaDataStore storeUnderTest ;
46
50
@@ -83,7 +87,7 @@ public void testWriteUserData_singleField() {
83
87
public void testWriteUserData_null () {
84
88
storeUnderTest .writeUserData (SESSION_ID_1 , metadataWithUserId (SESSION_ID_1 , null ).getUserId ());
85
89
UserMetadata userData = UserMetadata .loadFromExistingSession (SESSION_ID_1 , fileStore , worker );
86
- assertEquals ( null , userData .getUserId ());
90
+ assertNull ( userData .getUserId ());
87
91
}
88
92
89
93
public void testWriteUserData_emptyString () {
@@ -112,6 +116,24 @@ public void testWriteUserData_readDifferentSession() {
112
116
assertNull (userData .getUserId ());
113
117
}
114
118
119
+ public void testReadUserData_corruptData () throws IOException {
120
+ File file = storeUnderTest .getUserDataFileForSession (SESSION_ID_1 );
121
+ try (PrintWriter printWriter = new PrintWriter (file )) {
122
+ printWriter .println ("Matt says hi!" );
123
+ }
124
+ UserMetadata userData = UserMetadata .loadFromExistingSession (SESSION_ID_1 , fileStore , worker );
125
+ assertNull (userData .getUserId ());
126
+ assertFalse (file .exists ());
127
+ }
128
+
129
+ public void testReadUserData_emptyData () throws IOException {
130
+ File file = storeUnderTest .getUserDataFileForSession (SESSION_ID_1 );
131
+ file .createNewFile ();
132
+ UserMetadata userData = UserMetadata .loadFromExistingSession (SESSION_ID_1 , fileStore , worker );
133
+ assertNull (userData .getUserId ());
134
+ assertFalse (file .exists ());
135
+ }
136
+
115
137
public void testReadUserData_noStoredData () {
116
138
UserMetadata userData = UserMetadata .loadFromExistingSession (SESSION_ID_1 , fileStore , worker );
117
139
assertNull (userData .getUserId ());
@@ -237,6 +259,24 @@ public void testWriteKeys_readSeparateFromUser() {
237
259
assertEqualMaps (internalKeys , readInternalKeys );
238
260
}
239
261
262
+ public void testReadKeys_corruptData () throws IOException {
263
+ File file = storeUnderTest .getKeysFileForSession (SESSION_ID_1 );
264
+ try (PrintWriter printWriter = new PrintWriter (file )) {
265
+ printWriter .println ("This is not json." );
266
+ }
267
+ final Map <String , String > readKeys = storeUnderTest .readKeyData (SESSION_ID_1 );
268
+ assertEquals (0 , readKeys .size ());
269
+ assertFalse (file .exists ());
270
+ }
271
+
272
+ public void testReadKeys_emptyStoredData () throws IOException {
273
+ File file = storeUnderTest .getKeysFileForSession (SESSION_ID_1 );
274
+ file .createNewFile ();
275
+ final Map <String , String > readKeys = storeUnderTest .readKeyData (SESSION_ID_1 );
276
+ assertEquals (0 , readKeys .size ());
277
+ assertFalse (file .exists ());
278
+ }
279
+
240
280
public void testReadKeys_noStoredData () {
241
281
final Map <String , String > readKeys = storeUnderTest .readKeyData (SESSION_ID_1 );
242
282
assertEquals (0 , readKeys .size ());
0 commit comments