Skip to content

Commit f33dce4

Browse files
authored
fix: verifier.oidc-interaction-qr-scanned.v1 for s3 (#1425)
* fix: verifier.oidc-interaction-qr-scanned.v1 for s3 * fix: init
1 parent b6fc210 commit f33dce4

File tree

9 files changed

+36
-130
lines changed

9 files changed

+36
-130
lines changed

cmd/vc-rest/startcmd/start.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -863,8 +863,7 @@ func buildEchoHandler(
863863
documentLoader,
864864
)
865865

866-
requestObjectStoreService := vp.NewRequestObjectStore(requestObjStore, eventSvc,
867-
requestObjStoreEndpoint, conf.StartupParameters.verifierEventTopic)
866+
requestObjectStoreService := vp.NewRequestObjectStore(requestObjStore, requestObjStoreEndpoint)
868867

869868
var oidc4vpService oidc4vp.ServiceInterface
870869

component/oidc/vp/requestobjectstore.go

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
"net/url"
1414
"strings"
1515

16-
"github.com/trustbloc/vcs/pkg/event/spi"
1716
"github.com/trustbloc/vcs/pkg/service/requestobject"
1817
)
1918

@@ -24,39 +23,27 @@ type requestObjectStoreRepository interface {
2423
GetResourceURL(key string) string
2524
}
2625

27-
type eventService interface {
28-
Publish(ctx context.Context, topic string, messages ...*spi.Event) error
29-
}
30-
3126
type RequestObjectStore struct {
32-
repo requestObjectStoreRepository
33-
eventSvc eventService
34-
eventTopic string
35-
27+
repo requestObjectStoreRepository
3628
selfURI string
3729
}
3830

3931
func NewRequestObjectStore(
4032
repo requestObjectStoreRepository,
41-
eventSvc eventService,
42-
selfURI, eventTopic string,
33+
selfURI string,
4334
) *RequestObjectStore {
4435
return &RequestObjectStore{
45-
repo: repo,
46-
eventSvc: eventSvc,
47-
selfURI: selfURI,
48-
eventTopic: eventTopic,
36+
repo: repo,
37+
selfURI: selfURI,
4938
}
5039
}
5140

