Skip to content

Commit

Permalink
feat: increase coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
joanestebanr committed Nov 20, 2024
1 parent f63ceb9 commit c5053d8
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 6 deletions.
7 changes: 4 additions & 3 deletions aggsender/aggsender.go
Original file line number Diff line number Diff line change
Expand Up @@ -589,7 +589,7 @@ func (a *AggSender) shouldSendCertificate() (bool, error) {
// checkLastCertificateFromAgglayer checks the last certificate from agglayer
func (a *AggSender) checkLastCertificateFromAgglayer(ctx context.Context) error {
networkID := a.l2Syncer.OriginNetwork()
a.log.Infof("recovery: checking last certificate from AggLayer for network %s", networkID)
a.log.Infof("recovery: checking last certificate from AggLayer for network %d", networkID)
aggLayerLastCert, err := a.aggLayerClient.GetLatestKnownCertificateHeader(networkID)
if err != nil {
return fmt.Errorf("recovery: error getting latest known certificate header from agglayer: %w", err)
Expand Down Expand Up @@ -621,14 +621,15 @@ func (a *AggSender) checkLastCertificateFromAgglayer(ctx context.Context) error
localLastCert.String(), aggLayerLastCert.String())
return fmt.Errorf("recovery: mismatch between local and agglayer certificates")
}

// CASE 4: AggSender and AggLayer are at same page
// just update status
err = a.updateCertificateStatus(ctx, localLastCert, aggLayerLastCert)
if err != nil {
log.Errorf("recovery: error updating status certificate: %s status: %w", aggLayerLastCert.String(), err)
return fmt.Errorf("recovery: error updating certificate status: %w", err)
}

a.log.Infof("recovery: successfully checked last certificate from AggLayer for network %s", networkID)
a.log.Infof("recovery: successfully checked last certificate from AggLayer for network %d", networkID)
return nil
}

Expand Down
55 changes: 52 additions & 3 deletions aggsender/aggsender_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ const (
networkIDTest = uint32(1234)
)

var (
testError = errors.New("unitest error")

Check failure on line 35 in aggsender/aggsender_test.go

View workflow job for this annotation

GitHub Actions / lint

the variable name `testError` should conform to the `errXxx` format (errname)
)

func TestExploratoryGetCertificateHeader(t *testing.T) {
t.Skip("This test is exploratory and should be skipped")
aggLayerClient := agglayer.NewAggLayerClient("http://localhost:32796")
Expand Down Expand Up @@ -1722,20 +1726,65 @@ func TestCheckLastCertificateFromAgglayer_Case2NoCertLocalCertRemoteErrorStorage
testData.agglayerClientMock.EXPECT().GetLatestKnownCertificateHeader(networkIDTest).
Return(certInfoToCertHeader(&testData.testCerts[0], networkIDTest), nil).Once()
testData.storageMock.EXPECT().GetLastSentCertificate().Return(nil, nil)
testData.storageMock.EXPECT().SaveLastSentCertificate(mock.Anything, mock.Anything).Return(fmt.Errorf("unittest error"))
testData.storageMock.EXPECT().SaveLastSentCertificate(mock.Anything, mock.Anything).Return(testError).Once()
err := testData.sut.checkLastCertificateFromAgglayer(testData.ctx)

require.Error(t, err)
}

// // CASE 3: AggSender and AggLayer not same certificateID
// CASE 3: AggSender and AggLayer not same certificateID
func TestCheckLastCertificateFromAgglayer_Case3Mismatch(t *testing.T) {
testData := newAggsenderTestData(t, testDataFlagMockStorage)
testData.l2syncerMock.EXPECT().OriginNetwork().Return(networkIDTest).Once()
testData.agglayerClientMock.EXPECT().GetLatestKnownCertificateHeader(networkIDTest).
Return(certInfoToCertHeader(&testData.testCerts[0], networkIDTest), nil).Once()

testData.storageMock.EXPECT().GetLastSentCertificate().Return(&testData.testCerts[1], nil)

err := testData.sut.checkLastCertificateFromAgglayer(testData.ctx)

require.Error(t, err)
}

// CASE 4: AggSender and AggLayer same certificateID and same status
func TestCheckLastCertificateFromAgglayer_Case4SameStatus(t *testing.T) {
testData := newAggsenderTestData(t, testDataFlagMockStorage)
testData.l2syncerMock.EXPECT().OriginNetwork().Return(networkIDTest).Once()
testData.agglayerClientMock.EXPECT().GetLatestKnownCertificateHeader(networkIDTest).
Return(certInfoToCertHeader(&testData.testCerts[0], networkIDTest), nil).Once()
testData.storageMock.EXPECT().GetLastSentCertificate().Return(&testData.testCerts[0], nil)

err := testData.sut.checkLastCertificateFromAgglayer(testData.ctx)

require.NoError(t, err)
}

// CASE 4: AggSender and AggLayer same certificateID and differ on status
func TestCheckLastCertificateFromAgglayer_Case4UpdateStatus(t *testing.T) {
testData := newAggsenderTestData(t, testDataFlagMockStorage)
testData.l2syncerMock.EXPECT().OriginNetwork().Return(networkIDTest).Once()
aggLayerCert := certInfoToCertHeader(&testData.testCerts[0], networkIDTest)
aggLayerCert.Status = agglayer.Settled
testData.agglayerClientMock.EXPECT().GetLatestKnownCertificateHeader(networkIDTest).
Return(aggLayerCert, nil).Once()
testData.storageMock.EXPECT().GetLastSentCertificate().Return(&testData.testCerts[0], nil)
testData.storageMock.EXPECT().UpdateCertificate(mock.Anything, mock.Anything).Return(nil).Once()

err := testData.sut.checkLastCertificateFromAgglayer(testData.ctx)

require.NoError(t, err)
}

// CASE 4: AggSender and AggLayer same certificateID and differ on status but fails update
func TestCheckLastCertificateFromAgglayer_Case4ErrorUpdateStatus(t *testing.T) {
testData := newAggsenderTestData(t, testDataFlagMockStorage)
testData.l2syncerMock.EXPECT().OriginNetwork().Return(networkIDTest).Once()
aggLayerCert := certInfoToCertHeader(&testData.testCerts[0], networkIDTest)
aggLayerCert.Status = agglayer.Settled
testData.agglayerClientMock.EXPECT().GetLatestKnownCertificateHeader(networkIDTest).
Return(aggLayerCert, nil).Once()
testData.storageMock.EXPECT().GetLastSentCertificate().Return(&testData.testCerts[0], nil)
testData.storageMock.EXPECT().UpdateCertificate(mock.Anything, mock.Anything).Return(testError).Once()

err := testData.sut.checkLastCertificateFromAgglayer(testData.ctx)

require.Error(t, err)
Expand Down

0 comments on commit c5053d8

Please sign in to comment.