github.com/criteo/command-launcher@v0.0.0-20230407142452-fb616f546e98/internal/remote/default-remote_test.go (about) 1 package remote 2 3 import ( 4 "fmt" 5 "os" 6 "path/filepath" 7 "testing" 8 9 "github.com/criteo/command-launcher/internal/helper" 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestLoadIndex(t *testing.T) { 14 basePath := filepath.Join(t.TempDir(), "remote-test") 15 err := os.Mkdir(basePath, 0755) 16 assert.Nil(t, err) 17 18 indexPath := filepath.Join(basePath, "index.json") 19 err = helper.CopyLocalFile("assets/remote/basic-index.json", indexPath, false) 20 assert.Nil(t, err) 21 22 err = helper.CopyLocalFile("assets/ls-0.0.2.pkg", filepath.Join(basePath, "ls-0.0.2.pkg"), false) 23 assert.Nil(t, err) 24 25 remoteRepo := CreateRemoteRepository(fmt.Sprintf("file://%s", basePath)) 26 27 err = remoteRepo.Fetch() 28 assert.Nil(t, err) 29 30 pkgs, err := remoteRepo.PackageNames() 31 assert.Nil(t, err) 32 assert.Equal(t, 3, len(pkgs)) 33 34 allPkgs, err := remoteRepo.All() 35 assert.Nil(t, err) 36 assert.Equal(t, 6, len(allPkgs)) 37 38 pkgNames, err := remoteRepo.PackageNames() 39 assert.Nil(t, err) 40 assert.Equal(t, 3, len(pkgNames)) 41 ls := false 42 hotfix := false 43 env := false 44 for _, pkgName := range pkgNames { 45 if pkgName == "ls" { 46 ls = true 47 continue 48 } 49 if pkgName == "env" { 50 env = true 51 continue 52 } 53 if pkgName == "hotfix" { 54 hotfix = true 55 continue 56 } 57 } 58 assert.True(t, ls) 59 assert.True(t, hotfix) 60 assert.True(t, env) 61 62 versions, err := remoteRepo.Versions("hotfix") 63 assert.Nil(t, err) 64 assert.Equal(t, 3, len(versions)) 65 assert.Equal(t, "1.0.0-43596", versions[0]) 66 assert.Equal(t, "1.0.0-43603", versions[1]) 67 assert.Equal(t, "1.0.0-43736", versions[2]) 68 69 version, err := remoteRepo.LatestVersion("ls") 70 assert.Nil(t, err) 71 assert.Equal(t, "0.0.2", version) 72 73 version, err = remoteRepo.LatestVersion("hotfix") 74 assert.Nil(t, err) 75 assert.Equal(t, "1.0.0-43736", version) 76 77 version, err = remoteRepo.LatestVersion("env") 78 assert.Nil(t, err) 79 assert.Equal(t, "1.0.0-43736", version) 80 81 // query latest version for a particular partition 82 version, err = remoteRepo.QueryLatestVersion("hotfix", func(pkgInfo *PackageInfo) bool { 83 return pkgInfo.StartPartition <= 3 && pkgInfo.EndPartition >= 3 84 }) 85 assert.Nil(t, err) 86 assert.Equal(t, "1.0.0-43603", version) 87 88 version, err = remoteRepo.QueryLatestVersion("hotfix", func(pkgInfo *PackageInfo) bool { 89 return pkgInfo.StartPartition <= 7 && pkgInfo.EndPartition >= 7 90 }) 91 assert.Nil(t, err) 92 assert.Equal(t, "1.0.0-43736", version) 93 94 // query experimental partition 95 version, err = remoteRepo.QueryLatestVersion("env", func(pkgInfo *PackageInfo) bool { 96 return pkgInfo.StartPartition >= 20 97 }) 98 assert.Nil(t, err) 99 assert.Equal(t, "1.0.0-43736", version) 100 101 pkg, err := remoteRepo.Package("ls", "0.0.2") 102 assert.Nil(t, err) 103 assert.Equal(t, "ls", pkg.Name()) 104 assert.Equal(t, "0.0.2", pkg.Version()) 105 assert.Equal(t, 1, len(pkg.Commands())) 106 }