Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ TAG := $(shell git rev-list --tags --max-count=1)
VERSION := $(shell git describe --tags ${TAG})
.PHONY: build check fmt lint test test-race vet test-cover-html help install proto admin-app compose-up-dev
.DEFAULT_GOAL := build
PROTON_COMMIT := "0a5d4207bcefc231021c032cd166fd07440f11a5"
PROTON_COMMIT := "b4b467d701b9739a549d8032e1a79cf5a393be32"

admin-app:
@echo " > generating admin build"
Expand Down
11 changes: 5 additions & 6 deletions internal/api/v1beta1connect/permission.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,21 +91,20 @@ func transformPermissionToPB(perm permission.Permission) (*frontierv1beta1.Permi
}
}

// key is the replacement for the deprecated namespace/name fields, so it
// must read back to the exact stored pair. A row that cannot round-trip
// (namespace without a slash, or with a dot in a part) fails loudly here
// instead of returning a key that reads back as a different permission.
// The key is the namespace and name joined with dots, and readers split
// it back on dots. If splitting the key does not give back the same
// namespace and name (a namespace without a slash, or a dot inside a
// namespace part), the key would point at a different permission than
// this row, so return an error instead of a misleading key.
key := schema.PermissionKeyFromNamespaceAndName(perm.NamespaceID, perm.Name)
if ns, name := schema.PermissionNamespaceAndNameFromKey(key); ns != perm.NamespaceID || name != perm.Name {
return nil, fmt.Errorf("permission namespace %q and name %q do not round-trip through key %q", perm.NamespaceID, perm.Name, key)
}

