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 }