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  }