Something went wrong. Try again.
sloproxy
Something went wrong. Try again.
5.3 kB · 159 lines
Go
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160package pluginstore
import ( "strings" "testing")
func TestManifestValidateRequiresPinnedReleaseTag(t *testing.T) { manifest := validTestManifest() manifest.ReleaseTag = ""
errValidate := manifest.Validate() if errValidate == nil { t.Fatal("Validate() error = nil, want release-tag error") } if !strings.Contains(errValidate.Error(), "release-tag") { t.Fatalf("Validate() error = %v, want release-tag", errValidate) }}
func TestManifestValidateRejectsReleaseTagVersionMismatch(t *testing.T) { manifest := validTestManifest() manifest.ReleaseTag = "v0.3.0"
errValidate := manifest.Validate() if errValidate == nil { t.Fatal("Validate() error = nil, want version mismatch") } if !strings.Contains(errValidate.Error(), "resolves version") { t.Fatalf("Validate() error = %v, want version mismatch", errValidate) }}
func TestManifestFromReleaseBuildsPinnedManifest(t *testing.T) { manifest, errManifest := ManifestFromRelease( DefaultSource(), Plugin{ ID: "sample-provider", Name: "Sample Provider", Description: "Adds sample provider support.", Author: "author-name", Repository: "https://github.com/author-name/sample-provider", }, Release{TagName: "v0.2.0"}, ) if errManifest != nil { t.Fatalf("ManifestFromRelease() error = %v", errManifest) } if errValidate := manifest.Validate(); errValidate != nil { t.Fatalf("Validate() error = %v", errValidate) } if manifest.Version != "0.2.0" || manifest.ReleaseTag != "v0.2.0" { t.Fatalf("manifest version fields = %q/%q, want 0.2.0/v0.2.0", manifest.Version, manifest.ReleaseTag) }}
func TestManifestFromPluginBuildsDirectManifest(t *testing.T) { manifest, errManifest := ManifestFromPlugin( DefaultSource(), Plugin{ ID: "sample-provider", Name: "Sample Provider", Description: "Adds sample provider support.", Author: "author-name", Version: "0.4.0", Install: InstallPlan{ Type: InstallTypeDirect, Artifacts: []Artifact{{ GOOS: "linux", GOARCH: "amd64", URL: "https://downloads.example/sample-provider.zip", SHA256: "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", }}, }, }, ) if errManifest != nil { t.Fatalf("ManifestFromPlugin() error = %v", errManifest) } if errValidate := manifest.Validate(); errValidate != nil { t.Fatalf("Validate() error = %v", errValidate) } if manifest.SchemaVersion != SchemaVersionV2 || manifest.InstallType() != InstallTypeDirect || manifest.ReleaseTag != "" { t.Fatalf("manifest = %#v, want v2 direct without release tag", manifest) } if manifest.SourceURL != DefaultRegistryURL || len(manifest.Install.Artifacts) != 1 { t.Fatalf("manifest source/artifacts = %q/%d, want source URL and one pinned artifact", manifest.SourceURL, len(manifest.Install.Artifacts)) } artifact := manifest.Install.Artifacts[0] if artifact.GOOS != "linux" || artifact.GOARCH != "amd64" || artifact.URL != "https://downloads.example/sample-provider.zip" { t.Fatalf("manifest artifact = %#v, want pinned linux/amd64 artifact", artifact) }}
func TestManifestFromPluginRejectsArtifactQuery(t *testing.T) { _, errManifest := ManifestFromPlugin(DefaultSource(), Plugin{ ID: "sample-provider", Name: "Sample Provider", Description: "Sample", Author: "tester", Version: "1.0.0", Install: InstallPlan{Type: InstallTypeDirect, Artifacts: []Artifact{{ GOOS: "linux", GOARCH: "amd64", URL: "https://downloads.example/sample.zip?X-Amz-Signature=secret", SHA256: "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", }}}, }) if errManifest == nil { t.Fatal("ManifestFromPlugin() error = nil, want query rejection") } if strings.Contains(errManifest.Error(), "secret") { t.Fatalf("ManifestFromPlugin() error leaked query value: %v", errManifest) }}
func TestPluginArtifactsIncludesVersionArtifacts(t *testing.T) { plugin := Plugin{ ID: "sample-provider", Name: "Sample Provider", Description: "Adds sample provider support.", Author: "author-name", Version: "0.4.0", Install: InstallPlan{ Type: InstallTypeDirect, Artifacts: []Artifact{{ GOOS: "windows", GOARCH: "x64", URL: "https://downloads.example/sample-provider.zip", SHA256: "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", }}, }, Versions: []Version{{ Version: "0.3.0", Install: InstallPlan{ Type: InstallTypeDirect, Artifacts: []Artifact{{ GOOS: "linux", GOARCH: "aarch64", URL: "https://downloads.example/sample-provider-0.3.0.zip", SHA256: "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", }}, }, }}, }
artifacts := PluginArtifacts(plugin) if len(artifacts) != 2 || artifacts[0].GOARCH != "amd64" || artifacts[1].GOARCH != "arm64" { t.Fatalf("PluginArtifacts() = %#v, want normalized top-level and version artifacts", artifacts) }}
func validTestManifest() Manifest { return Manifest{ ID: "sample-provider", Name: "Sample Provider", Description: "Adds sample provider support.", Author: "author-name", Version: "0.2.0", ReleaseTag: "v0.2.0", Repository: "https://github.com/author-name/sample-provider", }}