github.com/status-im/status-go@v1.1.0/services/wallet/walletconnect/helpers_test.go (about) 1 package walletconnect 2 3 import ( 4 "strings" 5 "testing" 6 ) 7 8 func Test_parseCaip2(t *testing.T) { 9 type args struct { 10 str string 11 } 12 tests := []struct { 13 name string 14 args args 15 wantChain uint64 16 wantErr bool 17 }{ 18 { 19 name: "valid", 20 args: args{ 21 str: "eip155:5", 22 }, 23 wantChain: 5, 24 wantErr: false, 25 }, 26 { 27 name: "invalid_number", 28 args: args{ 29 str: "eip155:5a", 30 }, 31 wantChain: 0, 32 wantErr: true, 33 }, 34 { 35 name: "invalid_caip2_too_many", 36 args: args{ 37 str: "eip155:1:5", 38 }, 39 wantChain: 0, 40 wantErr: true, 41 }, 42 { 43 name: "invalid_caip2_not_enough", 44 args: args{ 45 str: "eip1551", 46 }, 47 wantChain: 0, 48 wantErr: true, 49 }, 50 } 51 52 for _, tt := range tests { 53 t.Run(tt.name, func(t *testing.T) { 54 gotNamespaceName, gotChainID, err := parseCaip2ChainID(tt.args.str) 55 if (err != nil) != tt.wantErr { 56 t.Errorf("parseCaip2ChainID() error = %v, wantErr %v", err, tt.wantErr) 57 return 58 } 59 if !tt.wantErr && !strings.Contains(tt.args.str, gotNamespaceName) { 60 t.Errorf("parseCaip2ChainID() = %v, doesn't match %v", gotNamespaceName, tt.args.str) 61 } 62 if gotChainID != tt.wantChain { 63 t.Errorf("parseCaip2ChainID() = %v, want %v", gotChainID, tt.wantChain) 64 } 65 }) 66 } 67 }