github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/pkg/steampipeconfig/shared_test.go (about)

     1  package steampipeconfig
     2  
     3  import (
     4  	"os"
     5  	"path/filepath"
     6  	"testing"
     7  
     8  	filehelpers "github.com/turbot/go-kit/files"
     9  	"github.com/turbot/steampipe/pkg/filepaths"
    10  )
    11  
    12  type findPluginFolderTest struct {
    13  	schema   string
    14  	expected string
    15  }
    16  
    17  var testCasesFindPluginFolderTest map[string]findPluginFolderTest
    18  
    19  func setupTestData() {
    20  
    21  	testCasesFindPluginFolderTest = map[string]findPluginFolderTest{
    22  		"truncated 1": {
    23  			"hub.steampipe.io/plugins/test/test@sha256-a5ec85d93329-32c3ed1c",
    24  			filepath.Join(filepaths.EnsurePluginDir(), "hub.steampipe.io/plugins/test/test@sha256-a5ec85d9332910f42a2a9dd44d646eba95f77a0236289a1a14a14abbbdea7a42"),
    25  		},
    26  		"truncated 2 - 2 folders with same prefix": {
    27  			"hub.steampipe.io/plugins/test/test@sha256-5f77a0236289-94a0eea6",
    28  			filepath.Join(filepaths.EnsurePluginDir(), "hub.steampipe.io/plugins/test/test@sha256-5f77a0236289a1a14a14abbbdea7a42a5ec85d9332910f42a2a9dd44d646eba9"),
    29  		},
    30  		"no truncation needed": {
    31  			"hub.steampipe.io/plugins/test/test@latest",
    32  			filepath.Join(filepaths.EnsurePluginDir(), "hub.steampipe.io/plugins/test/test@latest"),
    33  		},
    34  	}
    35  }
    36  
    37  func TestFindPluginFolderTest(t *testing.T) {
    38  
    39  	filepaths.SteampipeDir, _ = filehelpers.Tildefy("~/.steampipe")
    40  	setupTestData()
    41  
    42  	directories := []string{
    43  		"hub.steampipe.io/plugins/test/test@sha256-a5ec85d9332910f42a2a9dd44d646eba95f77a0236289a1a14a14abbbdea7a42",
    44  		"hub.steampipe.io/plugins/test/test@sha256-5f77a0236289a1a14a14abbbdea7a42a5ec85d9332910f42a2a9dd44d646eb00",
    45  		"hub.steampipe.io/plugins/test/test@sha256-5f77a0236289a1a14a14abbbdea7a42a5ec85d9332910f42a2a9dd44d646eba9",
    46  		"hub.steampipe.io/plugins/test/test@latest",
    47  	}
    48  
    49  	setupFindPluginFolderTest(directories)
    50  	for name, test := range testCasesFindPluginFolderTest {
    51  		path, err := filepaths.FindPluginFolder(test.schema)
    52  		if err != nil {
    53  			if test.expected != "ERROR" {
    54  				t.Errorf(`Test: '%s'' FAILED : unexpected error %v`, name, err)
    55  			}
    56  			continue
    57  		}
    58  
    59  		if path != test.expected {
    60  			t.Errorf(`Test: '%s'' FAILED : expected %s, got %s`, name, test.expected, path)
    61  		}
    62  	}
    63  	cleanupFindPluginFolderTest(directories)
    64  
    65  }
    66  
    67  func setupFindPluginFolderTest(directories []string) {
    68  	for _, dir := range directories {
    69  		pluginFolder := filepath.Join(filepaths.EnsurePluginDir(), dir)
    70  		if err := os.MkdirAll(pluginFolder, 0755); err != nil {
    71  			panic(err)
    72  		}
    73  	}
    74  }
    75  
    76  func cleanupFindPluginFolderTest(directories []string) {
    77  	pluginFolder := filepath.Join(filepaths.EnsurePluginDir(), "hub.steampipe.io/plugins/test")
    78  	os.RemoveAll(pluginFolder)
    79  }