|
package auth |
|
|
|
import ( |
|
"net/url" |
|
"testing" |
|
|
|
"github.com/GoAdminGroup/go-admin/modules/config" |
|
"github.com/GoAdminGroup/go-admin/plugins/admin/models" |
|
"github.com/stretchr/testify/assert" |
|
) |
|
|
|
func TestCheckPermissions(t *testing.T) { |
|
|
|
config.Initialize(&config.Config{ |
|
UrlPrefix: "admin", |
|
}) |
|
|
|
user := models.UserModel{ |
|
Permissions: []models.PermissionModel{ |
|
{ |
|
Name: "/", |
|
Slug: "/", |
|
HttpMethod: []string{"GET"}, |
|
HttpPath: []string{"/"}, |
|
}, { |
|
Name: "/info/user", |
|
Slug: "/", |
|
HttpMethod: []string{"GET"}, |
|
HttpPath: []string{"/info/user"}, |
|
}, { |
|
Name: "/info/user/edit", |
|
Slug: "/", |
|
HttpMethod: []string{"GET"}, |
|
HttpPath: []string{"/info/user/edit"}, |
|
}, { |
|
Name: "/info/normal_manager?id=2", |
|
Slug: "/", |
|
HttpMethod: []string{"GET"}, |
|
HttpPath: []string{"/info/normal_manager?id=2"}, |
|
}, { |
|
Name: "/info/normal_manager/edit?id=2", |
|
Slug: "/", |
|
HttpMethod: []string{"GET"}, |
|
HttpPath: []string{"/info/normal_manager/edit?id=2"}, |
|
}, { |
|
Name: "/info/user_list?user_type=10", |
|
Slug: "/", |
|
HttpMethod: []string{"GET"}, |
|
HttpPath: []string{"/info/user_list?user_type=10"}, |
|
}, { |
|
Name: "/info/user_list?user_type=20", |
|
Slug: "/", |
|
HttpMethod: []string{"GET"}, |
|
HttpPath: []string{"/info/user_list?user_type=20"}, |
|
}, { |
|
Name: "/delete/user", |
|
Slug: "/", |
|
HttpMethod: []string{"POST"}, |
|
HttpPath: []string{"/delete/user"}, |
|
}, |
|
}, |
|
} |
|
|
|
param := make(url.Values) |
|
|
|
assert.Equal(t, CheckPermissions(user, "/admin/", "GET", param), true) |
|
assert.Equal(t, CheckPermissions(user, "/admin", "GET", param), true) |
|
assert.Equal(t, CheckPermissions(user, "/", "GET", param), false) |
|
assert.Equal(t, CheckPermissions(user, "/admin", "POST", param), false) |
|
assert.Equal(t, CheckPermissions(user, "/admin/info/users", "GET", param), false) |
|
assert.Equal(t, CheckPermissions(user, "/admin/info/user", "GET", param), true) |
|
assert.Equal(t, CheckPermissions(user, "/admin/info/user", "get", param), true) |
|
assert.Equal(t, CheckPermissions(user, "/admin/info/normal_manager/edit?__goadmin_edit_pk=2&__columns=id,roles,created_at,updated_at", "get", param), true) |
|
assert.Equal(t, CheckPermissions(user, "/admin/info/normal_manager/edit?__goadmin_edit_pk=2", "get", param), true) |
|
assert.Equal(t, CheckPermissions(user, "/admin/info/normal_manager/edit?__goadmin_edit_pk=3&__columns=id,roles,created_at,updated_at", "get", param), false) |
|
assert.Equal(t, CheckPermissions(user, "/admin/info/normal_manager/edit?__columns=id,roles,created_at,updated_at&id=3", "get", param), false) |
|
assert.Equal(t, CheckPermissions(user, "/admin/info/user", "post", param), false) |
|
assert.Equal(t, CheckPermissions(user, "/admin/info/user/edit?id=3", "get", param), true) |
|
assert.Equal(t, CheckPermissions(user, "/admin/logout?j=asdf", "post", param), true) |
|
assert.Equal(t, CheckPermissions(user, "/admin/info/user_list?user_type=20", "get", param), true) |
|
assert.Equal(t, CheckPermissions(user, "/admin/info/user_list?__goadmin_edit_pk=3&user_type=20", "get", param), true) |
|
assert.Equal(t, CheckPermissions(user, "/admin/delete/user", "post", param), true) |
|
} |
|
|