Add tests
This commit is contained in:
parent
8e005c9ee1
commit
15b4cc25bf
@ -7,7 +7,6 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type BoxVersionProvider struct {
|
type BoxVersionProvider struct {
|
||||||
// provider *vagrant_server.BoxMetadata_Version_Provider
|
|
||||||
Name string
|
Name string
|
||||||
Url string
|
Url string
|
||||||
Checksum string
|
Checksum string
|
||||||
@ -15,9 +14,8 @@ type BoxVersionProvider struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type BoxVersion struct {
|
type BoxVersion struct {
|
||||||
// version *vagrant_server.BoxMetadata_Version
|
|
||||||
Version string
|
Version string
|
||||||
State string
|
Status string
|
||||||
Description string
|
Description string
|
||||||
Providers []*BoxVersionProvider
|
Providers []*BoxVersionProvider
|
||||||
}
|
}
|
||||||
@ -43,7 +41,6 @@ type BoxMetadata struct {
|
|||||||
Name string
|
Name string
|
||||||
Description string
|
Description string
|
||||||
Versions []*BoxVersion
|
Versions []*BoxVersion
|
||||||
// metadata *vagrant_server.BoxMetadata
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func LoadBoxMetadata(data []byte) (*BoxMetadata, error) {
|
func LoadBoxMetadata(data []byte) (*BoxMetadata, error) {
|
||||||
|
|||||||
104
internal/core/box_metadata_test.go
Normal file
104
internal/core/box_metadata_test.go
Normal file
@ -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)
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user