gitlab.com/picnic-app/backend/role-api@v0.0.0-20230614140944-06a76ff3696d/internal/controller/common_test.go (about)

     1  package controller_test
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/google/uuid"
     7  
     8  	v1 "gitlab.com/picnic-app/backend/libs/golang/protobuf-registry/gen/role-api/role/v1"
     9  	"gitlab.com/picnic-app/backend/role-api/internal/controller/serialize"
    10  	"gitlab.com/picnic-app/backend/role-api/internal/model"
    11  )
    12  
    13  func setUpRole(container Container) (*v1.Role, error) {
    14  	name := uuid.NewString()
    15  	permissions := []*v1.Permission{
    16  		{
    17  			Service:   "Content",
    18  			Operation: "CreatePost",
    19  			Scope:     "*",
    20  		},
    21  		{
    22  			Service:   "Chat",
    23  			Operation: "SendMessage",
    24  			Scope:     "*",
    25  		},
    26  	}
    27  
    28  	ctx := context.Background()
    29  
    30  	// create
    31  	createResponse, err := container.controller.CreateRole(
    32  		ctx,
    33  		&v1.CreateRoleRequest{
    34  			Role: &v1.Role{
    35  				Name:        name,
    36  				Permissions: permissions,
    37  			},
    38  		},
    39  	)
    40  	if err != nil {
    41  		return nil, err
    42  	}
    43  
    44  	// get
    45  	getResponse, err := container.controller.GetRole(
    46  		ctx,
    47  		&v1.GetRoleRequest{
    48  			Id: createResponse.Id,
    49  		},
    50  	)
    51  	if err != nil {
    52  		return nil, err
    53  	}
    54  
    55  	return getResponse.Role, nil
    56  }
    57  
    58  func setUpAssignedRole(
    59  	container Container,
    60  	entityID, circleID, userID string,
    61  	permissions ...model.Permission) (*v1.Role, error) {
    62  	name := uuid.NewString()
    63  
    64  	if len(permissions) == 0 {
    65  		permissions = append(permissions,
    66  			model.Permission{
    67  				Service:   "Content",
    68  				Operation: "CreatePost",
    69  				Scope:     "*",
    70  			},
    71  			model.Permission{
    72  				Service:   "Chat",
    73  				Operation: "SendMessage",
    74  				Scope:     "*",
    75  			},
    76  		)
    77  	}
    78  
    79  	ctx := context.Background()
    80  
    81  	// create
    82  	createResponse, err := container.controller.CreateRole(
    83  		ctx,
    84  		&v1.CreateRoleRequest{
    85  			Role: &v1.Role{
    86  				Name:        name,
    87  				Permissions: serialize.Permissions(permissions),
    88  			},
    89  		},
    90  	)
    91  	if err != nil {
    92  		return nil, err
    93  	}
    94  
    95  	// get
    96  	getResponse, err := container.controller.GetRole(
    97  		ctx,
    98  		&v1.GetRoleRequest{
    99  			Id: createResponse.Id,
   100  		},
   101  	)
   102  	if err != nil {
   103  		return nil, err
   104  	}
   105  
   106  	// assign
   107  	_, err = container.controller.AssignRole(
   108  		ctx,
   109  		&v1.AssignRoleRequest{
   110  			EntityId: entityID,
   111  			RoleId:   getResponse.Role.Id,
   112  			CircleId: circleID,
   113  			UserId:   userID,
   114  		},
   115  	)
   116  	if err != nil {
   117  		return nil, err
   118  	}
   119  
   120  	return getResponse.Role, nil
   121  }