github.com/muhammadn/cortex@v1.9.1-0.20220510110439-46bb7000d03d/pkg/storage/tsdb/users_scanner_test.go (about) 1 package tsdb 2 3 import ( 4 "context" 5 "errors" 6 "path" 7 "testing" 8 9 "github.com/go-kit/log" 10 "github.com/stretchr/testify/assert" 11 "github.com/stretchr/testify/require" 12 13 "github.com/cortexproject/cortex/pkg/storage/bucket" 14 ) 15 16 func TestUsersScanner_ScanUsers_ShouldReturnedOwnedUsersOnly(t *testing.T) { 17 bucketClient := &bucket.ClientMock{} 18 bucketClient.MockIter("", []string{"user-1", "user-2", "user-3", "user-4"}, nil) 19 bucketClient.MockExists(path.Join("user-1", TenantDeletionMarkPath), false, nil) 20 bucketClient.MockExists(path.Join("user-3", TenantDeletionMarkPath), true, nil) 21 22 isOwned := func(userID string) (bool, error) { 23 return userID == "user-1" || userID == "user-3", nil 24 } 25 26 s := NewUsersScanner(bucketClient, isOwned, log.NewNopLogger()) 27 actual, deleted, err := s.ScanUsers(context.Background()) 28 require.NoError(t, err) 29 assert.Equal(t, []string{"user-1"}, actual) 30 assert.Equal(t, []string{"user-3"}, deleted) 31 32 } 33 34 func TestUsersScanner_ScanUsers_ShouldReturnUsersForWhichOwnerCheckOrTenantDeletionCheckFailed(t *testing.T) { 35 expected := []string{"user-1", "user-2"} 36 37 bucketClient := &bucket.ClientMock{} 38 bucketClient.MockIter("", expected, nil) 39 bucketClient.MockExists(path.Join("user-1", TenantDeletionMarkPath), false, nil) 40 bucketClient.MockExists(path.Join("user-2", TenantDeletionMarkPath), false, errors.New("fail")) 41 42 isOwned := func(userID string) (bool, error) { 43 return false, errors.New("failed to check if user is owned") 44 } 45 46 s := NewUsersScanner(bucketClient, isOwned, log.NewNopLogger()) 47 actual, deleted, err := s.ScanUsers(context.Background()) 48 require.NoError(t, err) 49 assert.Equal(t, expected, actual) 50 assert.Empty(t, deleted) 51 }