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  }