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  }