Skip to content
Snippets Groups Projects
apiUtil_test.go 2.53 KiB
Newer Older
  • Learn to ignore specific revisions
  • package api
    
    import (
    	rbacImpl "code.fbi.h-da.de/danet/gosdn/controller/rbac"
    	"github.com/google/uuid"
    )
    
    // Name of this file requires _test at the end, because of how the availability of varibales is handled in test files of go packages.
    // Does not include actual file tests!
    
    const adminID = "5c248a22-8eb7-48cf-b392-45680a1863a5"
    const userID = "57005d13-7a4d-493d-a02b-50ca51c40197"
    const adminRoleID = "126683ae-5ff2-43ee-92f7-0e2b936f8c77"
    const randomRoleName = "bertram"
    
    var adminRoleMap = map[string]string{pndID: "admin"}
    var userRoleMap = map[string]string{pndID: "user"}
    
    func clearAndCreateAuthTestSetup() error {
    	//clear setup if changed
    	storedUsers, err := userService.GetAll()
    	if err != nil {
    		return err
    	}
    	for _, u := range storedUsers {
    		err = userService.Delete(u)
    		if err != nil {
    			return err
    		}
    	}
    
    	storedRoles, err := roleService.GetAll()
    	if err != nil {
    		return err
    	}
    	for _, r := range storedRoles {
    		err = roleService.Delete(r)
    		if err != nil {
    			return err
    		}
    	}
    
    	// create dataset
    	err = createTestUsers()
    	if err != nil {
    		return err
    	}
    
    	err = createTestRoles()
    	if err != nil {
    		return err
    	}
    
    	return nil
    }
    
    //TODO(faseid): change password to hashed/encrypted one
    func createTestUsers() error {
    	randomRoleMap := map[string]string{pndID: randomRoleName}
    
    	users := []rbacImpl.User{
    		{UserID: uuid.MustParse(adminID), UserName: "testAdmin", Roles: adminRoleMap, Password: "admin"},
    		{UserID: uuid.MustParse(userID), UserName: "testUser", Roles: userRoleMap, Password: "user"},
    		{UserID: uuid.New(), UserName: "testRandom", Roles: randomRoleMap, Password: "aurelius", Token: "wrong token"},
    	}
    
    	for _, u := range users {
    		err := userService.Add(rbacImpl.NewUser(u.ID(), u.Name(), u.Roles, u.Password, ""))
    		if err != nil {
    			return err
    		}
    	}
    
    	return nil
    }
    
    func createTestRoles() error {
    	roles := []rbacImpl.Role{
    		{
    			RoleID:      uuid.MustParse(adminRoleID),
    			RoleName:    "adminTestRole",
    			Description: "Admin",
    			Permissions: []string{
    				"/gosdn.core.CoreService/GetPnd",
    				"/gosdn.core.CoreService/GetPndList",
    			},
    		},
    		{
    			RoleID:      uuid.New(),
    			RoleName:    "userTestRole",
    			Description: "User",
    			Permissions: []string{
    				"/gosdn.pnd.PndService/GetChangeList",
    			},
    		},
    		{
    			RoleID:      uuid.New(),
    			RoleName:    randomRoleName,
    			Description: "Not a role",
    			Permissions: []string{
    				"nope",
    			},
    		},
    	}
    
    	for _, r := range roles {
    		err := roleService.Add(rbacImpl.NewRole(r.ID(), r.Name(), r.Description, r.Permissions))
    		if err != nil {
    			return err
    		}
    	}
    
    	return nil
    }