Skip to content

Commit

Permalink
Merge 2dce49c into 5d1dbb8
Browse files Browse the repository at this point in the history
  • Loading branch information
hawx authored Feb 17, 2025
2 parents 5d1dbb8 + 2dce49c commit 8c77cf8
Show file tree
Hide file tree
Showing 14 changed files with 306 additions and 76 deletions.
2 changes: 1 addition & 1 deletion cmd/event-received/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ type UidClient interface {
}

type CertificateProviderStore interface {
GetAny(ctx context.Context) (*certificateproviderdata.Provided, error)
OneByUID(ctx context.Context, uid string) (*certificateproviderdata.Provided, error)
Put(ctx context.Context, certificateProvider *certificateproviderdata.Provided) error
}

Expand Down
39 changes: 20 additions & 19 deletions cmd/event-received/mock_CertificateProviderStore_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion cmd/event-received/sirius_event_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -402,7 +402,7 @@ func handleChangeConfirmed(ctx context.Context, client dynamodbClient, certifica
}
}
case actor.TypeCertificateProvider:
certificateProvider, err := certificateProviderStore.GetAny(ctx)
certificateProvider, err := certificateProviderStore.OneByUID(ctx, v.UID)
if err != nil {
return fmt.Errorf("failed to get certificate provider: %w", err)
}
Expand Down
12 changes: 6 additions & 6 deletions cmd/event-received/sirius_event_handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1492,7 +1492,7 @@ func TestHandleImmaterialChangeConfirmed(t *testing.T) {
setupCertificateProviderStore: func(t *testing.T) *mockCertificateProviderStore {
s := newMockCertificateProviderStore(t)
s.EXPECT().
GetAny(ctx).
OneByUID(mock.Anything, mock.Anything).
Return(&certificateproviderdata.Provided{
PK: dynamo.LpaKey("123"),
SK: dynamo.CertificateProviderKey("789"),
Expand Down Expand Up @@ -1572,7 +1572,7 @@ func TestHandleChangeConfirmedWhenIdentityTaskNotPending(t *testing.T) {
setupCertificateProviderStore: func(t *testing.T) *mockCertificateProviderStore {
s := newMockCertificateProviderStore(t)
s.EXPECT().
GetAny(ctx).
OneByUID(ctx, "M-1111-2222-3333").
Return(&certificateproviderdata.Provided{
PK: dynamo.LpaKey("123"),
SK: dynamo.CertificateProviderKey("789"),
Expand Down Expand Up @@ -1682,7 +1682,7 @@ func TestHandleChangeConfirmedWhenLpaStoreClientError(t *testing.T) {
setupCertificateProviderStore: func(t *testing.T) *mockCertificateProviderStore {
s := newMockCertificateProviderStore(t)
s.EXPECT().
GetAny(ctx).
OneByUID(mock.Anything, mock.Anything).
Return(&certificateproviderdata.Provided{
PK: dynamo.LpaKey("123"),
SK: dynamo.CertificateProviderKey("789"),
Expand All @@ -1706,7 +1706,7 @@ func TestHandleChangeConfirmedWhenLpaStoreClientError(t *testing.T) {
setupCertificateProviderStore: func(t *testing.T) *mockCertificateProviderStore {
s := newMockCertificateProviderStore(t)
s.EXPECT().
GetAny(ctx).
OneByUID(mock.Anything, mock.Anything).
Return(&certificateproviderdata.Provided{
PK: dynamo.LpaKey("123"),
SK: dynamo.CertificateProviderKey("789"),
Expand Down Expand Up @@ -1787,7 +1787,7 @@ func TestHandleChangeConfirmedWhenPutError(t *testing.T) {
setupCertificateProviderStore: func(t *testing.T) *mockCertificateProviderStore {
s := newMockCertificateProviderStore(t)
s.EXPECT().
GetAny(ctx).
OneByUID(mock.Anything, mock.Anything).
Return(&certificateproviderdata.Provided{
PK: dynamo.LpaKey("123"),
SK: dynamo.CertificateProviderKey("789"),
Expand Down Expand Up @@ -1877,7 +1877,7 @@ func TestHandleMaterialChangeConfirmed(t *testing.T) {
setupCertificateProviderStore: func(t *testing.T) *mockCertificateProviderStore {
s := newMockCertificateProviderStore(t)
s.EXPECT().
GetAny(ctx).
OneByUID(mock.Anything, mock.Anything).
Return(&certificateproviderdata.Provided{
PK: dynamo.LpaKey("123"),
SK: dynamo.CertificateProviderKey("789"),
Expand Down
15 changes: 15 additions & 0 deletions internal/certificateprovider/mock_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"errors"
"time"

"github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue"
"github.com/ministryofjustice/opg-modernising-lpa/internal/dynamo"
"github.com/stretchr/testify/mock"
)
Expand Down Expand Up @@ -37,3 +38,17 @@ func (m *mockDynamoClient) ExpectOneByPartialSK(ctx, pk, partialSk, data interfa
return err
})
}

func (c *mockDynamoClient_OneByPartialSK_Call) SetData(data any) {
c.Run(func(_ context.Context, _ dynamo.PK, _ dynamo.SK, v any) {
b, _ := attributevalue.Marshal(data)
attributevalue.Unmarshal(b, v)
})
}

func (c *mockDynamoClient_OneByUID_Call) SetData(data any) {
c.Run(func(_ context.Context, _ string, v any) {
b, _ := attributevalue.Marshal(data)
attributevalue.Unmarshal(b, v)
})
}
32 changes: 24 additions & 8 deletions internal/certificateprovider/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,13 +96,6 @@ func (s *Store) GetAny(ctx context.Context) (*certificateproviderdata.Provided,
return s.One(ctx, dynamo.LpaKey(data.LpaID))
}

func (s *Store) One(ctx context.Context, pk dynamo.LpaKeyType) (*certificateproviderdata.Provided, error) {
var certificateProvider certificateproviderdata.Provided
err := s.dynamoClient.OneByPartialSK(ctx, pk, dynamo.CertificateProviderKey(""), &certificateProvider)

return &certificateProvider, err
}

func (s *Store) Get(ctx context.Context) (*certificateproviderdata.Provided, error) {
data, err := appcontext.SessionFromContext(ctx)
if err != nil {
Expand All @@ -114,11 +107,34 @@ func (s *Store) Get(ctx context.Context) (*certificateproviderdata.Provided, err
}

var certificateProvider certificateproviderdata.Provided
err = s.dynamoClient.One(ctx, dynamo.LpaKey(data.LpaID), dynamo.CertificateProviderKey(data.SessionID), &certificateProvider)
if err := s.dynamoClient.One(ctx, dynamo.LpaKey(data.LpaID), dynamo.CertificateProviderKey(data.SessionID), &certificateProvider); err != nil {
return nil, err
}

return &certificateProvider, nil
}

func (s *Store) One(ctx context.Context, pk dynamo.LpaKeyType) (*certificateproviderdata.Provided, error) {
var certificateProvider certificateproviderdata.Provided
err := s.dynamoClient.OneByPartialSK(ctx, pk, dynamo.CertificateProviderKey(""), &certificateProvider)

return &certificateProvider, err
}

func (s *Store) OneByUID(ctx context.Context, uid string) (*certificateproviderdata.Provided, error) {
var key dynamo.Keys
if err := s.dynamoClient.OneByUID(ctx, uid, &key); err != nil {
return nil, fmt.Errorf("failed to resolve uid: %w", err)
}

lpaKey, ok := key.PK.(dynamo.LpaKeyType)
if !ok {
return nil, dynamo.NotFoundError{}
}

return s.One(ctx, lpaKey)
}

func (s *Store) Put(ctx context.Context, certificateProvider *certificateproviderdata.Provided) error {
certificateProvider.UpdatedAt = s.now()
return s.dynamoClient.Put(ctx, certificateProvider)
Expand Down
Loading

0 comments on commit 8c77cf8

Please sign in to comment.