gitlab.com/picnic-app/backend/role-api@v0.0.0-20230614140944-06a76ff3696d/internal/controller/get_role_test.go (about) 1 package controller_test 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 "google.golang.org/grpc/codes" 9 "google.golang.org/grpc/status" 10 11 v1 "gitlab.com/picnic-app/backend/libs/golang/protobuf-registry/gen/role-api/role/v1" 12 ) 13 14 func TestController_GetRole_Validation(t *testing.T) { 15 t.Parallel() 16 17 container := initContainer(t) 18 19 for _, test := range []struct { 20 name string 21 ctx context.Context 22 req *v1.GetRoleRequest 23 want codes.Code 24 }{ 25 { 26 name: "no request", 27 ctx: context.Background(), 28 req: nil, 29 want: codes.InvalidArgument, 30 }, 31 { 32 name: "no role ID", 33 ctx: context.Background(), 34 req: &v1.GetRoleRequest{}, 35 want: codes.InvalidArgument, 36 }, 37 } { 38 test := test 39 t.Run(test.name, func(t *testing.T) { 40 _, err := container.controller.GetRole(test.ctx, test.req) 41 got := status.Code(err) 42 require.Equal(t, test.want, got, err) 43 }) 44 } 45 } 46 47 func TestController_GetRole(t *testing.T) { 48 t.Parallel() 49 50 container := initContainer(t) 51 52 role, err := setUpRole(container) 53 require.NoError(t, err) 54 55 ctx := context.Background() 56 57 // get role 58 getResponse, err := container.controller.GetRole( 59 ctx, 60 &v1.GetRoleRequest{ 61 Id: role.Id, 62 }, 63 ) 64 require.NoError(t, err) 65 require.NotNil(t, getResponse.Role) 66 67 got := getResponse.Role 68 69 require.Equal(t, role.Id, got.Id) 70 require.Equal(t, role.Name, got.Name) 71 require.Len(t, got.Permissions, len(role.Permissions)) 72 73 for _, wantPermission := range role.Permissions { 74 var found *v1.Permission 75 for _, gotPermission := range role.Permissions { 76 if gotPermission.Service != wantPermission.Service { 77 continue 78 } 79 found = gotPermission 80 break 81 } 82 require.NotNil(t, found) 83 require.Equal(t, wantPermission, found) 84 } 85 }