gitlab.com/picnic-app/backend/role-api@v0.0.0-20230614140944-06a76ff3696d/internal/controller/revoke_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_RevokeRole_Validation(t *testing.T) {
    16  	t.Parallel()
    17  
    18  	container := initContainer(t)
    19  
    20  	role, err := setUpRole(container)
    21  	require.NoError(t, err)
    22  
    23  	for _, test := range []struct {
    24  		name string
    25  		ctx  context.Context
    26  		req  *v1.RevokeRoleRequest
    27  		want codes.Code
    28  	}{
    29  		{
    30  			name: "no request",
    31  			ctx:  context.Background(),
    32  			req:  nil,
    33  			want: codes.InvalidArgument,
    34  		},
    35  		{
    36  			name: "no entity id",
    37  			ctx:  context.Background(),
    38  			req: &v1.RevokeRoleRequest{
    39  				RoleId: role.Id,
    40  			},
    41  			want: codes.InvalidArgument,
    42  		},
    43  		{
    44  			name: "no role id",
    45  			ctx:  context.Background(),
    46  			req: &v1.RevokeRoleRequest{
    47  				EntityId: uuid.NewString(),
    48  			},
    49  			want: codes.InvalidArgument,
    50  		},
    51  	} {
    52  		test := test
    53  		t.Run(test.name, func(t *testing.T) {
    54  			_, err := container.controller.RevokeRole(test.ctx, test.req)
    55  			got := status.Code(err)
    56  			require.Equal(t, test.want, got, err)
    57  		})
    58  	}
    59  }
    60  
    61  func TestController_RevokeRole(t *testing.T) {
    62  	t.Parallel()
    63  
    64  	container := initContainer(t)
    65  
    66  	entityID := uuid.NewString()
    67  	circleID := uuid.NewString()
    68  	userID := uuid.NewString()
    69  	role, err := setUpAssignedRole(container, entityID, circleID, userID)
    70  	require.NoError(t, err)
    71  
    72  	ctx := context.Background()
    73  
    74  	// revoke
    75  	_, err = container.controller.RevokeRole(
    76  		ctx,
    77  		&v1.RevokeRoleRequest{
    78  			EntityId: entityID,
    79  			RoleId:   role.Id,
    80  		},
    81  	)
    82  	require.NoError(t, err)
    83  
    84  	// get assigned roles
    85  	getResponse, err := container.controller.GetAssignedRoles(
    86  		ctx,
    87  		&v1.GetAssignedRolesRequest{
    88  			EntityId: entityID,
    89  			CircleId: circleID,
    90  			UserId:   userID,
    91  		},
    92  	)
    93  	require.NoError(t, err)
    94  	require.NotNil(t, getResponse.Roles)
    95  	require.Len(t, getResponse.Roles, 0)
    96  }