github.com/status-im/status-go@v1.1.0/services/permissions/api_test.go (about) 1 package permissions 2 3 import ( 4 "context" 5 "encoding/json" 6 "fmt" 7 "sort" 8 "testing" 9 10 "github.com/stretchr/testify/require" 11 12 "github.com/status-im/status-go/appdatabase" 13 "github.com/status-im/status-go/t/helpers" 14 ) 15 16 func setupTestDB(t *testing.T) (*Database, func()) { 17 db, cleanup, err := helpers.SetupTestSQLDB(appdatabase.DbInitializer{}, "perm-tests-") 18 require.NoError(t, err) 19 return NewDB(db), func() { require.NoError(t, cleanup()) } 20 } 21 22 func setupTestAPI(t *testing.T) (*API, func()) { 23 db, cancel := setupTestDB(t) 24 return &API{db: db}, cancel 25 } 26 27 func TestDappPermissionsStored(t *testing.T) { 28 api, cancel := setupTestAPI(t) 29 defer cancel() 30 31 expected := []DappPermissions{ 32 { 33 Name: "first", 34 Permissions: []string{"r", "w"}, 35 }, 36 { 37 Name: "second", 38 Permissions: []string{"r", "x"}, 39 }, 40 { 41 Name: "third", 42 }, 43 } 44 for _, perms := range expected { 45 require.NoError(t, api.AddDappPermissions(context.TODO(), perms)) 46 } 47 rst, err := api.GetDappPermissions(context.TODO()) 48 require.NoError(t, err) 49 // sort in lexicographic order by name 50 sort.Slice(rst, func(i, j int) bool { 51 return rst[i].Name < rst[j].Name 52 }) 53 require.Equal(t, expected[0].Name, rst[0].Name) 54 require.Equal(t, expected[0].Permissions, rst[0].Permissions) 55 56 data, err := json.Marshal(rst) 57 require.NoError(t, err) 58 fmt.Println(string(data)) 59 } 60 61 func TestDappPermissionsReplacedOnUpdated(t *testing.T) { 62 api, cancel := setupTestAPI(t) 63 defer cancel() 64 65 perms := DappPermissions{ 66 Name: "first", 67 Permissions: []string{"r", "w"}, 68 } 69 require.NoError(t, api.AddDappPermissions(context.TODO(), perms)) 70 perms.Permissions = append(perms.Permissions, "x") 71 require.NoError(t, api.AddDappPermissions(context.TODO(), perms)) 72 rst, err := api.GetDappPermissions(context.TODO()) 73 require.NoError(t, err) 74 require.Len(t, rst, 1) 75 require.Equal(t, perms.Name, rst[0].Name) 76 require.Equal(t, perms.Permissions, rst[0].Permissions) 77 78 } 79 80 func TestDappPermissionsDeleted(t *testing.T) { 81 api, cancel := setupTestAPI(t) 82 defer cancel() 83 84 perms := DappPermissions{ 85 Name: "first", 86 } 87 require.NoError(t, api.AddDappPermissions(context.TODO(), perms)) 88 rst, err := api.GetDappPermissions(context.TODO()) 89 require.NoError(t, err) 90 require.Len(t, rst, 1) 91 require.NoError(t, api.DeleteDappPermissions(context.TODO(), perms.Name)) 92 rst, err = api.GetDappPermissions(context.TODO()) 93 require.NoError(t, err) 94 require.Len(t, rst, 0) 95 }