mirror of https://github.com/artifacthub/hub.git
106 lines
3.1 KiB
Go
106 lines
3.1 KiB
Go
package helmplugin
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/artifacthub/hub/internal/hub"
|
|
"github.com/artifacthub/hub/internal/pkg"
|
|
"github.com/artifacthub/hub/internal/tracker/source"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestTrackerSource(t *testing.T) {
|
|
t.Run("no packages in path", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
// Setup services and expectations
|
|
sw := source.NewTestsServicesWrapper()
|
|
i := &hub.TrackerSourceInput{
|
|
Repository: &hub.Repository{},
|
|
BasePath: "testdata/path1",
|
|
Svc: sw.Svc,
|
|
}
|
|
|
|
// Run test and check expectations
|
|
packages, err := NewTrackerSource(i).GetPackagesAvailable()
|
|
assert.Equal(t, map[string]*hub.Package{}, packages)
|
|
assert.NoError(t, err)
|
|
sw.AssertExpectations(t)
|
|
})
|
|
|
|
t.Run("invalid package metadata file", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
// Setup services and expectations
|
|
sw := source.NewTestsServicesWrapper()
|
|
i := &hub.TrackerSourceInput{
|
|
Repository: &hub.Repository{},
|
|
BasePath: "testdata/path2",
|
|
Svc: sw.Svc,
|
|
}
|
|
expectedErr := "error getting plugin metadata (path: testdata/path2/plugin.yaml): error unmarshaling plugin metadata file: error converting YAML to JSON: yaml: line 3: found unexpected end of stream"
|
|
sw.Ec.On("Append", i.Repository.RepositoryID, expectedErr).Return()
|
|
|
|
// Run test and check expectations
|
|
packages, err := NewTrackerSource(i).GetPackagesAvailable()
|
|
assert.Equal(t, map[string]*hub.Package{}, packages)
|
|
assert.NoError(t, err)
|
|
sw.AssertExpectations(t)
|
|
})
|
|
|
|
t.Run("invalid version in package metadata file", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
// Setup services and expectations
|
|
sw := source.NewTestsServicesWrapper()
|
|
i := &hub.TrackerSourceInput{
|
|
Repository: &hub.Repository{},
|
|
BasePath: "testdata/path3",
|
|
Svc: sw.Svc,
|
|
}
|
|
expectedErr := "error getting plugin metadata (path: testdata/path3/plugin.yaml): error validating plugin metadata: 1 error occurred:\n\t* invalid version (semver expected): invalid semantic version\n\n"
|
|
sw.Ec.On("Append", i.Repository.RepositoryID, expectedErr).Return()
|
|
|
|
// Run test and check expectations
|
|
packages, err := NewTrackerSource(i).GetPackagesAvailable()
|
|
assert.Equal(t, map[string]*hub.Package{}, packages)
|
|
assert.NoError(t, err)
|
|
sw.AssertExpectations(t)
|
|
})
|
|
|
|
t.Run("one package returned, no errors", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
// Setup services and expectations
|
|
sw := source.NewTestsServicesWrapper()
|
|
i := &hub.TrackerSourceInput{
|
|
Repository: &hub.Repository{},
|
|
BasePath: "testdata/path4",
|
|
Svc: sw.Svc,
|
|
}
|
|
|
|
// Run test and check expectations
|
|
p := &hub.Package{
|
|
Name: "test-plugin",
|
|
Keywords: []string{"helm", "helm-plugin"},
|
|
Description: "This is a sample test plugin",
|
|
Version: "0.1.0",
|
|
Readme: "This is the readme file of the plugin\n",
|
|
Repository: i.Repository,
|
|
License: "Apache-2.0",
|
|
Links: []*hub.Link{
|
|
{
|
|
Name: "Source",
|
|
URL: i.Repository.URL,
|
|
},
|
|
},
|
|
}
|
|
packages, err := NewTrackerSource(i).GetPackagesAvailable()
|
|
assert.Equal(t, map[string]*hub.Package{
|
|
pkg.BuildKey(p): p,
|
|
}, packages)
|
|
assert.NoError(t, err)
|
|
sw.AssertExpectations(t)
|
|
})
|
|
}
|