gitlab.com/picnic-app/backend/role-api@v0.0.0-20230614140944-06a76ff3696d/internal/controller/assing_role_test.go (about) 1 package controller_test 2 3 import ( 4 "context" 5 "reflect" 6 "testing" 7 8 "github.com/google/uuid" 9 "github.com/stretchr/testify/require" 10 "google.golang.org/grpc/codes" 11 "google.golang.org/grpc/status" 12 13 v1 "gitlab.com/picnic-app/backend/libs/golang/protobuf-registry/gen/role-api/role/v1" 14 ) 15 16 func TestController_AssignRole_Validation(t *testing.T) { 17 t.Parallel() 18 19 container := initContainer(t) 20 21 role, err := setUpRole(container) 22 require.NoError(t, err) 23 24 for _, test := range []struct { 25 name string 26 ctx context.Context 27 req *v1.AssignRoleRequest 28 want codes.Code 29 }{ 30 { 31 name: "no request", 32 ctx: context.Background(), 33 req: nil, 34 want: codes.InvalidArgument, 35 }, 36 { 37 name: "no entity id", 38 ctx: context.Background(), 39 req: &v1.AssignRoleRequest{ 40 RoleId: role.Id, 41 }, 42 want: codes.InvalidArgument, 43 }, 44 { 45 name: "no role id", 46 ctx: context.Background(), 47 req: &v1.AssignRoleRequest{ 48 EntityId: uuid.NewString(), 49 }, 50 want: codes.InvalidArgument, 51 }, 52 } { 53 test := test 54 t.Run(test.name, func(t *testing.T) { 55 _, err := container.controller.AssignRole(test.ctx, test.req) 56 got := status.Code(err) 57 require.Equal(t, test.want, got, err) 58 }) 59 } 60 } 61 62 func TestController_AssignRole(t *testing.T) { 63 t.Parallel() 64 65 container := initContainer(t) 66 67 role, err := setUpRole(container) 68 require.NoError(t, err) 69 70 entityID := uuid.NewString() 71 circleID := uuid.NewString() 72 userID := uuid.NewString() 73 74 ctx := context.Background() 75 76 // assign 77 _, err = container.controller.AssignRole( 78 ctx, 79 &v1.AssignRoleRequest{ 80 EntityId: entityID, 81 RoleId: role.Id, 82 CircleId: circleID, 83 UserId: userID, 84 }, 85 ) 86 require.NoError(t, err) 87 88 // get assigned roles 89 getResponse, err := container.controller.GetAssignedRoles( 90 ctx, 91 &v1.GetAssignedRolesRequest{ 92 EntityId: entityID, 93 CircleId: circleID, 94 UserId: userID, 95 }, 96 ) 97 require.NoError(t, err) 98 99 require.NotNil(t, getResponse.Scopes) 100 require.Len(t, getResponse.Scopes, 1) 101 scope := getResponse.Scopes[0] 102 require.Equal(t, scope.RoleId, role.Id) 103 require.Equal(t, scope.CircleId, circleID) 104 require.Equal(t, scope.UserId, userID) 105 106 require.NotNil(t, getResponse.Roles) 107 require.Len(t, getResponse.Roles, 1) 108 assigned := getResponse.Roles[0] 109 require.True(t, reflect.DeepEqual(role, assigned)) 110 }