github.com/status-im/status-go@v1.1.0/services/connector/commands/revoke_permissions_test.go (about)

     1  package commands
     2  
     3  import (
     4  	"encoding/json"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  
     9  	"github.com/status-im/status-go/eth-node/types"
    10  	persistence "github.com/status-im/status-go/services/connector/database"
    11  	"github.com/status-im/status-go/signal"
    12  )
    13  
    14  func TestFailToRevokePermissionsWithMissingDAppFields(t *testing.T) {
    15  	cmd := &RequestPermissionsCommand{}
    16  
    17  	// Missing DApp fields
    18  	request, err := ConstructRPCRequest("wallet_revokePermissions", []interface{}{}, nil)
    19  	assert.NoError(t, err)
    20  
    21  	result, err := cmd.Execute(request)
    22  	assert.Equal(t, ErrRequestMissingDAppData, err)
    23  	assert.Empty(t, result)
    24  }
    25  
    26  func TestFailToRevokePermissionsForUnpermittedDApp(t *testing.T) {
    27  	db, close := SetupTestDB(t)
    28  	defer close()
    29  
    30  	cmd := &RevokePermissionsCommand{Db: db}
    31  
    32  	request, err := ConstructRPCRequest("wallet_revokePermissions", []interface{}{}, &testDAppData)
    33  	assert.NoError(t, err)
    34  
    35  	result, err := cmd.Execute(request)
    36  	assert.Equal(t, ErrDAppIsNotPermittedByUser, err)
    37  	assert.Empty(t, result)
    38  }
    39  
    40  func TestRevokePermissionsSucceeded(t *testing.T) {
    41  	db, close := SetupTestDB(t)
    42  	defer close()
    43  
    44  	cmd := &RevokePermissionsCommand{Db: db}
    45  
    46  	sharedAccount := types.BytesToAddress(types.FromHex("0x6d0aa2a774b74bb1d36f97700315adf962c69fcg"))
    47  	dAppPermissionRevoked := false
    48  
    49  	signal.SetMobileSignalHandler(signal.MobileSignalHandler(func(s []byte) {
    50  		var evt EventType
    51  		err := json.Unmarshal(s, &evt)
    52  		assert.NoError(t, err)
    53  
    54  		switch evt.Type {
    55  		case signal.EventConnectorDAppPermissionRevoked:
    56  			dAppPermissionRevoked = true
    57  		}
    58  	}))
    59  	t.Cleanup(signal.ResetMobileSignalHandler)
    60  
    61  	err := PersistDAppData(db, testDAppData, sharedAccount, 0x123)
    62  	assert.NoError(t, err)
    63  
    64  	request, err := ConstructRPCRequest("wallet_revokePermissions", []interface{}{}, &testDAppData)
    65  	assert.NoError(t, err)
    66  
    67  	result, err := cmd.Execute(request)
    68  	assert.NoError(t, err)
    69  	assert.Empty(t, result)
    70  
    71  	dApp, err := persistence.SelectDAppByUrl(db, testDAppData.URL)
    72  	assert.NoError(t, err)
    73  	assert.Nil(t, dApp)
    74  
    75  	assert.True(t, dAppPermissionRevoked)
    76  }