gitlab.com/picnic-app/backend/role-api@v0.0.0-20230614140944-06a76ff3696d/internal/controller/revoke_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  )
    14  
    15  func TestController_RevokeRoles_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.RevokeRolesRequest
    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 entity id",
    34  			ctx:  context.Background(),
    35  			req:  &v1.RevokeRolesRequest{},
    36  			want: codes.InvalidArgument,
    37  		},
    38  	} {
    39  		test := test
    40  		t.Run(test.name, func(t *testing.T) {
    41  			_, err := container.controller.RevokeRoles(test.ctx, test.req)
    42  			got := status.Code(err)
    43  			require.Equal(t, test.want, got, err)
    44  		})
    45  	}
    46  }
    47  
    48  func TestController_RevokeRoles(t *testing.T) {
    49  	t.Parallel()
    50  
    51  	container := initContainer(t)
    52  
    53  	entityID := uuid.NewString()
    54  	circle1ID, circle2ID := uuid.NewString(), uuid.NewString()
    55  	userID := uuid.NewString()
    56  
    57  	_, err := setUpAssignedRole(container, entityID, circle1ID, userID)
    58  	require.NoError(t, err)
    59  	_, err = setUpAssignedRole(container, entityID, circle1ID, userID)
    60  	require.NoError(t, err)
    61  	role, err := setUpAssignedRole(container, entityID, circle2ID, userID)
    62  	require.NoError(t, err)
    63  
    64  	ctx := context.Background()
    65  
    66  	// revoke
    67  	_, err = container.controller.RevokeRoles(
    68  		ctx,
    69  		&v1.RevokeRolesRequest{
    70  			EntityId: entityID,
    71  			CircleId: circle1ID,
    72  		},
    73  	)
    74  	require.NoError(t, err)
    75  
    76  	// get assigned roles
    77  	getResponse, err := container.controller.GetAssignedRoles(
    78  		ctx,
    79  		&v1.GetAssignedRolesRequest{
    80  			EntityId: entityID,
    81  		},
    82  	)
    83  	require.NoError(t, err)
    84  	require.NotNil(t, getResponse.Roles)
    85  	require.Len(t, getResponse.Roles, 1)
    86  	require.Equal(t, getResponse.Roles[0].Id, role.Id)
    87  }