@@ -3,8 +3,6 @@ package org.coralibre.android.sdk.internal.database
3
3
import androidx.test.ext.junit.runners.AndroidJUnit4
4
4
import androidx.test.platform.app.InstrumentationRegistry
5
5
import org.coralibre.android.sdk.DatatypesTestUtil
6
- import org.coralibre.android.sdk.internal.database.DatabaseAccess.getDefaultDatabaseInstance
7
- import org.coralibre.android.sdk.internal.database.DatabaseAccess.init
8
6
import org.coralibre.android.sdk.internal.datatypes.AssociatedEncryptedMetadata
9
7
import org.coralibre.android.sdk.internal.datatypes.CapturedData
10
8
import org.coralibre.android.sdk.internal.datatypes.DiagnosisKey
@@ -14,21 +12,27 @@ import org.coralibre.android.sdk.internal.datatypes.RollingProximityIdentifier
14
12
import org.coralibre.android.sdk.internal.datatypes.util.ENIntervalUtil.createFromUnixTimestamp
15
13
import org.coralibre.android.sdk.internal.datatypes.util.ENIntervalUtil.currentInterval
16
14
import org.coralibre.android.sdk.internal.datatypes.util.ENIntervalUtil.getMidnight
17
- import org.junit.AfterClass
15
+ import org.junit.After
18
16
import org.junit.Assert.assertArrayEquals
19
17
import org.junit.Assert.assertEquals
20
18
import org.junit.Before
21
- import org.junit.BeforeClass
22
19
import org.junit.Test
23
20
import org.junit.runner.RunWith
24
21
import java.util.LinkedList
25
22
import java.util.Random
26
23
27
24
@RunWith(AndroidJUnit4 ::class )
28
25
class DatabaseTests {
26
+ private lateinit var database: Database
27
+
29
28
@Before
30
- fun clearData () {
31
- getDefaultDatabaseInstance().clearAllData()
29
+ fun initializeDatabase () {
30
+ database = PersistentDatabase (InstrumentationRegistry .getInstrumentation().context, true )
31
+ }
32
+
33
+ @After
34
+ fun closeDatabase () {
35
+ database.close()
32
36
}
33
37
34
38
@Test
@@ -39,11 +43,11 @@ class DatabaseTests {
39
43
random.nextBytes(dumTekBytes)
40
44
val dumInterval = ENInterval (getMidnight(2000L ))
41
45
val dumTek = InternalTemporaryExposureKey (dumInterval, dumTekBytes)
42
- getDefaultDatabaseInstance() .addGeneratedTEK(dumTek)
46
+ database .addGeneratedTEK(dumTek)
43
47
44
48
// Query:
45
- val resultTeks = getDefaultDatabaseInstance().allOwnTEKs
46
- val resultTekForInterval = getDefaultDatabaseInstance() .getOwnTEK(dumInterval)
49
+ val resultTeks = database.getAllOwnTEKs()
50
+ val resultTekForInterval = database .getOwnTEK(dumInterval)
47
51
48
52
// Compare:
49
53
var numResultTeks = 0
@@ -79,10 +83,10 @@ class DatabaseTests {
79
83
),
80
84
AssociatedEncryptedMetadata (dumAem)
81
85
)
82
- getDefaultDatabaseInstance() .addCapturedPayload(dumData)
86
+ database .addCapturedPayload(dumData)
83
87
84
88
// Query:
85
- val resultIntervals = getDefaultDatabaseInstance().allCollectedPayload
89
+ val resultIntervals = database.getAllCollectedPayload()
86
90
87
91
// Compare:
88
92
var numResultIntervals = 0
@@ -118,12 +122,12 @@ class DatabaseTests {
118
122
val tekRemoveBytes = ByteArray (16 )
119
123
random.nextBytes(tekRemoveBytes)
120
124
val tekRemove = InternalTemporaryExposureKey (intervalRemove, tekRemoveBytes)
121
- getDefaultDatabaseInstance() .addGeneratedTEK(tekRemove)
125
+ database .addGeneratedTEK(tekRemove)
122
126
}
123
127
val tekKeepBytes = ByteArray (16 )
124
128
random.nextBytes(tekKeepBytes)
125
129
val tekKeep = InternalTemporaryExposureKey (intervalKeep, tekKeepBytes)
126
- getDefaultDatabaseInstance() .addGeneratedTEK(tekKeep)
130
+ database .addGeneratedTEK(tekKeep)
127
131
run {
128
132
val rpiRemove = ByteArray (16 )
129
133
random.nextBytes(rpiRemove)
@@ -139,7 +143,7 @@ class DatabaseTests {
139
143
RollingProximityIdentifier (rpiRemove, createFromUnixTimestamp(timestampRemove)),
140
144
AssociatedEncryptedMetadata (aemRemove)
141
145
)
142
- getDefaultDatabaseInstance() .addCapturedPayload(dataRemove)
146
+ database .addCapturedPayload(dataRemove)
143
147
}
144
148
val rpiKeep = ByteArray (16 )
145
149
random.nextBytes(rpiKeep)
@@ -155,14 +159,14 @@ class DatabaseTests {
155
159
RollingProximityIdentifier (rpiKeep, intervalKeep),
156
160
AssociatedEncryptedMetadata (aemKeep)
157
161
)
158
- getDefaultDatabaseInstance() .addCapturedPayload(dataKeep)
162
+ database .addCapturedPayload(dataKeep)
159
163
160
164
// Truncate:
161
- getDefaultDatabaseInstance() .truncateLast14Days()
165
+ database .truncateLast14Days()
162
166
163
167
// Query:
164
- val resultTeks = getDefaultDatabaseInstance().allOwnTEKs
165
- val resultIntervals = getDefaultDatabaseInstance().allCollectedPayload
168
+ val resultTeks = database.getAllOwnTEKs()
169
+ val resultIntervals = database.getAllCollectedPayload()
166
170
167
171
// Compare:
168
172
var numResultTeks = 0
@@ -190,77 +194,59 @@ class DatabaseTests {
190
194
191
195
@Test
192
196
fun testAddDiagnosisKeys () {
193
- val db = getDefaultDatabaseInstance()
194
197
val diagKeys = LinkedList <DiagnosisKey >()
195
198
diagKeys.add(DatatypesTestUtil .createDummyDiagnosisKey())
196
199
val token0 = " token0"
197
- db .addDiagnosisKeys(token0, diagKeys)
200
+ database .addDiagnosisKeys(token0, diagKeys)
198
201
diagKeys.add(DatatypesTestUtil .createDummyDiagnosisKey())
199
202
diagKeys.add(DatatypesTestUtil .createDummyDiagnosisKey())
200
203
val token1 = " token1"
201
- db .addDiagnosisKeys(token1, diagKeys)
204
+ database .addDiagnosisKeys(token1, diagKeys)
202
205
203
206
// First verify that insertion with different tokens works:
204
207
run {
205
- val result0 = db .getDiagnosisKeys(token0)
208
+ val result0 = database .getDiagnosisKeys(token0)
206
209
assertEquals(1 , result0.size.toLong())
207
- val result1 = db .getDiagnosisKeys(token1)
210
+ val result1 = database .getDiagnosisKeys(token1)
208
211
assertEquals(3 , result1.size.toLong())
209
212
}
210
213
211
214
// Now add additional keys for an existing token:
212
- db .addDiagnosisKeys(token1, diagKeys)
215
+ database .addDiagnosisKeys(token1, diagKeys)
213
216
run {
214
- val result0 = db .getDiagnosisKeys(token0)
217
+ val result0 = database .getDiagnosisKeys(token0)
215
218
assertEquals(1 , result0.size.toLong())
216
- val result1 = db .getDiagnosisKeys(token1)
219
+ val result1 = database .getDiagnosisKeys(token1)
217
220
assertEquals(6 , result1.size.toLong())
218
221
}
219
222
}
220
223
221
224
@Test
222
225
fun testDeleteToken () {
223
- val db = getDefaultDatabaseInstance()
224
226
val diagKeys = LinkedList <DiagnosisKey >()
225
227
diagKeys.add(DatatypesTestUtil .createDummyDiagnosisKey())
226
228
val token0 = " token0"
227
- db .addDiagnosisKeys(token0, diagKeys)
229
+ database .addDiagnosisKeys(token0, diagKeys)
228
230
diagKeys.add(DatatypesTestUtil .createDummyDiagnosisKey())
229
231
diagKeys.add(DatatypesTestUtil .createDummyDiagnosisKey())
230
232
val token1 = " token1"
231
- db .addDiagnosisKeys(token1, diagKeys)
233
+ database .addDiagnosisKeys(token1, diagKeys)
232
234
233
235
// Verify insertion worked as expected:
234
236
run {
235
- val result0 = db .getDiagnosisKeys(token0)
237
+ val result0 = database .getDiagnosisKeys(token0)
236
238
assertEquals(1 , result0.size.toLong())
237
- val result1 = db .getDiagnosisKeys(token1)
239
+ val result1 = database .getDiagnosisKeys(token1)
238
240
assertEquals(3 , result1.size.toLong())
239
241
}
240
242
241
243
// Now delete token1 and check again:
242
- db .deleteTokenWithData(token1)
244
+ database .deleteTokenWithData(token1)
243
245
run {
244
- val result0 = db .getDiagnosisKeys(token0)
246
+ val result0 = database .getDiagnosisKeys(token0)
245
247
assertEquals(1 , result0.size.toLong())
246
- val result1 = db .getDiagnosisKeys(token1)
248
+ val result1 = database .getDiagnosisKeys(token1)
247
249
assertEquals(0 , result1.size.toLong())
248
250
}
249
251
}
250
-
251
- companion object {
252
- @BeforeClass
253
- @JvmStatic
254
- fun initGlobal () {
255
- init (InstrumentationRegistry .getInstrumentation().context)
256
- }
257
-
258
- @AfterClass
259
- @JvmStatic
260
- fun deInit () {
261
- // If this call is not performed, tests from other classes where the database's init is
262
- // called might not run, since db reinitialization would throw an exception:
263
- DatabaseAccess .deInit()
264
- }
265
- }
266
252
}
0 commit comments