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