Skip to content

Commit 5cf36eb

Browse files
committed
RequestToGrabBillMessageHandler now enforces destination as a primary account
1 parent 4fd38ec commit 5cf36eb

File tree

3 files changed

+13
-38
lines changed

3 files changed

+13
-38
lines changed

pkg/code/server/messaging/message_handler.go

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func (h *RequestToGrabBillMessageHandler) Validate(ctx context.Context, rendezvo
6060
}
6161

6262
//
63-
// Part 1: Requestor account must be a latest temporary incoming account
63+
// Part 1: Requestor account must be a primary account
6464
//
6565

6666
requestorAccount, err := common.NewAccountFromProto(typedMessage.RequestorAccount)
@@ -69,19 +69,12 @@ func (h *RequestToGrabBillMessageHandler) Validate(ctx context.Context, rendezvo
6969
}
7070

7171
accountInfoRecord, err := h.data.GetAccountInfoByTokenAddress(ctx, requestorAccount.PublicKey().ToBase58())
72-
if err == account.ErrAccountInfoNotFound || (err == nil && accountInfoRecord.AccountType != commonpb.AccountType_TEMPORARY_INCOMING) {
73-
return newMessageValidationError("requestor account must be a temporary incoming account")
72+
if err == account.ErrAccountInfoNotFound || (err == nil && accountInfoRecord.AccountType != commonpb.AccountType_PRIMARY) {
73+
return newMessageValidationError("requestor account must be a primary account")
7474
} else if err != nil {
7575
return err
7676
}
7777

78-
latestAccountInfoRecord, err := h.data.GetLatestAccountInfoByOwnerAddressAndType(ctx, accountInfoRecord.OwnerAccount, commonpb.AccountType_TEMPORARY_INCOMING)
79-
if err != nil {
80-
return err
81-
} else if accountInfoRecord.TokenAccount != latestAccountInfoRecord.TokenAccount {
82-
return newMessageValidationErrorf("requestor account must be latest temporary incoming account %s", accountInfoRecord.TokenAccount)
83-
}
84-
8578
return nil
8679
}
8780

pkg/code/server/messaging/server_test.go

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -207,21 +207,14 @@ func TestSendMessage_RequestToGrabBill_Validation(t *testing.T) {
207207
env.client1.resetConf()
208208
env.client1.conf.simulateAccountNotCodeAccount = true
209209
sendMessageCall := env.client1.sendRequestToGrabBillMessage(t, rendezvousKey)
210-
sendMessageCall.assertInvalidMessageError(t, "requestor account must be a temporary incoming account")
210+
sendMessageCall.assertInvalidMessageError(t, "requestor account must be a primary account")
211211
env.server1.assertNoMessages(t, rendezvousKey)
212212

213213
env.client1.resetConf()
214214
env.client1.conf.simulateInvalidAccountType = true
215215
sendMessageCall = env.client1.sendRequestToGrabBillMessage(t, rendezvousKey)
216-
sendMessageCall.assertInvalidMessageError(t, "requestor account must be a temporary incoming account")
216+
sendMessageCall.assertInvalidMessageError(t, "requestor account must be a primary account")
217217
env.server1.assertNoMessages(t, rendezvousKey)
218-
219-
env.client1.resetConf()
220-
env.client1.conf.simulateStaleRequestorAccountType = true
221-
sendMessageCall = env.client1.sendRequestToGrabBillMessage(t, rendezvousKey)
222-
sendMessageCall.assertInvalidMessageError(t, "requestor account must be latest temporary incoming account")
223-
env.server1.assertNoMessages(t, rendezvousKey)
224-
225218
}
226219

227220
/*

pkg/code/server/messaging/testutil.go

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -233,9 +233,8 @@ type cancellableStream struct {
233233
type clientConf struct {
234234
// Simulations for invalid account
235235

236-
simulateStaleRequestorAccountType bool
237-
simulateInvalidAccountType bool
238-
simulateAccountNotCodeAccount bool
236+
simulateInvalidAccountType bool
237+
simulateAccountNotCodeAccount bool
239238

240239
// Simulations for invalid exchange data
241240

@@ -512,33 +511,23 @@ func (c *sendMessageCallMetadata) assertNoActiveStreamError(t *testing.T) {
512511
func (c *clientEnv) sendRequestToGrabBillMessage(t *testing.T, rendezvousKey *common.Account) *sendMessageCallMetadata {
513512
destination := testutil.NewRandomAccount(t)
514513

514+
ownerAccount := testutil.NewRandomAccount(t)
515515
accountInfoRecord := &account.Record{
516-
OwnerAccount: testutil.NewRandomAccount(t).PublicKey().ToBase58(),
517-
AuthorityAccount: testutil.NewRandomAccount(t).PublicKey().ToBase58(),
516+
OwnerAccount: ownerAccount.PublicKey().ToBase58(),
517+
AuthorityAccount: ownerAccount.PublicKey().ToBase58(),
518518
TokenAccount: destination.PublicKey().ToBase58(),
519519
MintAccount: common.CoreMintAccount.PublicKey().ToBase58(),
520-
AccountType: commonpb.AccountType_TEMPORARY_INCOMING,
520+
AccountType: commonpb.AccountType_PRIMARY,
521521
Index: 0,
522522
}
523523
if c.conf.simulateInvalidAccountType {
524-
accountInfoRecord.AccountType = commonpb.AccountType_TEMPORARY_OUTGOING
524+
accountInfoRecord.AuthorityAccount = testutil.NewRandomAccount(t).PublicKey().ToBase58()
525+
accountInfoRecord.AccountType = commonpb.AccountType_TEMPORARY_INCOMING
525526
}
526527
if !c.conf.simulateAccountNotCodeAccount {
527528
require.NoError(t, c.directDataAccess.CreateAccountInfo(c.ctx, accountInfoRecord))
528529
}
529530

530-
if c.conf.simulateStaleRequestorAccountType {
531-
latestAccountInfoRecord := &account.Record{
532-
OwnerAccount: accountInfoRecord.OwnerAccount,
533-
AuthorityAccount: testutil.NewRandomAccount(t).PublicKey().ToBase58(),
534-
TokenAccount: testutil.NewRandomAccount(t).PublicKey().ToBase58(),
535-
MintAccount: common.CoreMintAccount.PublicKey().ToBase58(),
536-
AccountType: commonpb.AccountType_TEMPORARY_INCOMING,
537-
Index: accountInfoRecord.Index + 1,
538-
}
539-
require.NoError(t, c.directDataAccess.CreateAccountInfo(c.ctx, latestAccountInfoRecord))
540-
}
541-
542531
req := &messagingpb.SendMessageRequest{
543532
Message: &messagingpb.Message{
544533
Kind: &messagingpb.Message_RequestToGrabBill{

0 commit comments

Comments
 (0)