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

     1  package controller_test
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/google/uuid"
     8  	"github.com/stretchr/testify/require"
     9  	"google.golang.org/grpc/codes"
    10  	"google.golang.org/grpc/status"
    11  
    12  	v1 "gitlab.com/picnic-app/backend/libs/golang/protobuf-registry/gen/role-api/role/v1"
    13  )
    14  
    15  func TestController_CreateRole_Validation(t *testing.T) {
    16  	t.Parallel()
    17  
    18  	container := initContainer(t)
    19  
    20  	for _, test := range []struct {
    21  		name string
    22  		ctx  context.Context
    23  		req  *v1.CreateRoleRequest
    24  		want codes.Code
    25  	}{
    26  		{
    27  			name: "no request",
    28  			ctx:  context.Background(),
    29  			req:  nil,
    30  			want: codes.InvalidArgument,
    31  		},
    32  		{
    33  			name: "no role",
    34  			ctx:  context.Background(),
    35  			req:  &v1.CreateRoleRequest{},
    36  			want: codes.InvalidArgument,
    37  		},
    38  	} {
    39  		test := test
    40  		t.Run(test.name, func(t *testing.T) {
    41  			_, err := container.controller.CreateRole(test.ctx, test.req)
    42  			got := status.Code(err)
    43  			require.Equal(t, test.want, got, err)
    44  		})
    45  	}
    46  }
    47  
    48  func TestController_CreateRole(t *testing.T) {
    49  	t.Parallel()
    50  
    51  	container := initContainer(t)
    52  
    53  	name := uuid.NewString()
    54  	permissions := []*v1.Permission{
    55  		{
    56  			Service:   "Content",
    57  			Operation: "CreatePost",
    58  			Scope:     "*",
    59  		},
    60  		{
    61  			Service:   "Chat",
    62  			Operation: "SendMessage",
    63  			Scope:     "*",
    64  		},
    65  	}
    66  
    67  	ctx := context.Background()
    68  	createResponse, err := container.controller.CreateRole(
    69  		ctx,
    70  		&v1.CreateRoleRequest{
    71  			Role: &v1.Role{
    72  				Name:        name,
    73  				Permissions: permissions,
    74  			},
    75  		},
    76  	)
    77  	require.NoError(t, err)
    78  	require.NotEmpty(t, createResponse.Id)
    79  
    80  	id := createResponse.Id
    81  
    82  	// get role
    83  	getResponse, err := container.controller.GetRole(
    84  		ctx,
    85  		&v1.GetRoleRequest{
    86  			Id: id,
    87  		},
    88  	)
    89  	require.NoError(t, err)
    90  	require.NotNil(t, getResponse.Role)
    91  
    92  	role := getResponse.Role
    93  
    94  	require.Equal(t, id, role.Id)
    95  	require.Equal(t, name, role.Name)
    96  	require.Equal(t, permissions, role.Permissions)
    97  }