diff --git a/internal/core/box_metadata.go b/internal/core/box_metadata.go index b1a5e2153..0610f60ac 100644 --- a/internal/core/box_metadata.go +++ b/internal/core/box_metadata.go @@ -7,7 +7,6 @@ import ( ) type BoxVersionProvider struct { - // provider *vagrant_server.BoxMetadata_Version_Provider Name string Url string Checksum string @@ -15,9 +14,8 @@ type BoxVersionProvider struct { } type BoxVersion struct { - // version *vagrant_server.BoxMetadata_Version Version string - State string + Status string Description string Providers []*BoxVersionProvider } @@ -43,7 +41,6 @@ type BoxMetadata struct { Name string Description string Versions []*BoxVersion - // metadata *vagrant_server.BoxMetadata } func LoadBoxMetadata(data []byte) (*BoxMetadata, error) { diff --git a/internal/core/box_metadata_test.go b/internal/core/box_metadata_test.go new file mode 100644 index 000000000..3a64ab5ad --- /dev/null +++ b/internal/core/box_metadata_test.go @@ -0,0 +1,104 @@ +package core + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +var rawMetadata = `{ + "description": "something about a box", + "name": "test/box", + "versions": [{ + "version": "1.2.3", + "status": "active", + "description": "does things", + "providers": [{ + "name": "virtualbox", + "url": "http://doesnotexist" + }, + { + "name": "vmware", + "url": "http://doesnotexist" + } + ] + }, + { + "version": "0.1.2", + "status": "active", + "description": "does not do things", + "providers": [{ + "name": "virtualbox", + "url": "http://doesnotexist" + }] + } + ] +}` + +func loadMetadata(t *testing.T, d []byte) *BoxMetadata { + metadata, err := LoadBoxMetadata(d) + if err != nil { + t.Errorf("Failed to load metadata") + } + return metadata +} + +func loadVersion(t *testing.T, d []byte, v string) *BoxVersion { + metadata := loadMetadata(t, d) + version, err := metadata.Version(v) + if err != nil { + t.Errorf("Failed to get version") + } + return version +} + +func loadProvider(t *testing.T, d []byte, v string, p string) *BoxVersionProvider { + version := loadVersion(t, d, v) + provider, err := version.Provider(p) + if err != nil { + t.Errorf("Failed to get provider") + } + return provider +} + +func TestLoadMetadata(t *testing.T) { + metadata := loadMetadata(t, []byte(rawMetadata)) + if metadata.Name != "test/box" { + t.Errorf("Could not parse box info") + } +} + +func TestListVersions(t *testing.T) { + metadata := loadMetadata(t, []byte(rawMetadata)) + + versions, err := metadata.ListVersions() + if err != nil { + t.Errorf("Failed to list versions") + } + require.Contains(t, versions, "1.2.3") + require.Contains(t, versions, "0.1.2") +} + +func TestGetVersion(t *testing.T) { + version := loadVersion(t, []byte(rawMetadata), "1.2.3") + require.NotNil(t, version) + neVersion := loadVersion(t, []byte(rawMetadata), "0.0.0") + require.Nil(t, neVersion) +} + +func TestVersionListProviders(t *testing.T) { + version := loadVersion(t, []byte(rawMetadata), "1.2.3") + providers, err := version.ListProviders() + if err != nil { + t.Errorf("Failed to list providers") + } + require.Contains(t, providers, "virtualbox") + require.Contains(t, providers, "vmware") +} + +func TestVersionGetProvider(t *testing.T) { + provider := loadProvider(t, []byte(rawMetadata), "1.2.3", "virtualbox") + require.NotNil(t, provider) + neProvider := loadProvider(t, []byte(rawMetadata), "1.2.3", "idontexist") + require.Nil(t, neProvider) +}