@@ -26,7 +26,7 @@ describe('MessageProvider', () => {
26
26
relayService = {
27
27
sendMessage : jest . fn ( ) ,
28
28
getMessages : jest . fn ( ) . mockResolvedValue ( didCommMessages ) ,
29
- resolveDidcommMessage : jest . fn ( ) . mockImplementation ( ( { encryptedMessage } ) => encryptedMessage ) ,
29
+ resolveDidcommMessage : jest . fn ( ) . mockImplementation ( ( { message } ) => message ) ,
30
30
} ;
31
31
32
32
wallet = await createWallet ( {
@@ -35,6 +35,7 @@ describe('MessageProvider', () => {
35
35
didProvider = createDIDProvider ( {
36
36
wallet,
37
37
} ) ;
38
+ didProvider . getDIDKeyPairs = jest . fn ( ) . mockResolvedValue ( [ { controller : "someDid" } ] )
38
39
messageProvider = createMessageProvider ( {
39
40
wallet,
40
41
didProvider,
@@ -59,7 +60,7 @@ describe('MessageProvider', () => {
59
60
await messageProvider . processDIDCommMessages ( ) ;
60
61
61
62
expect ( wallet . eventManager . emit ) . toHaveBeenCalledWith ( 'didcomm-messages-received' , didCommMessages ) ;
62
- expect ( wallet . eventManager . emit ) . toHaveBeenCalledWith ( 'didcomm-message-decrypted' , didCommMessages [ 0 ] ) ;
63
+ expect ( wallet . eventManager . emit ) . toHaveBeenCalledWith ( 'didcomm-message-decrypted' , { "decryptedMessage" : didCommMessages [ 0 ] , "messageId" : didCommMessages [ 0 ] . _id } ) ;
63
64
} ) ;
64
65
65
66
@@ -81,15 +82,34 @@ describe('MessageProvider', () => {
81
82
) . rejects . toThrow ( 'Failed to send message: Sending failed' ) ;
82
83
} ) ;
83
84
84
- it ( 'should handle errors when processing DIDComm messages' , async ( ) => {
85
- relayService . resolveDidcommMessage . mockRejectedValue ( new Error ( 'Decryption failed' ) ) ;
85
+ // it('should handle errors when processing DIDComm messages', async () => {
86
+ // relayService.resolveDidcommMessage.mockRejectedValue(new Error('Decryption failed'));
86
87
87
- await expect ( messageProvider . processDIDCommMessages ( ) ) . rejects . toThrow ( 'Failed to process DIDComm messages: Decryption failed' ) ;
88
+ // await expect(messageProvider.processDIDCommMessages()).rejects.toThrow('Failed to process DIDComm messages: Decryption failed');
89
+ // });
90
+
91
+ it ( 'should skip did that fail lookup when processing DIDComm messages' , async ( ) => {
92
+ jest . spyOn ( wallet . eventManager , 'emit' ) . mockReset ( ) ;
93
+ const messageProvider2 = createMessageProvider ( {
94
+ wallet,
95
+ didProvider,
96
+ relayService : {
97
+ ...relayService ,
98
+ resolveDidcommMessage : jest . fn ( ) . mockRejectedValueOnce ( new Error ( 'A DID document lookup was successful, but the DID in question does not exist. This is different from a network error.' ) ) . mockImplementation ( ( { message } ) => message ) ,
99
+ } ,
100
+ } ) ;
101
+
102
+ await messageProvider2 . fetchMessages ( )
103
+ await messageProvider2 . processDIDCommMessages ( ) ;
104
+
105
+ expect ( wallet . eventManager . emit ) . toHaveBeenCalledWith ( 'didcomm-messages-received' , didCommMessages ) ;
106
+ expect ( wallet . eventManager . emit ) . toHaveBeenCalledWith ( 'didcomm-message-decrypted' , { "decryptedMessage" : didCommMessages [ 1 ] , "messageId" : didCommMessages [ 1 ] . _id } ) ;
88
107
} ) ;
89
108
90
109
it ( 'should handle errors when marking messages as read' , async ( ) => {
110
+ await messageProvider . fetchMessages ( ) ;
91
111
wallet . removeDocument = jest . fn ( ) . mockRejectedValue ( new Error ( 'Removal failed' ) ) ;
92
112
93
- await expect ( messageProvider . markMessageAsRead ( 'someId ' ) ) . rejects . toThrow ( 'Failed to mark message as read: Removal failed' ) ;
113
+ await expect ( messageProvider . markMessageAsRead ( '651e965410fc3fcfffdd17f1 ' ) ) . rejects . toThrow ( 'Failed to mark message as read: Removal failed' ) ;
94
114
} ) ;
95
115
} ) ;
0 commit comments