Skip to content
This repository was archived by the owner on Mar 27, 2024. It is now read-only.

Commit 92ac19f

Browse files
authored
Merge pull request #964 from soluchok/issue-963
refactor: Introduce - send message logic
2 parents 9f7e2c3 + 1b6bf0b commit 92ac19f

File tree

18 files changed

+382
-517
lines changed

18 files changed

+382
-517
lines changed

pkg/client/didexchange/client.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ func (c *Client) HandleInvitation(invitation *Invitation) (string, error) {
157157
return "", fmt.Errorf("failed to create DIDCommMsg: %w", err)
158158
}
159159

160-
connectionID, err := c.didexchangeSvc.HandleInbound(msg)
160+
connectionID, err := c.didexchangeSvc.HandleInbound(msg, "", "")
161161
if err != nil {
162162
return "", fmt.Errorf("failed from didexchange service handle: %w", err)
163163
}

pkg/client/didexchange/client_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -589,7 +589,7 @@ func TestServiceEvents(t *testing.T) {
589589

590590
msg, err := service.NewDIDCommMsg(request)
591591
require.NoError(t, err)
592-
_, err = didExSvc.HandleInbound(msg)
592+
_, err = didExSvc.HandleInbound(msg, "", "")
593593
require.NoError(t, err)
594594

595595
select {
@@ -679,7 +679,7 @@ func TestAcceptExchangeRequest(t *testing.T) {
679679

680680
msg, err := service.NewDIDCommMsg(request)
681681
require.NoError(t, err)
682-
_, err = didExSvc.HandleInbound(msg)
682+
_, err = didExSvc.HandleInbound(msg, "", "")
683683
require.NoError(t, err)
684684

685685
select {
@@ -760,7 +760,7 @@ func TestAcceptInvitation(t *testing.T) {
760760

761761
msg, svcErr := service.NewDIDCommMsg(invitation)
762762
require.NoError(t, svcErr)
763-
_, err = didExSvc.HandleInbound(msg)
763+
_, err = didExSvc.HandleInbound(msg, "", "")
764764
require.NoError(t, err)
765765

766766
select {

pkg/client/introduce/client.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -107,12 +107,12 @@ func (c *Client) SendProposalWithInvitation(inv *didexchange.Invitation, recipie
107107

108108
// SendRequest sends a request
109109
// sending a request means that introducee is willing to share its invitation
110-
func (c *Client) SendRequest(dest *service.Destination) error {
110+
func (c *Client) SendRequest(myDID, theirDID string) error {
111111
return c.handleOutbound(&introduce.Request{
112112
Type: introduce.RequestMsgType,
113113
ID: c.newUUID(),
114114
}, InvitationEnvelope{
115-
Recps: []*introduce.Recipient{{Destination: dest}},
115+
Recps: []*introduce.Recipient{{MyDID: myDID, TheirDID: theirDID}},
116116
})
117117
}
118118

@@ -164,7 +164,7 @@ func (c *Client) handleOutbound(msg interface{}, o InvitationEnvelope) error {
164164
return err
165165
}
166166

167-
return c.service.HandleOutbound(didMsg, o.Recps[0].Destination)
167+
return c.service.HandleOutbound(didMsg, o.Recps[0].MyDID, o.Recps[0].MyDID)
168168
}
169169

170170
// InvitationEnvelope keeps the information needed for sending a proposal

pkg/client/introduce/client_test.go

+12-12
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,12 @@ func TestClient_SendProposal(t *testing.T) {
103103
require.NotNil(t, svc)
104104

105105
DIDComm := serviceMocks.NewMockDIDComm(ctrl)
106-
DIDComm.EXPECT().HandleOutbound(gomock.Any(), gomock.Any()).Return(nil)
106+
DIDComm.EXPECT().HandleOutbound(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
107107

108108
opts := InvitationEnvelope{
109109
Recps: []*introduce.Recipient{
110-
{Destination: &service.Destination{ServiceEndpoint: "service/endpoint1"}},
111-
{Destination: &service.Destination{ServiceEndpoint: "service/endpoint2"}},
110+
{MyDID: "My_DID1", TheirDID: "THEIR_DID1"},
111+
{MyDID: "My_DID2", TheirDID: "THEIR_DID2"},
112112
},
113113
}
114114
store.EXPECT().Put(invitationEnvelopePrefix+UUID, toBytes(t, opts)).Return(nil)
@@ -148,14 +148,14 @@ func TestClient_SendProposalWithInvitation(t *testing.T) {
148148
require.NotNil(t, svc)
149149

150150
DIDComm := serviceMocks.NewMockDIDComm(ctrl)
151-
DIDComm.EXPECT().HandleOutbound(gomock.Any(), gomock.Any()).Return(nil)
151+
DIDComm.EXPECT().HandleOutbound(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
152152

153153
opts := InvitationEnvelope{
154154
Inv: &didexchange.Invitation{
155155
ID: UUID,
156156
},
157157
Recps: []*introduce.Recipient{
158-
{Destination: &service.Destination{ServiceEndpoint: "service/endpoint"}},
158+
{MyDID: "My_DID", TheirDID: "THEIR_DID"},
159159
},
160160
}
161161
store.EXPECT().Put(invitationEnvelopePrefix+UUID, toBytes(t, opts)).Return(nil)
@@ -197,7 +197,7 @@ func TestClient_HandleRequest(t *testing.T) {
197197
opts := InvitationEnvelope{
198198
Recps: []*introduce.Recipient{
199199
{To: &introduce.To{Name: "Carol"}},
200-
{Destination: &service.Destination{ServiceEndpoint: "service/endpoint"}},
200+
{MyDID: "My_DID2", TheirDID: "THEIR_DID2"},
201201
},
202202
}
203203
store.EXPECT().Put(invitationEnvelopePrefix+UUID, toBytes(t, opts)).Return(nil)
@@ -294,8 +294,8 @@ func TestClient_InvitationEnvelope(t *testing.T) {
294294
ID: UUID,
295295
},
296296
Recps: []*introduce.Recipient{
297-
{To: &introduce.To{Name: "Carol"}, Destination: &service.Destination{ServiceEndpoint: "service/endpoint1"}},
298-
{Destination: &service.Destination{ServiceEndpoint: "service/endpoint1"}},
297+
{To: &introduce.To{Name: "Carol"}, MyDID: "My_DID1", TheirDID: "THEIR_DID1"},
298+
{MyDID: "My_DID2", TheirDID: "THEIR_DID2"},
299299
},
300300
}
301301
store.EXPECT().Get(invitationEnvelopePrefix+UUID).Return(toBytes(t, opts), nil)
@@ -355,11 +355,11 @@ func TestClient_SendRequest(t *testing.T) {
355355
require.NotNil(t, svc)
356356

357357
DIDComm := serviceMocks.NewMockDIDComm(ctrl)
358-
DIDComm.EXPECT().HandleOutbound(gomock.Any(), gomock.Any()).Return(nil)
358+
DIDComm.EXPECT().HandleOutbound(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
359359

360360
opts := InvitationEnvelope{
361361
Recps: []*introduce.Recipient{
362-
{Destination: &service.Destination{ServiceEndpoint: "service/endpoint"}},
362+
{MyDID: "My_DID", TheirDID: "THEIR_DID"},
363363
},
364364
}
365365
store.EXPECT().Put(invitationEnvelopePrefix+UUID, toBytes(t, opts)).Return(nil)
@@ -373,10 +373,10 @@ func TestClient_SendRequest(t *testing.T) {
373373
require.NoError(t, err)
374374

375375
client.newUUID = func() string { return UUID }
376-
require.NoError(t, client.SendRequest(opts.Recps[0].Destination))
376+
require.NoError(t, client.SendRequest(opts.Recps[0].MyDID, opts.Recps[0].TheirDID))
377377

378378
// with error
379-
require.EqualError(t, client.SendRequest(opts.Recps[0].Destination), "test error")
379+
require.EqualError(t, client.SendRequest(opts.Recps[0].MyDID, opts.Recps[0].TheirDID), "test error")
380380
}
381381

382382
func toBytes(t *testing.T, v interface{}) []byte {

pkg/didcomm/common/service/service.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ import (
1616
// Handler provides protocol service handle api.
1717
type Handler interface {
1818
// HandleInbound handles inbound messages.
19-
HandleInbound(msg *DIDCommMsg) (string, error)
19+
HandleInbound(msg *DIDCommMsg, myDID string, theirDID string) (string, error)
2020
// HandleOutbound handles outbound messages.
21-
HandleOutbound(msg *DIDCommMsg, dest *Destination) error
21+
HandleOutbound(msg *DIDCommMsg, myDID, theirDID string) error
2222
}
2323

2424
// DIDComm defines service APIs.

pkg/didcomm/dispatcher/api.go

+1
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@ type Service interface {
2020
// Outbound interface
2121
type Outbound interface {
2222
Send(interface{}, string, *service.Destination) error
23+
SendToDID(msg interface{}, myDID, theirDID string) error
2324
}

pkg/didcomm/dispatcher/outbound.go

+5
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ func NewOutbound(prov provider) *OutboundDispatcher {
4040
}
4141
}
4242

43+
// SendToDID msg
44+
func (o *OutboundDispatcher) SendToDID(msg interface{}, myDID, theirDID string) error {
45+
return nil
46+
}
47+
4348
// Send msg
4449
func (o *OutboundDispatcher) Send(msg interface{}, senderVerKey string, des *service.Destination) error {
4550
for _, v := range o.outboundTransports {

pkg/didcomm/protocol/didexchange/service.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ func New(prov provider) (*Service, error) {
126126
}
127127

128128
// HandleInbound handles inbound didexchange messages.
129-
func (s *Service) HandleInbound(msg *service.DIDCommMsg) (string, error) {
129+
func (s *Service) HandleInbound(msg *service.DIDCommMsg, myDID, theirDID string) (string, error) {
130130
logger.Debugf("receive inbound message : %s", msg.Payload)
131131

132132
// fetch the thread id
@@ -181,7 +181,7 @@ func (s *Service) Accept(msgType string) bool {
181181
}
182182

183183
// HandleOutbound handles outbound didexchange messages.
184-
func (s *Service) HandleOutbound(msg *service.DIDCommMsg, destination *service.Destination) error {
184+
func (s *Service) HandleOutbound(msg *service.DIDCommMsg, myDID, theirDID string) error {
185185
return errors.New("not implemented")
186186
}
187187

pkg/didcomm/protocol/didexchange/service_test.go

+25-21
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func TestService_Handle_Inviter(t *testing.T) {
128128
require.NoError(t, err)
129129
msg, err := service.NewDIDCommMsg(payloadBytes)
130130
require.NoError(t, err)
131-
_, err = s.HandleInbound(msg)
131+
_, err = s.HandleInbound(msg, "", "")
132132
require.NoError(t, err)
133133

134134
select {
@@ -150,7 +150,7 @@ func TestService_Handle_Inviter(t *testing.T) {
150150
didMsg, err := service.NewDIDCommMsg(payloadBytes)
151151
require.NoError(t, err)
152152

153-
_, err = s.HandleInbound(didMsg)
153+
_, err = s.HandleInbound(didMsg, "", "")
154154
require.NoError(t, err)
155155

156156
select {
@@ -251,7 +251,7 @@ func TestService_Handle_Invitee(t *testing.T) {
251251
didMsg, err := service.NewDIDCommMsg(payloadBytes)
252252
require.NoError(t, err)
253253

254-
_, err = s.HandleInbound(didMsg)
254+
_, err = s.HandleInbound(didMsg, "", "")
255255
require.NoError(t, err)
256256

257257
var connID string
@@ -293,7 +293,7 @@ func TestService_Handle_Invitee(t *testing.T) {
293293
didMsg, err = service.NewDIDCommMsg(payloadBytes)
294294
require.NoError(t, err)
295295

296-
_, err = s.HandleInbound(didMsg)
296+
_, err = s.HandleInbound(didMsg, "", "")
297297
require.NoError(t, err)
298298

299299
// Alice automatically sends an ACK to Bob
@@ -345,7 +345,7 @@ func TestService_Handle_EdgeCases(t *testing.T) {
345345
didMsg, err := service.NewDIDCommMsg(response)
346346
require.NoError(t, err)
347347

348-
_, err = s.HandleInbound(didMsg)
348+
_, err = s.HandleInbound(didMsg, "", "")
349349
require.Error(t, err)
350350
require.Contains(t, err.Error(), "handle inbound - next state : invalid state transition: "+
351351
"null -> responded")
@@ -366,7 +366,7 @@ func TestService_Handle_EdgeCases(t *testing.T) {
366366
didMsg, err := service.NewDIDCommMsg(requestBytes)
367367
require.NoError(t, err)
368368

369-
_, err = svc.HandleInbound(didMsg)
369+
_, err = svc.HandleInbound(didMsg, "", "")
370370
require.Error(t, err)
371371
require.Equal(t, err.Error(), "threadID not found")
372372
})
@@ -381,7 +381,7 @@ func TestService_Handle_EdgeCases(t *testing.T) {
381381
transientStore := &mockstorage.MockStore{Store: make(map[string][]byte), ErrPut: errors.New("db error")}
382382
svc.connectionStore = NewConnectionRecorder(transientStore, nil)
383383

384-
_, err = svc.HandleInbound(generateRequestMsgPayload(t, &protocol.MockProvider{}, randomString(), ""))
384+
_, err = svc.HandleInbound(generateRequestMsgPayload(t, &protocol.MockProvider{}, randomString(), ""), "", "")
385385
require.Error(t, err)
386386
require.Contains(t, err.Error(), "save connection record")
387387
})
@@ -419,7 +419,7 @@ func TestService_Handle_EdgeCases(t *testing.T) {
419419
didMsg, err := service.NewDIDCommMsg(requestBytes)
420420
require.NoError(t, err)
421421

422-
_, err = svc.HandleInbound(didMsg)
422+
_, err = svc.HandleInbound(didMsg, "", "")
423423
require.NoError(t, err)
424424
})
425425
}
@@ -628,7 +628,7 @@ func TestEventsSuccess(t *testing.T) {
628628
didMsg, err := service.NewDIDCommMsg(invite)
629629
require.NoError(t, err)
630630

631-
_, err = svc.HandleInbound(didMsg)
631+
_, err = svc.HandleInbound(didMsg, "", "")
632632
require.NoError(t, err)
633633

634634
select {
@@ -665,7 +665,7 @@ func TestContinueWithPublicDID(t *testing.T) {
665665
didMsg, err := service.NewDIDCommMsg(invite)
666666
require.NoError(t, err)
667667

668-
_, err = svc.HandleInbound(didMsg)
668+
_, err = svc.HandleInbound(didMsg, "", "")
669669
require.NoError(t, err)
670670
}
671671

@@ -722,7 +722,7 @@ func TestEventsUserError(t *testing.T) {
722722
err = svc.connectionStore.saveNewConnectionRecord(connRec)
723723
require.NoError(t, err)
724724

725-
_, err = svc.HandleInbound(generateRequestMsgPayload(t, &protocol.MockProvider{}, id, ""))
725+
_, err = svc.HandleInbound(generateRequestMsgPayload(t, &protocol.MockProvider{}, id, ""), "", "")
726726
require.NoError(t, err)
727727

728728
select {
@@ -749,7 +749,8 @@ func TestEventStoreError(t *testing.T) {
749749
}
750750
}()
751751

752-
_, err = svc.HandleInbound(generateRequestMsgPayload(t, &protocol.MockProvider{}, randomString(), ""))
752+
_, err = svc.HandleInbound(
753+
generateRequestMsgPayload(t, &protocol.MockProvider{}, randomString(), ""), "", "")
753754
require.NoError(t, err)
754755
}
755756

@@ -804,7 +805,8 @@ func TestServiceErrors(t *testing.T) {
804805
return nil, errors.New("error")
805806
}}
806807
svc.connectionStore = NewConnectionRecorder(mockStore, nil)
807-
_, err = svc.HandleInbound(generateRequestMsgPayload(t, &protocol.MockProvider{}, randomString(), ""))
808+
payload := generateRequestMsgPayload(t, &protocol.MockProvider{}, randomString(), "")
809+
_, err = svc.HandleInbound(payload, "", "")
808810
require.Error(t, err)
809811
require.Contains(t, err.Error(), "cannot fetch state from store")
810812

@@ -815,7 +817,7 @@ func TestServiceErrors(t *testing.T) {
815817

816818
svc.connectionStore = NewConnectionRecorder(transientStore, nil)
817819

818-
_, err = svc.HandleInbound(msg)
820+
_, err = svc.HandleInbound(msg, "", "")
819821
require.Error(t, err)
820822
require.Contains(t, err.Error(), "unrecognized msgType: invalid")
821823

@@ -838,7 +840,7 @@ func TestHandleOutbound(t *testing.T) {
838840
svc, err := New(&protocol.MockProvider{})
839841
require.NoError(t, err)
840842

841-
err = svc.HandleOutbound(&service.DIDCommMsg{}, &service.Destination{})
843+
err = svc.HandleOutbound(&service.DIDCommMsg{}, "", "")
842844
require.Error(t, err)
843845
require.Contains(t, err.Error(), "not implemented")
844846
}
@@ -976,8 +978,9 @@ func TestAcceptExchangeRequest(t *testing.T) {
976978
}
977979
}()
978980

979-
_, err = svc.HandleInbound(generateRequestMsgPayload(t,
980-
&protocol.MockProvider{StoreProvider: mockstorage.NewMockStoreProvider()}, randomString(), invitation.ID))
981+
_, err = svc.HandleInbound(generateRequestMsgPayload(t, &protocol.MockProvider{
982+
StoreProvider: mockstorage.NewMockStoreProvider(),
983+
}, randomString(), invitation.ID), "", "")
981984
require.NoError(t, err)
982985

983986
select {
@@ -1036,8 +1039,9 @@ func TestAcceptExchangeRequestWithPublicDID(t *testing.T) {
10361039
}
10371040
}()
10381041

1039-
_, err = svc.HandleInbound(generateRequestMsgPayload(t,
1040-
&protocol.MockProvider{StoreProvider: mockstorage.NewMockStoreProvider()}, randomString(), invitation.ID))
1042+
_, err = svc.HandleInbound(generateRequestMsgPayload(t, &protocol.MockProvider{
1043+
StoreProvider: mockstorage.NewMockStoreProvider(),
1044+
}, randomString(), invitation.ID), "", "")
10411045
require.NoError(t, err)
10421046

10431047
select {
@@ -1098,7 +1102,7 @@ func TestAcceptInvitation(t *testing.T) {
10981102
didMsg, err := service.NewDIDCommMsg(invitationBytes)
10991103
require.NoError(t, err)
11001104

1101-
_, err = svc.HandleInbound(didMsg)
1105+
_, err = svc.HandleInbound(didMsg, "", "")
11021106
require.NoError(t, err)
11031107

11041108
select {
@@ -1213,7 +1217,7 @@ func TestAcceptInvitationWithPublicDID(t *testing.T) {
12131217
didMsg, err := service.NewDIDCommMsg(invitationBytes)
12141218
require.NoError(t, err)
12151219

1216-
_, err = svc.HandleInbound(didMsg)
1220+
_, err = svc.HandleInbound(didMsg, "", "")
12171221
require.NoError(t, err)
12181222

12191223
select {

0 commit comments

Comments
 (0)