5241
func (s *RequestObjectStore) Publish(
5342
ctx context.Context,
5443
requestObject string,
55-
accessRequestObjectEvent *spi.Event,
5644
) (string, error) {
5745
resp, err := s.repo.Create(ctx, requestobject.RequestObject{
58-
Content: requestObject,
59-
AccessRequestObjectEvent: accessRequestObjectEvent,
46+
Content: requestObject,
6047
})
6148
if err != nil {
6249
return "", err
@@ -86,10 +73,5 @@ func (s *RequestObjectStore) Get(ctx context.Context, id string) (*requestobject
8673
return nil, err
8774
}
8875

89-
err = s.eventSvc.Publish(ctx, s.eventTopic, result.AccessRequestObjectEvent)
90-
if err != nil {
91-
return nil, err
92-
}
93-
9476
return result, nil
9577
}

component/oidc/vp/requestobjectstore_test.go

Lines changed: 11 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import (
1717
"github.com/stretchr/testify/assert"
1818
"github.com/stretchr/testify/require"
1919

20-
"github.com/trustbloc/vcs/pkg/event/spi"
2120
"github.com/trustbloc/vcs/pkg/service/requestobject"
2221
)
2322

@@ -37,19 +36,16 @@ func TestRequestObjectStore(t *testing.T) {
3736

3837
repo := NewMockRequestObjectStoreRepository(gomock.NewController(t))
3938
repo.EXPECT().Create(context.TODO(), requestobject.RequestObject{
40-
Content: strData,
41-
AccessRequestObjectEvent: &spi.Event{},
39+
Content: strData,
4240
}).Return(&requestobject.RequestObject{
4341
ID: randomID,
4442
Content: strData,
4543
}, nil)
4644
repo.EXPECT().GetResourceURL(randomID).Return("")
4745

48-
eventSvc := NewMockEventService(gomock.NewController(t))
49-
50-
store := NewRequestObjectStore(repo, eventSvc, uri, spi.VerifierEventTopic)
46+
store := NewRequestObjectStore(repo, uri)
5147

52-
finalURI, err := store.Publish(context.TODO(), string(dataBytes), &spi.Event{})
48+
finalURI, err := store.Publish(context.TODO(), string(dataBytes))
5349

5450
assert.NoError(t, err)
5551

@@ -61,19 +57,16 @@ func TestRequestObjectStore(t *testing.T) {
6157

6258
repo := NewMockRequestObjectStoreRepository(gomock.NewController(t))
6359
repo.EXPECT().Create(context.TODO(), requestobject.RequestObject{
64-
Content: strData,
65-
AccessRequestObjectEvent: &spi.Event{},
60+
Content: strData,
6661
}).Return(&requestobject.RequestObject{
6762
ID: randomID,
6863
Content: strData,
6964
}, nil)
7065
repo.EXPECT().GetResourceURL(randomID).Return("https://awesome-url/resources/2135321")
7166

72-
eventSvc := NewMockEventService(gomock.NewController(t))
67+
store := NewRequestObjectStore(repo, uri)
7368

74-
store := NewRequestObjectStore(repo, eventSvc, uri, spi.VerifierEventTopic)
75-
76-
finalURI, err := store.Publish(context.TODO(), string(dataBytes), &spi.Event{})
69+
finalURI, err := store.Publish(context.TODO(), string(dataBytes))
7770

7871
assert.NoError(t, err)
7972

@@ -86,11 +79,9 @@ func TestRequestObjectStore(t *testing.T) {
8679
repo := NewMockRequestObjectStoreRepository(gomock.NewController(t))
8780
repo.EXPECT().Create(gomock.Any(), gomock.Any()).Return(nil, errors.New(errorStr))
8881

89-
eventSvc := NewMockEventService(gomock.NewController(t))
90-
91-
store := NewRequestObjectStore(repo, eventSvc, uri, spi.VerifierEventTopic)
82+
store := NewRequestObjectStore(repo, uri)
9283

93-
finalURI, err := store.Publish(context.TODO(), string(dataBytes), &spi.Event{})
84+
finalURI, err := store.Publish(context.TODO(), string(dataBytes))
9485
assert.Empty(t, finalURI)
9586
assert.ErrorContains(t, err, errorStr)
9687
})
@@ -102,10 +93,7 @@ func TestRequestObjectStore(t *testing.T) {
10293
ID: id,
10394
}, nil)
10495

105-
eventSvc := NewMockEventService(gomock.NewController(t))
106-
eventSvc.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).Times(1).Return(nil)
107-
108-
store := NewRequestObjectStore(repo, eventSvc, uri, spi.VerifierEventTopic)
96+
store := NewRequestObjectStore(repo, uri)
10997

11098
resp, err := store.Get(context.TODO(), id)
11199

@@ -118,26 +106,7 @@ func TestRequestObjectStore(t *testing.T) {
118106
repo := NewMockRequestObjectStoreRepository(gomock.NewController(t))
119107
repo.EXPECT().Find(gomock.Any(), gomock.Any()).Return(nil, errors.New("store failed"))
120108

121-
eventSvc := NewMockEventService(gomock.NewController(t))
122-
123-
store := NewRequestObjectStore(repo, eventSvc, uri, spi.VerifierEventTopic)
124-
125-
_, err := store.Get(context.TODO(), id)
126-
127-
assert.Error(t, err)
128-
})
129-
130-
t.Run("Get publish event failed", func(t *testing.T) {
131-
id := "21342315231w"
132-
repo := NewMockRequestObjectStoreRepository(gomock.NewController(t))
133-
repo.EXPECT().Find(gomock.Any(), gomock.Any()).Return(&requestobject.RequestObject{
134-
ID: id,
135-
}, nil)
136-
137-
eventSvc := NewMockEventService(gomock.NewController(t))
138-
eventSvc.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).Times(1).Return(errors.New("publish failed"))
139-
140-
store := NewRequestObjectStore(repo, eventSvc, uri, spi.VerifierEventTopic)
109+
store := NewRequestObjectStore(repo, uri)
141110

142111
_, err := store.Get(context.TODO(), id)
143112

@@ -169,9 +138,7 @@ func TestDelete(t *testing.T) {
169138
repo := NewMockRequestObjectStoreRepository(gomock.NewController(t))
170139
repo.EXPECT().Delete(gomock.Any(), testCase.expectedID).Return(nil)
171140

172-
eventSvc := NewMockEventService(gomock.NewController(t))
173-
174-
store := NewRequestObjectStore(repo, eventSvc, "", spi.VerifierEventTopic)
141+
store := NewRequestObjectStore(repo, "")
175142

176143
assert.NoError(t, store.Remove(context.TODO(), testCase.path))
177144
})

