gitlab.com/picnic-app/backend/role-api@v0.0.0-20230614140944-06a76ff3696d/internal/controller/update_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_UpdateRole_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.UpdateRoleRequest
    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.UpdateRoleRequest{},
    36  			want: codes.InvalidArgument,
    37  		},
    38  	} {
    39  		test := test
    40  		t.Run(test.name, func(t *testing.T) {
    41  			_, err := container.controller.UpdateRole(test.ctx, test.req)
    42  			got := status.Code(err)
    43  			require.Equal(t, test.want, got, err)
    44  		})
    45  	}
    46  }
    47  
    48  func TestController_UpdateRole(t *testing.T) {
    49  	t.Parallel()
    50  
    51  	container := initContainer(t)
    52  
    53  	role, err := setUpRole(container)
    54  	require.NoError(t, err)
    55  
    56  	name := uuid.NewString()
    57  	permissions := role.Permissions[0:1]
    58  
    59  	ctx := context.Background()
    60  	updateResponse, err := container.controller.UpdateRole(
    61  		ctx,
    62  		&v1.UpdateRoleRequest{
    63  			Role: &v1.Role{
    64  				Id:          role.Id,
    65  				Name:        name,
    66  				Permissions: permissions,
    67  			},
    68  		},
    69  	)
    70  	require.NoError(t, err)
    71  	require.NotEmpty(t, updateResponse.Id)
    72  
    73  	// get role
    74  	getResponse, err := container.controller.GetRole(
    75  		ctx,
    76  		&v1.GetRoleRequest{
    77  			Id: role.Id,
    78  		},
    79  	)
    80  	require.NoError(t, err)
    81  	require.NotNil(t, getResponse.Role)
    82  
    83  	got := getResponse.Role
    84  
    85  	require.Equal(t, role.Id, got.Id)
    86  	require.Equal(t, name, got.Name)
    87  	require.Equal(t, permissions, got.Permissions)
    88  }