github.com/kotovmak/go-admin@v1.1.1/modules/auth/middleware_test.go (about) 1 package auth 2 3 import ( 4 "net/url" 5 "testing" 6 7 "github.com/kotovmak/go-admin/modules/config" 8 "github.com/kotovmak/go-admin/plugins/admin/models" 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestCheckPermissions(t *testing.T) { 13 14 config.Initialize(&config.Config{ 15 UrlPrefix: "admin", 16 }) 17 18 user := models.UserModel{ 19 Permissions: []models.PermissionModel{ 20 { 21 Name: "/", 22 Slug: "/", 23 HttpMethod: []string{"GET"}, 24 HttpPath: []string{"/"}, 25 }, { 26 Name: "/info/user", 27 Slug: "/", 28 HttpMethod: []string{"GET"}, 29 HttpPath: []string{"/info/user"}, 30 }, { 31 Name: "/info/user/edit", 32 Slug: "/", 33 HttpMethod: []string{"GET"}, 34 HttpPath: []string{"/info/user/edit"}, 35 }, { 36 Name: "/info/normal_manager?id=2", 37 Slug: "/", 38 HttpMethod: []string{"GET"}, 39 HttpPath: []string{"/info/normal_manager?id=2"}, 40 }, { 41 Name: "/info/normal_manager/edit?id=2", 42 Slug: "/", 43 HttpMethod: []string{"GET"}, 44 HttpPath: []string{"/info/normal_manager/edit?id=2"}, 45 }, { 46 Name: "/info/user_list?user_type=10", 47 Slug: "/", 48 HttpMethod: []string{"GET"}, 49 HttpPath: []string{"/info/user_list?user_type=10"}, 50 }, { 51 Name: "/info/user_list?user_type=20", 52 Slug: "/", 53 HttpMethod: []string{"GET"}, 54 HttpPath: []string{"/info/user_list?user_type=20"}, 55 }, { 56 Name: "/delete/user", 57 Slug: "/", 58 HttpMethod: []string{"POST"}, 59 HttpPath: []string{"/delete/user"}, 60 }, 61 }, 62 } 63 64 param := make(url.Values) 65 66 assert.Equal(t, CheckPermissions(user, "/admin/", "GET", param), true) 67 assert.Equal(t, CheckPermissions(user, "/admin", "GET", param), true) 68 assert.Equal(t, CheckPermissions(user, "/", "GET", param), false) 69 assert.Equal(t, CheckPermissions(user, "/admin", "POST", param), false) 70 assert.Equal(t, CheckPermissions(user, "/admin/info/users", "GET", param), false) 71 assert.Equal(t, CheckPermissions(user, "/admin/info/user", "GET", param), true) 72 assert.Equal(t, CheckPermissions(user, "/admin/info/user", "get", param), true) 73 assert.Equal(t, CheckPermissions(user, "/admin/info/normal_manager/edit?__goadmin_edit_pk=2&__columns=id,roles,created_at,updated_at", "get", param), true) 74 assert.Equal(t, CheckPermissions(user, "/admin/info/normal_manager/edit?__goadmin_edit_pk=2", "get", param), true) 75 assert.Equal(t, CheckPermissions(user, "/admin/info/normal_manager/edit?__goadmin_edit_pk=3&__columns=id,roles,created_at,updated_at", "get", param), false) 76 assert.Equal(t, CheckPermissions(user, "/admin/info/normal_manager/edit?__columns=id,roles,created_at,updated_at&id=3", "get", param), false) 77 assert.Equal(t, CheckPermissions(user, "/admin/info/user", "post", param), false) 78 assert.Equal(t, CheckPermissions(user, "/admin/info/user/edit?id=3", "get", param), true) 79 assert.Equal(t, CheckPermissions(user, "/admin/logout?j=asdf", "post", param), true) 80 assert.Equal(t, CheckPermissions(user, "/admin/info/user_list?user_type=20", "get", param), true) 81 assert.Equal(t, CheckPermissions(user, "/admin/info/user_list?__goadmin_edit_pk=3&user_type=20", "get", param), true) 82 assert.Equal(t, CheckPermissions(user, "/admin/delete/user", "post", param), true) 83 }