Skip to content

Commit e453e3e

Browse files
- update comments
- add e2e test for wallet creation result replay
1 parent 9ca18f5 commit e453e3e

2 files changed

Lines changed: 21 additions & 10 deletions

File tree

e2e/keygen_test.go

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,23 @@ func testKeyGeneration(t *testing.T, suite *E2ETestSuite) {
7979
if suite.mpcClient == nil {
8080
t.Fatal("MPC client is not initialized. Make sure Setup subtest runs first.")
8181
}
82+
83+
walletID := uuid.New().String()
84+
85+
// Create a new wallet
86+
createWalletAndVerify(t, suite, walletID)
87+
88+
// Create another new wallet with the same wallet ID
89+
createWalletAndVerify(t, suite, walletID)
90+
91+
t.Log("Key generation test completed")
92+
}
93+
94+
func createWalletAndVerify(t *testing.T, suite *E2ETestSuite, walletID string) {
8295
// Generate 1 wallet ID for testing
8396
walletIDs := make([]string, 0, 10)
8497
for i := 0; i < 1; i++ {
85-
walletIDs = append(walletIDs, uuid.New().String())
98+
walletIDs = append(walletIDs, walletID)
8699
suite.walletIDs = append(suite.walletIDs, walletIDs[i])
87100
}
88101

@@ -92,7 +105,11 @@ func testKeyGeneration(t *testing.T, suite *E2ETestSuite) {
92105
err := suite.mpcClient.OnWalletCreationResult(func(result event.KeygenResultEvent) {
93106
logger.Info("On wallet creation result", "event", result)
94107
t.Logf("Received keygen result for wallet %s: %s", result.WalletID, result.ResultType)
95-
suite.keygenResults[result.WalletID] = &result
108+
109+
// For testing replay properly, don't overwrite existing result for the same wallet ID to preserve the first result
110+
if _, exists := suite.keygenResults[result.WalletID]; !exists {
111+
suite.keygenResults[result.WalletID] = &result
112+
}
96113

97114
if result.ResultType == event.ResultTypeError {
98115
t.Logf("Keygen failed for wallet %s: %s (%s)", result.WalletID, result.ErrorReason, result.ErrorCode)
@@ -165,8 +182,6 @@ checkResults:
165182
assert.NotEmpty(t, result.EDDSAPubKey, "EdDSA public key should not be empty for wallet %s", walletID)
166183
}
167184
}
168-
169-
t.Log("Key generation test completed")
170185
}
171186

172187
func verifyKeyConsistency(t *testing.T, suite *E2ETestSuite) {

pkg/eventconsumer/event_consumer.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ func (ec *eventConsumer) handleKeyGenEvent(natMsg *nats.Msg) {
159159

160160
walletID := msg.WalletID
161161

162+
// Attempt to get previously stored wallet creation result (if any) by the wallet ID
162163
storedWalletCreationResult, storedWalletCreationResultError := ec.node.GetWalletCreationResult(walletID)
163164

164165
// Error when retrieving wallet creation result for the wallet ID
@@ -168,12 +169,8 @@ func (ec *eventConsumer) handleKeyGenEvent(natMsg *nats.Msg) {
168169
}
169170

170171
// Replay the wallet creation result if it already exists for the wallet ID
171-
// TODO
172-
// 1. to inspect storedWalletCreationResult
173-
// 2. to move the following duplicate logic (line 341~351) into a func
172+
// TODO: to move the following duplicate logic (line 308 and line 341) into a func
174173
if storedWalletCreationResult != nil {
175-
logger.Info("storedWalletCreationResult", storedWalletCreationResult)
176-
177174
key := event.KeygenResultSubject(natMsg.Header.Get(event.ClientIDHeader), walletID)
178175
if err := ec.genKeyResultQueue.Enqueue(key, storedWalletCreationResult, &messaging.EnqueueOptions{
179176
IdempotententKey: composeKeygenIdempotentKey(walletID, natMsg),
@@ -302,7 +299,6 @@ func (ec *eventConsumer) handleKeyGenEvent(natMsg *nats.Msg) {
302299
}
303300

304301
// Store wallet creation result
305-
logger.Info("payload", payload)
306302
if storeErr := ec.node.StoreWalletCreationResult(walletID, payload); storeErr != nil {
307303
logger.Error("Failed to store wallet creation result", storeErr, "walletID", walletID)
308304
ec.handleKeygenSessionError(walletID, storeErr, "Failed to store wallet creation result", natMsg)

0 commit comments

Comments
 (0)