@@ -20,6 +20,7 @@ import {
20
20
MegolmDecryptionError ,
21
21
OlmMachine ,
22
22
OwnUserIdentity ,
23
+ ProcessedToDeviceEventType ,
23
24
RequestType ,
24
25
RoomId ,
25
26
RoomKeyWithheldInfo ,
@@ -306,8 +307,11 @@ describe(OlmMachine.name, () => {
306
307
const oneTimeKeyCounts = new Map ( ) ;
307
308
const unusedFallbackKeys = new Set ( ) ;
308
309
309
- const receiveSyncChanges = JSON . parse (
310
- await m . receiveSyncChanges ( toDeviceEvents , changedDevices , oneTimeKeyCounts , unusedFallbackKeys ) ,
310
+ const receiveSyncChanges = await m . receiveSyncChanges (
311
+ toDeviceEvents ,
312
+ changedDevices ,
313
+ oneTimeKeyCounts ,
314
+ unusedFallbackKeys ,
311
315
) ;
312
316
313
317
expect ( receiveSyncChanges ) . toEqual ( [ ] ) ;
@@ -319,8 +323,11 @@ describe(OlmMachine.name, () => {
319
323
const changedDevices = new DeviceLists ( ) ;
320
324
const oneTimeKeyCounts = new Map ( ) ;
321
325
322
- const receiveSyncChanges = JSON . parse (
323
- await m . receiveSyncChanges ( toDeviceEvents , changedDevices , oneTimeKeyCounts , undefined ) ,
326
+ const receiveSyncChanges = await m . receiveSyncChanges (
327
+ toDeviceEvents ,
328
+ changedDevices ,
329
+ oneTimeKeyCounts ,
330
+ undefined ,
324
331
) ;
325
332
326
333
expect ( receiveSyncChanges ) . toEqual ( [ ] ) ;
@@ -333,8 +340,11 @@ describe(OlmMachine.name, () => {
333
340
const oneTimeKeyCounts = new Map ( ) ;
334
341
const unusedFallbackKeys = new Set ( ) ;
335
342
336
- const receiveSyncChanges = JSON . parse (
337
- await m . receiveSyncChanges ( toDeviceEvents , changedDevices , oneTimeKeyCounts , unusedFallbackKeys ) ,
343
+ const receiveSyncChanges = await m . receiveSyncChanges (
344
+ toDeviceEvents ,
345
+ changedDevices ,
346
+ oneTimeKeyCounts ,
347
+ unusedFallbackKeys ,
338
348
) ;
339
349
340
350
expect ( receiveSyncChanges ) . toEqual ( [ ] ) ;
@@ -1629,11 +1639,11 @@ describe(OlmMachine.name, () => {
1629
1639
undefined ,
1630
1640
) ;
1631
1641
1632
- const receivedToDevices = JSON . parse ( received ) ;
1633
- expect ( receivedToDevices ) . toBeInstanceOf ( Array ) ;
1634
- const receivedToDeviceArray : Array < any > = receivedToDevices ;
1635
- expect ( receivedToDeviceArray . length ) . toBe ( 1 ) ;
1636
- const toDeviceEvent = receivedToDeviceArray [ 0 ] ;
1642
+ expect ( received . length ) . toBe ( 1 ) ;
1643
+ const processed = received [ 0 ] ;
1644
+ expect ( processed . type ) . toEqual ( ProcessedToDeviceEventType . PlainText ) ;
1645
+
1646
+ let toDeviceEvent = JSON . parse ( processed . wireEvent ) ;
1637
1647
1638
1648
expect ( toDeviceEvent . sender ) . toEqual ( "@alice:example.com" ) ;
1639
1649
expect ( toDeviceEvent . type ) . toEqual ( "custom.type" ) ;
@@ -1649,7 +1659,7 @@ describe(OlmMachine.name, () => {
1649
1659
content : {
1650
1660
"algorithm" : "m.olm.v1.curve25519-aes-sha2" ,
1651
1661
"ciphertext" : {
1652
- aliceCurve : {
1662
+ [ aliceCurve ] : {
1653
1663
// this payload is just captured from a sync of some other element web with other users
1654
1664
body : "Awogjvpx458CGhuo77HX/+tp1sxgRoCi7iAlzMvfrpbWoREQAiKACysX/p+ojr5QitCi9WRXNyamW2v2LTvoyWKtVaA2oHnYGR5s5RYhDfnIgh5MMSqqKlAbfqLvrbLovTYcKagCBbFnbA43f6zYM44buGgy8q70hMVH5WP6aK1E9Z3DVZ+8PnXQGpsrxvz2IsL6w0Nzl/qUyBEQFcgkjoDPawbsZRCllMgq2LQUyqlun6IgDTCozqsfxhDWpdfYGde4z16m34Ang7f5pH+BmPrFs6E1AO5+UbhhhS6NwWlfEtA6/9yfMxWLz1d2OrLh+QG7lYFAU9/CzIoPxaHKKr4JxgL9CjsmUPyDymWOWHP0jLi1NwpOv6hGpx0FgM7jJIMk6gWGgC5rEgEeTIwdrJh3F9OKTNSva5hvD9LomGk6tZgzQG6oap1e3wiOUyTt6S7BlyMppIu3RlIiNihZ9e17JEGiGDXOXzMJ6ISAgvGVgTP7+EvyEt2Wt4du7uBo/UvljRvVNu3I8tfItizPAOlvz460+aBDxk+sflJWt7OnhiyPnOCfopb+1RzqKVCnnPyVaP2f4BPf8qpn/f5YZk+5jJgBrGPiHzzmb3sQ5pC470s6+U3MpVFlFTG/xPBtMRMwPsbKoHfnRPqIqGu5dQ1Sw7T6taDXWjP450TvjxgHK5t2z1rLA2SXzAB1P8xbi6YXqQwxL6PvMNHn/TM0jiIQHYuqg5/RKLyhHybfP8JAjgNBw9z16wfKR/YoYFr7c+S4McQaMNa8v2SxGzhpCC3duAoK2qCWLEkYRO5cMCsGm/9bf8Q+//OykygBU/hdkT1eHUbexgALPLdfhzduutU7pbChg4T7SH7euh/3NLmS/SQvkmPfm3ckbh/Vlcj9CsXws/7MX/VJbhpbyzgBNtMnbG6tAeAofMa6Go/yMgiNBZIhLpAm31iUbUhaGm2IIlF/lsmSYEiBPoSVfFU44tetX2I/PBDGiBlzyU+yC2TOEBwMGxBE3WHbIe5/7sKW8xJF9t+HBfxIyW1QRtY3EKdEcuVOTyMxYzq3L5OKOOtPDHObYiiXg00mAgdQqgfkEAIfoRCOa2NYfTedwwo0S77eQ1sPvW5Hhf+Cm+bLibkWzaYHEZF+vyE9/Tn0tZGtH07RXfUyhp1vtTH49OBZHGkb/r+L8OjYJTST1dDCGqeGXO3uwYjoWHXtezLVHYgL+UOwcLJfMF5s9DQiqcfYXzp2kEWGsaetBFXcUWqq4RMHqlr6QfbxyuYLlQzc/AYA/MrT3J6nDpNLcvozH3RcIs8NcKcjdtjvgL0QGThy3RcecJQEDx3STrkkePL3dlyFCtVsmtQ0vjBBCxUgdySfxiobGGnpezZYi7q+Xz61GOZ9QqYmkcZOPzfNWeqtmzB7gqlH1gkFsK2yMAzKq2XCDFHvA7YAT3yMGiY06FcQ+2jyg7Bk2Q+AvjTG8hlPlmt6BZfW5cz1qx1apQn1qHXHrgfWcI52rApYQlNPOU1Uc8kZ8Ee6XUhhXBGY1rvZiKjKFG0PPuS8xo4/P7/u+gH5gItmEVDFL6giYPFsPpqAQkUN7hFoGiVZEjO4PwrLOmydsEcNOfACqrnUs08FQtvPg0sjHnxh6nh6FUQv93ukKl6+c9d+pCsN2xukrQ7Dog3nrjFZ6PrS5J0k9rDAOwTB55sfGXPZ2rATOK1WS4XcpsCtqwnYm4sGNc8ALMQkQ97zCnw8TcQwLvdUMlfbqQ5ykDQpQD68fITEDDHmBAeTCjpC713E6AhvOMwTJvjhd7hSkeOTRTmn9zXIVGNo1jSr8u0xO9uLGeWsV0+UlRLgp7/nsgfermjwNN8wj6MW3DHGS8UzzYfe9TGCeywqqIUTqgfXY48leGgB7twh4cl4jcOQniLATTvigIAQIvq/Uv8L45BGnkpKTdQ5F73gehXdVA" ,
1655
1665
type : 1 ,
@@ -1671,17 +1681,74 @@ describe(OlmMachine.name, () => {
1671
1681
undefined ,
1672
1682
) ;
1673
1683
1674
- const receivedToDevices = JSON . parse ( received ) ;
1675
- expect ( receivedToDevices ) . toBeInstanceOf ( Array ) ;
1676
- const receivedToDeviceArray : Array < any > = receivedToDevices ;
1677
- expect ( receivedToDeviceArray . length ) . toBe ( 1 ) ;
1678
- const toDeviceEvent = receivedToDeviceArray [ 0 ] ;
1684
+ expect ( received . length ) . toBe ( 1 ) ;
1685
+ const processed = received [ 0 ] ;
1686
+ expect ( processed . type ) . toEqual ( ProcessedToDeviceEventType . UnableToDecrypt ) ;
1687
+
1688
+ let toDeviceEvent = JSON . parse ( processed . wireEvent ) ;
1679
1689
1680
1690
expect ( toDeviceEvent . sender ) . toEqual ( "@bob:example.org" ) ;
1681
1691
expect ( toDeviceEvent . type ) . toEqual ( "m.room.encrypted" ) ;
1682
1692
expect ( toDeviceEvent . content . ciphertext ) . toBeDefined ( ) ;
1683
1693
} ) ;
1684
1694
1695
+ test ( "Should return invalid event properly" , async ( ) => {
1696
+ const m = await machine ( ) ;
1697
+
1698
+ let eventWithNoType = {
1699
+ sender : "@alice:example.com" ,
1700
+ content : {
1701
+ algorithm : "m.megolm.v1.aes-sha2" ,
1702
+ code : "m.unverified" ,
1703
+ reason : "Device not verified" ,
1704
+ room_id : "!Cuyf34gef24t:localhost" ,
1705
+ sender_key : "RF3s+E7RkTQTGF2d8Deol0FkQvgII2aJDf3/Jp5mxVU" ,
1706
+ session_id : "X3lUlvLELLYxeTx4yOVu6UDpasGEVO0Jbu+QFnm0cKQ" ,
1707
+ } ,
1708
+ } ;
1709
+
1710
+ const eventWithMalformedCurveKey = {
1711
+ content : {
1712
+ "algorithm" : "m.olm.v1.curve25519-aes-sha2" ,
1713
+ "ciphertext" : {
1714
+ INVALID_CURVE : {
1715
+ // this payload is just captured from a sync of some other element web with other users
1716
+ body : "Awogjvpx458CGhuo77HX/" ,
1717
+ type : 1 ,
1718
+ } ,
1719
+ } ,
1720
+ "org.matrix.msgid" : "93ee0170aa7740d0ac9ee137e820302d" ,
1721
+ "sender_key" : "WJ6Ce7U67a6jqkHYHd8o0+5H4bqdi9hInZdk0+swuXs" ,
1722
+ } ,
1723
+ type : "m.room.encrypted" ,
1724
+ sender : "@bob:example.org" ,
1725
+ } ;
1726
+
1727
+ let toDeviceEvents = [ eventWithNoType , eventWithMalformedCurveKey ] ;
1728
+
1729
+ const received = await m . receiveSyncChanges (
1730
+ JSON . stringify ( toDeviceEvents ) ,
1731
+ new DeviceLists ( ) ,
1732
+ new Map < string , number > ( ) ,
1733
+ undefined ,
1734
+ ) ;
1735
+
1736
+ expect ( received . length ) . toBe ( 2 ) ;
1737
+ const processed0 = received [ 0 ] ;
1738
+ expect ( processed0 . type ) . toEqual ( ProcessedToDeviceEventType . Invalid ) ;
1739
+ const processed1 = received [ 1 ] ;
1740
+ expect ( processed1 . type ) . toEqual ( ProcessedToDeviceEventType . Invalid ) ;
1741
+
1742
+ let toDeviceEvent0 = JSON . parse ( processed0 . wireEvent ) ;
1743
+ expect ( toDeviceEvent0 . sender ) . toEqual ( "@alice:example.com" ) ;
1744
+ expect ( toDeviceEvent0 . content ) . toBeDefined ( ) ;
1745
+ expect ( toDeviceEvent0 . type ) . toBeUndefined ( ) ;
1746
+
1747
+ let toDeviceEvent1 = JSON . parse ( processed1 . wireEvent ) ;
1748
+ expect ( toDeviceEvent1 . sender ) . toEqual ( "@bob:example.org" ) ;
1749
+ expect ( toDeviceEvent1 . type ) . toEqual ( "m.room.encrypted" ) ;
1750
+ } ) ;
1751
+
1685
1752
test ( "Should return the clear text version of decrypted events" , async ( ) => {
1686
1753
const aliceUserId = new UserId ( "@alice:example.org" ) ;
1687
1754
const aliceDeviceId = new DeviceId ( "ALICE_DEV" ) ;
@@ -1776,12 +1843,11 @@ describe(OlmMachine.name, () => {
1776
1843
undefined ,
1777
1844
) ;
1778
1845
1779
- const receivedToDevices = JSON . parse ( received ) ;
1780
- expect ( receivedToDevices ) . toBeInstanceOf ( Array ) ;
1781
- const receivedToDeviceArray : Array < any > = receivedToDevices ;
1782
- expect ( receivedToDeviceArray . length ) . toBe ( 1 ) ;
1783
- const toDeviceEvent = receivedToDeviceArray [ 0 ] ;
1846
+ expect ( received . length ) . toBe ( 1 ) ;
1847
+ const processed = received [ 0 ] ;
1848
+ expect ( processed . type ) . toEqual ( ProcessedToDeviceEventType . Decrypted ) ;
1784
1849
1850
+ let toDeviceEvent = JSON . parse ( processed . wireEvent ) ;
1785
1851
expect ( toDeviceEvent . sender ) . toEqual ( "@alice:example.org" ) ;
1786
1852
expect ( toDeviceEvent . type ) . toEqual ( "custom.type" ) ;
1787
1853
expect ( toDeviceEvent . content . foo ) . toEqual ( "bar" ) ;
0 commit comments