pkg/service/oidc4vp/oidc4vp_service.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ type transactionManager interface {
6060
}
6161

6262
type requestObjectPublicStore interface {
63-
Publish(ctx context.Context, requestObject string, accessRequestObjectEvent *spi.Event) (string, error)
63+
Publish(ctx context.Context, requestObject string) (string, error)
6464
}
6565

6666
type kmsRegistry interface {
@@ -254,12 +254,7 @@ func (s *Service) InitiateOidcInteraction(
254254

255255
logger.Debugc(ctx, "InitiateOidcInteraction request object created")
256256

257-
accessRequestObjectEvent, err := s.createEvent(tx, profile, spi.VerifierOIDCInteractionQRScanned, nil)
258-
if err != nil {
259-
return nil, err
260-
}
261-
262-
requestURI, err := s.requestObjectPublicStore.Publish(ctx, token, accessRequestObjectEvent)
257+
requestURI, err := s.requestObjectPublicStore.Publish(ctx, token)
263258
if err != nil {
264259
return nil, fmt.Errorf("fail publish request object: %w", err)
265260
}
@@ -378,6 +373,10 @@ func (s *Service) VerifyOIDCVerifiablePresentation(ctx context.Context, txID TxI
378373
return fmt.Errorf("inconsistent transaction state %w", err)
379374
}
380375

376+
if errSendEvent := s.sendEvent(ctx, tx, profile, spi.VerifierOIDCInteractionQRScanned); errSendEvent != nil {
377+
return errSendEvent
378+
}
379+
381380
logger.Debugc(ctx, "VerifyOIDCVerifiablePresentation profile fetched", logfields.WithProfileID(profile.ID))
382381

383382
logger.Debugc(ctx, fmt.Sprintf("VerifyOIDCVerifiablePresentation count of tokens is %v", len(tokens)))

pkg/service/oidc4vp/oidc4vp_service_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ func TestService_InitiateOidcInteraction(t *testing.T) {
7979
PresentationDefinition: &presexch.PresentationDefinition{},
8080
}, "nonce1", nil)
8181
requestObjectPublicStore := NewMockRequestObjectPublicStore(gomock.NewController(t))
82-
requestObjectPublicStore.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).
83-
AnyTimes().DoAndReturn(func(ctx context.Context, token string, event *spi.Event) (string, error) {
82+
requestObjectPublicStore.EXPECT().Publish(gomock.Any(), gomock.Any()).
83+
AnyTimes().DoAndReturn(func(ctx context.Context, token string) (string, error) {
8484
return "someurl/abc", nil
8585
})
8686

@@ -173,7 +173,7 @@ func TestService_InitiateOidcInteraction(t *testing.T) {
173173

174174
t.Run("publish request object failed", func(t *testing.T) {
175175
requestObjectPublicStoreErr := NewMockRequestObjectPublicStore(gomock.NewController(t))
176-
requestObjectPublicStoreErr.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).
176+
requestObjectPublicStoreErr.EXPECT().Publish(gomock.Any(), gomock.Any()).
177177
AnyTimes().Return("", errors.New("fail"))
178178

179179
withError := oidc4vp.NewService(&oidc4vp.Config{

pkg/service/requestobject/types.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,11 @@ package requestobject
88

99
import (
1010
"errors"
11-
12-
"github.com/trustbloc/vcs/pkg/event/spi"
1311
)
1412

1513
type RequestObject struct {
16-
ID string `json:"id"`
17-
Content string `json:"content"`
18-
AccessRequestObjectEvent *spi.Event `json:"accessRequestObjectEvent"`
14+
ID string `json:"id"`
15+
Content string `json:"content"`
1916
}
2017

2118
var ErrDataNotFound = errors.New("data not found")

pkg/storage/mongodb/requestobjectstore/request_object_store.go

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import (
1515
"go.mongodb.org/mongo-driver/bson/primitive"
1616
"go.mongodb.org/mongo-driver/mongo"
1717

18-
"github.com/trustbloc/vcs/pkg/event/spi"
1918
"github.com/trustbloc/vcs/pkg/service/requestobject"
2019
"github.com/trustbloc/vcs/pkg/storage/mongodb"
2120
)
@@ -30,9 +29,8 @@ type Store struct {
3029
}
3130

3231
type mongoDocument struct {
33-
ID primitive.ObjectID `bson:"_id,omitempty"`
34-
Content string `bson:"content"`
35-
AccessRequestObjectEvent map[string]interface{} `bson:"accessRequestObjectEvent"`
32+
ID primitive.ObjectID `bson:"_id,omitempty"`
33+
Content string `bson:"content"`
3634
}
3735

3836
// NewStore creates Store.
@@ -47,15 +45,9 @@ func (p *Store) Create(
4745
) (*requestobject.RequestObject, error) {
4846
collection := p.mongoClient.Database().Collection(txCollection)
4947

50-
event, err := mongodb.StructureToMap(request.AccessRequestObjectEvent)
51-
if err != nil {
52-
return nil, fmt.Errorf("create doc: %w", err)
53-
}
54-
5548
obj := &mongoDocument{
56-
ID: primitive.ObjectID{},
57-
Content: request.Content,
58-
AccessRequestObjectEvent: event,
49+
ID: primitive.ObjectID{},
50+
Content: request.Content,
5951
}
6052

6153
result, err := collection.InsertOne(ctx, obj)
@@ -94,17 +86,9 @@ func (p *Store) Find(
9486
return nil, fmt.Errorf("tx find failed: %w", err)
9587
}
9688

97-
event := &spi.Event{}
98-
99-
err = mongodb.MapToStructure(txDoc.AccessRequestObjectEvent, event)
100-
if err != nil {
101-
return nil, fmt.Errorf("access request object event deserialization failed: %w", err)
102-
}
103-
10489
return &requestobject.RequestObject{
105-
ID: txDoc.ID.Hex(),
106-
Content: txDoc.Content,
107-
AccessRequestObjectEvent: event,
90+
ID: txDoc.ID.Hex(),
91+
Content: txDoc.Content,
10892
}, nil
10993
}
11094

pkg/storage/mongodb/requestobjectstore/request_object_store_test.go

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ package requestobjectstore
88

99
import (
1010
"context"
11-
"encoding/json"
1211
"fmt"
1312
"reflect"
1413
"testing"
@@ -26,7 +25,6 @@ import (
2625
"go.mongodb.org/mongo-driver/mongo"
2726
"go.mongodb.org/mongo-driver/mongo/options"
2827

29-
"github.com/trustbloc/vcs/pkg/event/spi"
3028
"github.com/trustbloc/vcs/pkg/service/requestobject"
3129
"github.com/trustbloc/vcs/pkg/storage/mongodb"
3230
)
@@ -86,21 +84,8 @@ func TestObjectStore(t *testing.T) {
8684
t.Run("Create and find by id", func(t *testing.T) {
8785
u := uuid.New()
8886

89-
eventData := json.RawMessage(`{"test":"test"}`)
90-
91-
expectedEvent := spi.Event{
92-
SpecVersion: "test1",
93-
ID: "test2",
94-
Source: "test2",
95-
Type: "test4",
96-
DataContentType: "test5",
97-
Time: nil,
98-
Data: eventData,
99-
}
100-
10187
resp, err := store.Create(context.TODO(), requestobject.RequestObject{
102-
Content: u,
103-
AccessRequestObjectEvent: &expectedEvent,
88+
Content: u,
10489
})
10590

10691
assert.NoError(t, err)
@@ -109,11 +94,6 @@ func TestObjectStore(t *testing.T) {
10994

11095
assert.NoError(t, err2)
11196
assert.Equal(t, u, resp2.Content)
112-
113-
if !reflect.DeepEqual(resp2.AccessRequestObjectEvent.Data, expectedEvent.Data) {
114-
t.Errorf("ValidateCredential() got = %v, want %v",
115-
resp2.AccessRequestObjectEvent, expectedEvent)
116-
}
11797
})
11898

11999
t.Run("Find non-existing document", func(t *testing.T) {

pkg/storage/s3/requestobjectstore/request_object_store_test.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,13 @@ import (
1717
"github.com/golang/mock/gomock"
1818
"github.com/stretchr/testify/assert"
1919

20-
"github.com/trustbloc/vcs/pkg/event/spi"
2120
"github.com/trustbloc/vcs/pkg/service/requestobject"
2221
"github.com/trustbloc/vcs/pkg/storage/s3/requestobjectstore"
2322
)
2423

2524
func TestCreate(t *testing.T) {
2625
targetObj := &requestobject.RequestObject{
27-
Content: "any string",
28-
AccessRequestObjectEvent: &spi.Event{ID: "1234"},
26+
Content: "any string",
2927
}
3028

3129
t.Run("success", func(t *testing.T) {

0 commit comments

Comments
 (0)