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  }