Merge pull request 'Add reverse sessionid address lookup' (#146) from lash/reverse-session into master

Reviewed-on: urdt/ussd#146
This commit is contained in:
carlos 2024-10-30 10:35:55 +01:00
commit 843b0d1e7e
4 changed files with 40 additions and 4 deletions

18
common/hex.go Normal file
View File

@ -0,0 +1,18 @@
package common
import (
"encoding/hex"
)
func NormalizeHex(s string) (string, error) {
if len(s) >= 2 {
if s[:2] == "0x" {
s = s[2:]
}
}
r, err := hex.DecodeString(s)
if err != nil {
return "", err
}
return hex.EncodeToString(r), nil
}

View File

@ -21,6 +21,7 @@ import (
"git.defalsify.org/vise.git/state" "git.defalsify.org/vise.git/state"
"git.grassecon.net/urdt/ussd/internal/handlers/server" "git.grassecon.net/urdt/ussd/internal/handlers/server"
"git.grassecon.net/urdt/ussd/internal/utils" "git.grassecon.net/urdt/ussd/internal/utils"
"git.grassecon.net/urdt/ussd/common"
"gopkg.in/leonelquinteros/gotext.v1" "gopkg.in/leonelquinteros/gotext.v1"
"git.grassecon.net/urdt/ussd/internal/storage" "git.grassecon.net/urdt/ussd/internal/storage"
@ -154,13 +155,21 @@ func (h *Handlers) createAccountNoExist(ctx context.Context, sessionId string, r
utils.DATA_TRACKING_ID: trackingId, utils.DATA_TRACKING_ID: trackingId,
utils.DATA_PUBLIC_KEY: publicKey, utils.DATA_PUBLIC_KEY: publicKey,
} }
store := h.userdataStore
for key, value := range data { for key, value := range data {
store := h.userdataStore err = store.WriteEntry(ctx, sessionId, key, []byte(value))
err := store.WriteEntry(ctx, sessionId, key, []byte(value))
if err != nil { if err != nil {
return err return err
} }
} }
publicKeyNormalized, err := common.NormalizeHex(publicKey)
if err != nil {
return err
}
err = store.WriteEntry(ctx, publicKeyNormalized, utils.DATA_PUBLIC_KEY_REVERSE, []byte(sessionId))
if err != nil {
return err
}
res.FlagSet = append(res.FlagSet, flag_account_created) res.FlagSet = append(res.FlagSet, flag_account_created)
return nil return nil

View File

@ -20,6 +20,7 @@ import (
"git.grassecon.net/urdt/ussd/internal/testutil/testservice" "git.grassecon.net/urdt/ussd/internal/testutil/testservice"
"git.grassecon.net/urdt/ussd/internal/utils" "git.grassecon.net/urdt/ussd/internal/utils"
"git.grassecon.net/urdt/ussd/common"
"github.com/alecthomas/assert/v2" "github.com/alecthomas/assert/v2"
"github.com/grassrootseconomics/eth-custodial/pkg/api" "github.com/grassrootseconomics/eth-custodial/pkg/api"
testdataloader "github.com/peteole/testdata-loader" testdataloader "github.com/peteole/testdata-loader"
@ -96,7 +97,7 @@ func TestCreateAccount(t *testing.T) {
Description: "Account creation successed", Description: "Account creation successed",
Result: map[string]any{ Result: map[string]any{
"trackingId": "1234567890", "trackingId": "1234567890",
"publicKey": "1235QERYU", "publicKey": "0xD3adB33f",
}, },
}, },
expectedResult: resource.Result{ expectedResult: resource.Result{
@ -117,9 +118,10 @@ func TestCreateAccount(t *testing.T) {
flagManager: fm.parser, flagManager: fm.parser,
} }
publicKey := tt.serverResponse.Result["publicKey"].(string)
data := map[utils.DataTyp]string{ data := map[utils.DataTyp]string{
utils.DATA_TRACKING_ID: tt.serverResponse.Result["trackingId"].(string), utils.DATA_TRACKING_ID: tt.serverResponse.Result["trackingId"].(string),
utils.DATA_PUBLIC_KEY: tt.serverResponse.Result["publicKey"].(string), utils.DATA_PUBLIC_KEY: publicKey,
} }
mockDataStore.On("ReadEntry", ctx, sessionId, utils.DATA_ACCOUNT_CREATED).Return([]byte(""), notFoundErr) mockDataStore.On("ReadEntry", ctx, sessionId, utils.DATA_ACCOUNT_CREATED).Return([]byte(""), notFoundErr)
@ -128,6 +130,12 @@ func TestCreateAccount(t *testing.T) {
for key, value := range data { for key, value := range data {
mockDataStore.On("WriteEntry", ctx, sessionId, key, []byte(value)).Return(nil) mockDataStore.On("WriteEntry", ctx, sessionId, key, []byte(value)).Return(nil)
} }
publicKeyNormalized, err := common.NormalizeHex(publicKey)
if err != nil {
t.Fatal(err)
}
mockDataStore.On("WriteEntry", ctx, publicKeyNormalized, utils.DATA_PUBLIC_KEY_REVERSE, []byte(sessionId)).Return(nil)
// Call the method you want to test // Call the method you want to test
res, err := h.CreateAccount(ctx, "create_account", []byte("some-input")) res, err := h.CreateAccount(ctx, "create_account", []byte("some-input"))

View File

@ -28,6 +28,7 @@ const (
DATA_ACTIVE_SYM DATA_ACTIVE_SYM
DATA_TEMPORARY_BAL DATA_TEMPORARY_BAL
DATA_ACTIVE_BAL DATA_ACTIVE_BAL
DATA_PUBLIC_KEY_REVERSE
) )
func typToBytes(typ DataTyp) []byte { func typToBytes(typ DataTyp) []byte {