Add tests

This commit is contained in:
sophia 2021-11-04 14:16:20 -05:00 committed by Paul Hinze
parent 8e005c9ee1
commit 15b4cc25bf
No known key found for this signature in database
GPG Key ID: B69DEDF2D55501C0
2 changed files with 105 additions and 4 deletions

View File

@ -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) {

View 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)
}