Skip to content

Commit f29dd29

Browse files
committed
Update UtdTracker tests
1 parent 39a235a commit f29dd29

File tree

2 files changed

+107
-7
lines changed

2 files changed

+107
-7
lines changed

libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/analytics/UtdTrackerTest.kt

Lines changed: 105 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class UtdTrackerTest {
2525
eventId = AN_EVENT_ID.value,
2626
timeToDecryptMs = null,
2727
cause = UtdCause.UNKNOWN,
28+
eventLocalAgeMillis = 100L,
2829
)
2930
)
3031
assertThat(fakeAnalyticsService.capturedEvents).containsExactly(
@@ -34,7 +35,11 @@ class UtdTrackerTest {
3435
cryptoSDK = Error.CryptoSDK.Rust,
3536
timeToDecryptMillis = -1,
3637
domain = Error.Domain.E2EE,
37-
name = Error.Name.OlmKeysNotSentError
38+
name = Error.Name.OlmKeysNotSentError,
39+
isFederated = false,
40+
isMatrixDotOrg = false,
41+
userTrustsOwnIdentity = false,
42+
eventLocalAgeMillis = 100,
3843
)
3944
)
4045
assertThat(fakeAnalyticsService.screenEvents).isEmpty()
@@ -59,7 +64,11 @@ class UtdTrackerTest {
5964
cryptoSDK = Error.CryptoSDK.Rust,
6065
timeToDecryptMillis = 123,
6166
domain = Error.Domain.E2EE,
62-
name = Error.Name.OlmKeysNotSentError
67+
name = Error.Name.OlmKeysNotSentError,
68+
isFederated = false,
69+
isMatrixDotOrg = false,
70+
userTrustsOwnIdentity = false,
71+
eventLocalAgeMillis = 0,
6372
)
6473
)
6574
assertThat(fakeAnalyticsService.screenEvents).isEmpty()
@@ -84,7 +93,11 @@ class UtdTrackerTest {
8493
cryptoSDK = Error.CryptoSDK.Rust,
8594
timeToDecryptMillis = 123,
8695
domain = Error.Domain.E2EE,
87-
name = Error.Name.ExpectedDueToMembership
96+
name = Error.Name.ExpectedDueToMembership,
97+
isFederated = false,
98+
isMatrixDotOrg = false,
99+
userTrustsOwnIdentity = false,
100+
eventLocalAgeMillis = 0,
88101
)
89102
)
90103
assertThat(fakeAnalyticsService.screenEvents).isEmpty()
@@ -109,7 +122,11 @@ class UtdTrackerTest {
109122
cryptoSDK = Error.CryptoSDK.Rust,
110123
timeToDecryptMillis = 123,
111124
domain = Error.Domain.E2EE,
112-
name = Error.Name.ExpectedSentByInsecureDevice
125+
name = Error.Name.ExpectedSentByInsecureDevice,
126+
isFederated = false,
127+
isMatrixDotOrg = false,
128+
userTrustsOwnIdentity = false,
129+
eventLocalAgeMillis = 0,
113130
)
114131
)
115132
}
@@ -132,7 +149,90 @@ class UtdTrackerTest {
132149
cryptoSDK = Error.CryptoSDK.Rust,
133150
timeToDecryptMillis = 123,
134151
domain = Error.Domain.E2EE,
135-
name = Error.Name.ExpectedVerificationViolation
152+
name = Error.Name.ExpectedVerificationViolation,
153+
isFederated = false,
154+
isMatrixDotOrg = false,
155+
userTrustsOwnIdentity = false,
156+
eventLocalAgeMillis = 0,
157+
)
158+
)
159+
}
160+
161+
@Test
162+
fun `when onUtd is called with different sender and receiver servers, the expected analytics Event is sent`() {
163+
val fakeAnalyticsService = FakeAnalyticsService()
164+
val sut = UtdTracker(fakeAnalyticsService)
165+
sut.onUtd(
166+
aRustUnableToDecryptInfo(
167+
eventId = AN_EVENT_ID.value,
168+
ownHomeserver = "example.com",
169+
senderHomeserver = "matrix.org",
170+
)
171+
)
172+
assertThat(fakeAnalyticsService.capturedEvents).containsExactly(
173+
Error(
174+
context = null,
175+
cryptoModule = Error.CryptoModule.Rust,
176+
cryptoSDK = Error.CryptoSDK.Rust,
177+
timeToDecryptMillis = -1,
178+
domain = Error.Domain.E2EE,
179+
name = Error.Name.OlmKeysNotSentError,
180+
isFederated = true,
181+
isMatrixDotOrg = false,
182+
userTrustsOwnIdentity = false,
183+
eventLocalAgeMillis = 0,
184+
)
185+
)
186+
}
187+
188+
@Test
189+
fun `when onUtd is called from a matrix-org user, the expected analytics Event is sent`() {
190+
val fakeAnalyticsService = FakeAnalyticsService()
191+
val sut = UtdTracker(fakeAnalyticsService)
192+
sut.onUtd(
193+
aRustUnableToDecryptInfo(
194+
eventId = AN_EVENT_ID.value,
195+
ownHomeserver = "matrix.org",
196+
)
197+
)
198+
assertThat(fakeAnalyticsService.capturedEvents).containsExactly(
199+
Error(
200+
context = null,
201+
cryptoModule = Error.CryptoModule.Rust,
202+
cryptoSDK = Error.CryptoSDK.Rust,
203+
timeToDecryptMillis = -1,
204+
domain = Error.Domain.E2EE,
205+
name = Error.Name.OlmKeysNotSentError,
206+
isFederated = true,
207+
isMatrixDotOrg = true,
208+
userTrustsOwnIdentity = false,
209+
eventLocalAgeMillis = 0,
210+
)
211+
)
212+
}
213+
214+
@Test
215+
fun `when onUtd is called from a verified device, the expected analytics Event is sent`() {
216+
val fakeAnalyticsService = FakeAnalyticsService()
217+
val sut = UtdTracker(fakeAnalyticsService)
218+
sut.onUtd(
219+
aRustUnableToDecryptInfo(
220+
eventId = AN_EVENT_ID.value,
221+
userTrustsOwnIdentity = true,
222+
)
223+
)
224+
assertThat(fakeAnalyticsService.capturedEvents).containsExactly(
225+
Error(
226+
context = null,
227+
cryptoModule = Error.CryptoModule.Rust,
228+
cryptoSDK = Error.CryptoSDK.Rust,
229+
timeToDecryptMillis = -1,
230+
domain = Error.Domain.E2EE,
231+
name = Error.Name.OlmKeysNotSentError,
232+
isFederated = false,
233+
isMatrixDotOrg = false,
234+
userTrustsOwnIdentity = true,
235+
eventLocalAgeMillis = 0,
136236
)
137237
)
138238
}

libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/UnableToDecryptInfo.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import uniffi.matrix_sdk_crypto.UtdCause
1212

1313
internal fun aRustUnableToDecryptInfo(
1414
eventId: String,
15-
timeToDecryptMs: ULong?,
16-
cause: UtdCause,
15+
timeToDecryptMs: ULong? = null,
16+
cause: UtdCause = UtdCause.UNKNOWN,
1717
eventLocalAgeMillis: Long = 0L,
1818
userTrustsOwnIdentity: Boolean = false,
1919
senderHomeserver: String = "",

0 commit comments

Comments
 (0)