return &frontierv1beta1.Permission{
Id: perm.ID,
Name: perm.Name,
CreatedAt: timestamppb.New(perm.CreatedAt),
UpdatedAt: timestamppb.New(perm.UpdatedAt),
Namespace: perm.NamespaceID,
Metadata: metadata,
Key: key,
}, nil
Expand Down
43 changes: 0 additions & 43 deletions internal/api/v1beta1connect/permission_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,20 +120,6 @@ func TestHandler_CreatePermission(t *testing.T) {
want: nil,
wantErr: connect.NewError(connect.CodeInvalidArgument, ErrPermissionKeyNotation),
},
{
name: "should return bad request error if deprecated fields are sent without key",
setup: func(as *mocks.PermissionService, bs *mocks.BootstrapService) {},
request: connect.NewRequest(&frontierv1beta1.CreatePermissionRequest{
Bodies: []*frontierv1beta1.PermissionRequestBody{
{
Name: testPermissions[testPermissionIdx].Name,
Namespace: testPermissions[testPermissionIdx].NamespaceID,
},
},
}),
want: nil,
wantErr: connect.NewError(connect.CodeInvalidArgument, ErrPermissionKeyNotation),
},
{
name: "should return success if permission service return nil error",
setup: func(as *mocks.PermissionService, bs *mocks.BootstrapService) {
Expand Down Expand Up @@ -181,16 +167,12 @@ func TestHandler_CreatePermission(t *testing.T) {
Permissions: []*frontierv1beta1.Permission{
{
Id: testPermissions[testPermissionIdx].ID,
Name: testPermissions[testPermissionIdx].Name + "0",
Namespace: testPermissions[testPermissionIdx].NamespaceID,
Key: schema.PermissionKeyFromNamespaceAndName(testPermissions[testPermissionIdx].NamespaceID, testPermissions[testPermissionIdx].Name+"0"),
CreatedAt: timestamppb.New(testPermissions[testPermissionIdx].CreatedAt),
UpdatedAt: timestamppb.New(testPermissions[testPermissionIdx].UpdatedAt),
},
{
Id: testPermissions[testPermissionIdx].ID,
Name: testPermissions[testPermissionIdx].Name + "1",
Namespace: testPermissions[testPermissionIdx].NamespaceID,
Key: schema.PermissionKeyFromNamespaceAndName(testPermissions[testPermissionIdx].NamespaceID, testPermissions[testPermissionIdx].Name+"1"),
CreatedAt: timestamppb.New(testPermissions[testPermissionIdx].CreatedAt),
UpdatedAt: timestamppb.New(testPermissions[testPermissionIdx].UpdatedAt),
Expand Down Expand Up @@ -233,8 +215,6 @@ func TestHandler_CreatePermission(t *testing.T) {
Permissions: []*frontierv1beta1.Permission{
{
Id: testPermissions[testPermissionIdx].ID,
Name: testPermissions[testPermissionIdx].Name + "0",
Namespace: testPermissions[testPermissionIdx].NamespaceID,
Key: schema.PermissionKeyFromNamespaceAndName(testPermissions[testPermissionIdx].NamespaceID, testPermissions[testPermissionIdx].Name+"0"),
CreatedAt: timestamppb.New(testPermissions[testPermissionIdx].CreatedAt),
UpdatedAt: timestamppb.New(testPermissions[testPermissionIdx].UpdatedAt),
Expand Down Expand Up @@ -452,19 +432,6 @@ func TestHandler_UpdatePermission(t *testing.T) {
want: nil,
wantErr: connect.NewError(connect.CodeInvalidArgument, schema.ValidateCustomPermission("Ab/resource", "get")),
},
{
name: "should return bad request error if deprecated fields are sent without key",
setup: func(as *mocks.PermissionService) {},
request: connect.NewRequest(&frontierv1beta1.UpdatePermissionRequest{
Id: testPermissions[testPermissionIdx].ID,
Body: &frontierv1beta1.PermissionRequestBody{
Name: testPermissions[testPermissionIdx].Name,
Namespace: testPermissions[testPermissionIdx].NamespaceID,
},
}),
want: nil,
wantErr: connect.NewError(connect.CodeInvalidArgument, ErrPermissionKeyNotation),
},
{
name: "should return success if permission service return nil error",
setup: func(as *mocks.PermissionService) {
Expand All @@ -483,8 +450,6 @@ func TestHandler_UpdatePermission(t *testing.T) {
want: connect.NewResponse(&frontierv1beta1.UpdatePermissionResponse{
Permission: &frontierv1beta1.Permission{
Id: testPermissions[testPermissionIdx].ID,
Name: testPermissions[testPermissionIdx].Name,
Namespace: testPermissions[testPermissionIdx].NamespaceID,
Key: schema.PermissionKeyFromNamespaceAndName(testPermissions[testPermissionIdx].NamespaceID, testPermissions[testPermissionIdx].Name),
CreatedAt: timestamppb.New(testPermissions[testPermissionIdx].CreatedAt),
UpdatedAt: timestamppb.New(testPermissions[testPermissionIdx].UpdatedAt),
Expand Down Expand Up @@ -537,24 +502,18 @@ func TestHandler_ListPermissions(t *testing.T) {
Permissions: []*frontierv1beta1.Permission{
{
Id: testPermissions[0].ID,
Name: testPermissions[0].Name,
Namespace: testPermissions[0].NamespaceID,
Key: schema.PermissionKeyFromNamespaceAndName(testPermissions[0].NamespaceID, testPermissions[0].Name),
CreatedAt: timestamppb.New(testPermissions[0].CreatedAt),
UpdatedAt: timestamppb.New(testPermissions[0].UpdatedAt),
},
{
Id: testPermissions[1].ID,
Name: testPermissions[1].Name,
Namespace: testPermissions[1].NamespaceID,
Key: schema.PermissionKeyFromNamespaceAndName(testPermissions[1].NamespaceID, testPermissions[1].Name),
CreatedAt: timestamppb.New(testPermissions[1].CreatedAt),
UpdatedAt: timestamppb.New(testPermissions[1].UpdatedAt),
},
{
Id: testPermissions[2].ID,
Name: testPermissions[2].Name,
Namespace: testPermissions[2].NamespaceID,
Key: schema.PermissionKeyFromNamespaceAndName(testPermissions[2].NamespaceID, testPermissions[2].Name),
CreatedAt: timestamppb.New(testPermissions[2].CreatedAt),
UpdatedAt: timestamppb.New(testPermissions[2].UpdatedAt),
Expand Down Expand Up @@ -630,8 +589,6 @@ func TestHandler_GetPermission(t *testing.T) {
want: connect.NewResponse(&frontierv1beta1.GetPermissionResponse{
Permission: &frontierv1beta1.Permission{
Id: testPermissions[testPermissionIdx].ID,
Name: testPermissions[testPermissionIdx].Name,
Namespace: testPermissions[testPermissionIdx].NamespaceID,
Key: schema.PermissionKeyFromNamespaceAndName(testPermissions[testPermissionIdx].NamespaceID, testPermissions[testPermissionIdx].Name),
CreatedAt: timestamppb.New(testPermissions[testPermissionIdx].CreatedAt),
UpdatedAt: timestamppb.New(testPermissions[testPermissionIdx].UpdatedAt),
Expand Down
Loading
Loading