Skip to content

Commit 678b6e7

Browse files
committed
Test works!
1 parent 6c29c4f commit 678b6e7

1 file changed

Lines changed: 27 additions & 15 deletions

File tree

core/capabilities/integration_tests/keystone/securemint_workflow_test.go

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"fmt"
66
"math/big"
77
"testing"
8-
"time"
98

109
"github.com/stretchr/testify/assert"
1110
"github.com/stretchr/testify/require"
@@ -73,8 +72,8 @@ func Test_runSecureMintWorkflow(t *testing.T) {
7372
require.NoError(t, err)
7473

7574
// create the test trigger event in the format expected by the secure mint transmitter
76-
mintableAmount := int64(99)
77-
blockNumber := int64(10)
75+
mintableAmount := big.NewInt(99)
76+
blockNumber := uint64(10)
7877
triggerEvent := createSecureMintTriggerEvent(t, chainID, seqNr, mintableAmount, blockNumber)
7978

8079
t.Logf("Sending triggerEvent: %+v", triggerEvent)
@@ -93,14 +92,14 @@ func Test_runSecureMintWorkflow(t *testing.T) {
9392
blockNumber: blockNumber,
9493
},
9594
}
96-
h := newSecureMintHandler(expectedUpdates, uint32(time.Now().Unix()))
95+
h := newSecureMintHandler(expectedUpdates, uint32(blockNumber)) // TODO(gg): the sm aggregator uses the block number as timestamp, not sure if we want that
9796
waitForConsumerReports(t, consumer, h)
9897
}
9998

10099
type secureMintUpdate struct {
101100
feedID string
102-
mintableAmount int64
103-
blockNumber int64
101+
mintableAmount *big.Int
102+
blockNumber uint64
104103
}
105104

106105
// chainSelector is mimicked after the por plugin, which mimics it from the chain-selectors repo
@@ -137,7 +136,7 @@ type secureMintReport struct {
137136
// } // this is sent to trigger subscribers
138137
//
139138
// ```
140-
func createSecureMintTriggerEvent(t *testing.T, chainID chainSelector, seqNr uint64, mintable int64, blockNumber int64) *values.Map {
139+
func createSecureMintTriggerEvent(t *testing.T, chainID chainSelector, seqNr uint64, mintable *big.Int, blockNumber uint64) *values.Map {
141140
// Create mock signatures (in a real scenario, these would be actual OCR signatures)
142141
sigs := []commoncap.OCRAttributedOnchainSignature{
143142
{
@@ -154,8 +153,8 @@ func createSecureMintTriggerEvent(t *testing.T, chainID chainSelector, seqNr uin
154153
secureMintReport := &secureMintReport{
155154
ConfigDigest: ocr2types.ConfigDigest(configDigest),
156155
SeqNr: seqNr,
157-
Block: uint64(blockNumber),
158-
Mintable: big.NewInt(mintable),
156+
Block: blockNumber,
157+
Mintable: mintable,
159158
}
160159

161160
reportBytes, err := json.Marshal(secureMintReport)
@@ -221,17 +220,30 @@ func (h *secureMintHandler) handleFeedReceived(t *testing.T, event *feeds_consum
221220

222221
require.NotNil(t, expectedUpdate, "feedID %s not found in expected updates", feedIDStr)
223222

223+
mintableMask := new(big.Int).Sub(new(big.Int).Lsh(big.NewInt(1), 128), big.NewInt(1))
224+
extractedMintable := new(big.Int).And(event.Price, mintableMask)
225+
t.Logf("extractedMintable: %d", extractedMintable)
226+
assert.Equalf(t, expectedUpdate.mintableAmount, extractedMintable, "mintable amount mismatch: expected %d, got %d", expectedUpdate.mintableAmount, extractedMintable)
227+
228+
// Extract block number from bits 128-191
229+
blockNumberMask := new(big.Int).Lsh(new(big.Int).Sub(new(big.Int).Lsh(big.NewInt(1), 64), big.NewInt(1)), 128)
230+
extractedBlockNumber := new(big.Int).And(event.Price, blockNumberMask)
231+
extractedBlockNumber = new(big.Int).Rsh(extractedBlockNumber, 128)
232+
t.Logf("extractedBlockNumber: %d", extractedBlockNumber)
233+
234+
assert.Equalf(t, expectedUpdate.blockNumber, extractedBlockNumber.Uint64(), "block number mismatch: expected %d, got %d", expectedUpdate.blockNumber, extractedBlockNumber.Uint64())
235+
224236
// Verify the decimal value
225237
// the block number and mintables are packed into a single uint224 for evm as follows:
226238
// (top 32 - not used / middle 64 - block number / lower 128 - mintable amount)
227239
// unpack first and then assert
228-
price := big.NewInt(0).SetBytes(event.Price.Bytes())
229-
price.Rsh(price, 192)
230-
assert.Equalf(t, expectedUpdate.mintableAmount, price.Int64(), "mintable amount mismatch: expected %d, got %d", expectedUpdate.mintableAmount, price.Int64())
240+
// price := big.NewInt(0).SetBytes(event.Price.Bytes())
241+
// price.Rsh(price, 192)
242+
// assert.Equalf(t, expectedUpdate.mintableAmount, price.Int64(), "mintable amount mismatch: expected %d, got %d", expectedUpdate.mintableAmount, price.Int64())
231243

232-
blockNumber := big.NewInt(0).SetBytes(event.Price.Bytes())
233-
blockNumber.Rsh(blockNumber, 128)
234-
assert.Equalf(t, expectedUpdate.blockNumber, blockNumber.Int64(), "block number mismatch: expected %d, got %d", expectedUpdate.blockNumber, blockNumber.Int64())
244+
// blockNumber := big.NewInt(0).SetBytes(event.Price.Bytes())
245+
// blockNumber.Rsh(blockNumber, 128)
246+
// assert.Equalf(t, expectedUpdate.blockNumber, blockNumber.Int64(), "block number mismatch: expected %d, got %d", expectedUpdate.blockNumber, blockNumber.Int64())
235247

236248
assert.Equalf(t, h.ts, event.Timestamp, "timestamp mismatch: expected %d, got %d", h.ts, event.Timestamp)
237249

0 commit comments

Comments
 (0)