From 4d3a0f1adb6ec771ef42db13f7ed2e39ca9e4e54 Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Wed, 26 Aug 2020 11:15:27 +0545 Subject: [PATCH] test list filtered bundles --- pkg/proto/v0/settings.pb.micro_test.go | 164 +++++++++++++++++++++++++ 1 file changed, 164 insertions(+) diff --git a/pkg/proto/v0/settings.pb.micro_test.go b/pkg/proto/v0/settings.pb.micro_test.go index 5e49c2342..4c3b73f8a 100644 --- a/pkg/proto/v0/settings.pb.micro_test.go +++ b/pkg/proto/v0/settings.pb.micro_test.go @@ -940,6 +940,170 @@ func TestListRolesAfterSavingBundle(t *testing.T) { } } +func TestListFilteredBundle(t *testing.T) { + type expectedBundle struct { + displayName string + name string + } + + type permission struct { + bundleName string + permission proto.Permission_Operation + } + + type bundleForTest struct { + bundle *proto.Bundle + permission proto.Permission_Operation + } + tests := []struct { + name string + bundles []bundleForTest + expectedBundles []expectedBundle + permissions []permission + }{ + { + name: "multiple bundles, all RW permission", + bundles: []bundleForTest{ + { + bundle: &proto.Bundle{ + Name: "test", + Id: "b1b8c9d0-fb3c-4e12-b868-5a8508218d2e", + DisplayName: "bundleDisplayName", + Extension: "testExtension", + Type: proto.Bundle_TYPE_DEFAULT, + Settings: complexSettingsStub, + Resource: &proto.Resource{ + Type: proto.Resource_TYPE_SYSTEM, + }, + }, + permission: proto.Permission_OPERATION_READWRITE, + }, + { + bundle: &proto.Bundle{ + Name: "one-more", + Id: "3b9f230a-fc9e-4605-89ee-a21e24728c64", + DisplayName: "an other bundle", + Extension: "testExtension", + Type: proto.Bundle_TYPE_DEFAULT, + Settings: complexSettingsStub, + Resource: &proto.Resource{ + Type: proto.Resource_TYPE_SYSTEM, + }, + }, + permission: proto.Permission_OPERATION_READWRITE, + + }, + }, + expectedBundles: []expectedBundle{ + {displayName: "bundleDisplayName", name: "test"}, + {displayName: "an other bundle", name: "one-more"}, + }, + }, + { + name: "multiple bundles, one RW permission, other RO", + bundles: []bundleForTest{ + { + bundle: &proto.Bundle{ + Name: "test-ro-1", + Id: "b1b8c9d0-fb3c-4e12-b868-5a8508218d2e", + DisplayName: "RO-Bundle1", + Extension: "testExtension", + Type: proto.Bundle_TYPE_DEFAULT, + Settings: complexSettingsStub, + Resource: &proto.Resource{ + Type: proto.Resource_TYPE_SYSTEM, + }, + }, + permission: proto.Permission_OPERATION_READ, + }, + { + bundle: &proto.Bundle{ + Name: "test-ro-2", + Id: "17b6870a-e625-4b65-a316-dd5db3427dca", + DisplayName: "RO-Bundle2", + Extension: "testExtension", + Type: proto.Bundle_TYPE_DEFAULT, + Settings: complexSettingsStub, + Resource: &proto.Resource{ + Type: proto.Resource_TYPE_SYSTEM, + }, + }, + permission: proto.Permission_OPERATION_READ, + }, + { + bundle: &proto.Bundle{ + Name: "test-rw", + Id: "3b9f230a-fc9e-4605-89ee-a21e24728c64", + DisplayName: "a RW bundle", + Extension: "testExtension", + Type: proto.Bundle_TYPE_DEFAULT, + Settings: complexSettingsStub, + Resource: &proto.Resource{ + Type: proto.Resource_TYPE_SYSTEM, + }, + }, + permission: proto.Permission_OPERATION_READWRITE, + }, + }, + expectedBundles: []expectedBundle{ + {displayName: "a RW bundle", name: "test-rw"}, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + teardown := setup() + defer teardown() + + for _, testBundle := range tt.bundles { + _, err := bundleService.SaveBundle(context.Background(), &proto.SaveBundleRequest{ + Bundle: testBundle.bundle, + }) + assert.NoError(t, err) + + permissionRequest := proto.AddSettingToBundleRequest{ + BundleId: svc.BundleUUIDRoleAdmin, + Setting: &proto.Setting{ + Name: "permission", + Resource: &proto.Resource{ + Type: proto.Resource_TYPE_BUNDLE, + Id: testBundle.bundle.Id, + }, + Value: &proto.Setting_PermissionValue{ + PermissionValue: &proto.Permission{ + Operation: testBundle.permission, + Constraint: proto.Permission_CONSTRAINT_OWN, + }, + }, + }, + } + addPermissionResponse, err := bundleService.AddSettingToBundle(context.Background(), &permissionRequest) + assert.NoError(t, err) + if err == nil { + assert.NotEmpty(t, addPermissionResponse.Setting) + } + } + _, err := roleService.AssignRoleToUser( + context.Background(), + &proto.AssignRoleToUserRequest{AccountUuid: testAccountID, RoleId: svc.BundleUUIDRoleAdmin}, + ) + assert.NoError(t, err) + + ctx := metadata.Set(context.Background(), middleware.AccountID, testAccountID) + listRes, err := bundleService.ListBundles(ctx, &proto.ListBundlesRequest{}) + assert.NoError(t, err) + + for _, bundle := range listRes.Bundles { + assert.Contains(t, tt.expectedBundles, expectedBundle{ + displayName: bundle.DisplayName, + name: bundle.Name, + }) + } + assert.Equal(t, len(tt.expectedBundles), len(listRes.Bundles)) + }) + } +} + func setFullReadWriteOnBundle(t *testing.T, accountID, bundleID string) { permissionRequest := proto.AddSettingToBundleRequest{ BundleId: svc.BundleUUIDRoleAdmin,