github.com/status-im/status-go@v1.1.0/services/connector/commands/request_permissions_test.go (about) 1 package commands 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 func TestFailToRequestPermissionsWithMissingDAppFields(t *testing.T) { 10 cmd := &RequestPermissionsCommand{} 11 12 // Missing DApp fields 13 request, err := ConstructRPCRequest("wallet_requestPermissions", []interface{}{}, nil) 14 assert.NoError(t, err) 15 16 result, err := cmd.Execute(request) 17 assert.Equal(t, ErrRequestMissingDAppData, err) 18 assert.Empty(t, result) 19 } 20 21 func TestRequestPermissionsResponse(t *testing.T) { 22 cmd := &RequestPermissionsCommand{} 23 24 testCases := []struct { 25 name string 26 params []interface{} 27 expectedError error 28 expectedCapability string 29 }{ 30 { 31 name: "Single valid key", 32 params: []interface{}{ 33 map[string]interface{}{ 34 "eth_requestAccounts": struct{}{}, 35 }, 36 }, 37 expectedError: nil, 38 expectedCapability: "eth_requestAccounts", 39 }, 40 { 41 name: "Single valid key", 42 params: []interface{}{ 43 map[string]interface{}{ 44 "eth_accounts": struct{}{}, 45 }, 46 }, 47 expectedError: nil, 48 expectedCapability: "eth_accounts", 49 }, 50 { 51 name: "Multiple keys", 52 params: []interface{}{ 53 map[string]interface{}{ 54 "eth_requestAccounts": struct{}{}, 55 "eth_sendTransaction": struct{}{}, 56 }, 57 }, 58 expectedError: ErrMultipleKeysFound, 59 expectedCapability: "", 60 }, 61 { 62 name: "No keys", 63 params: []interface{}{ 64 map[string]interface{}{}, 65 }, 66 expectedError: ErrNoRequestPermissionsParamsFound, 67 expectedCapability: "", 68 }, 69 { 70 name: "Nil params", 71 params: nil, 72 expectedError: ErrEmptyRPCParams, 73 expectedCapability: "", 74 }, 75 { 76 name: "Invalid param type", 77 params: []interface{}{ 78 "invalid_param_type", 79 }, 80 expectedError: ErrInvalidParamType, 81 expectedCapability: "", 82 }, 83 } 84 85 for _, tc := range testCases { 86 t.Run(tc.name, func(t *testing.T) { 87 request, err := ConstructRPCRequest("wallet_requestPermissions", tc.params, &testDAppData) 88 assert.NoError(t, err) 89 90 response, err := cmd.Execute(request) 91 if tc.expectedError != nil { 92 assert.Error(t, err) 93 assert.Equal(t, err, tc.expectedError) 94 } else { 95 assert.NoError(t, err) 96 97 if permission, ok := response.(Permission); ok { 98 assert.Equal(t, permission.ParentCapability, tc.expectedCapability) 99 } else { 100 assert.Fail(t, "Can't parse permission from the response") 101 } 102 } 103 }) 104 } 105 }