Files
airshipctl/pkg/bootstrap/cloudinit/cloud-init_test.go
Stanislav Egorov f7a2e33b8b Fixed TODO about error definitions
Use SelectOne to replace Select and additional checks.

Change-Id: I40b4780d62fa4b3a0e01cc54ef7dbe4b32a4763d
2020-04-06 11:23:42 -07:00

108 lines
3.0 KiB
Go

package cloudinit
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"sigs.k8s.io/kustomize/v3/pkg/types"
"opendev.org/airship/airshipctl/pkg/document"
)
func TestGetCloudData(t *testing.T) {
bundle, err := document.NewBundleByPath("testdata")
require.NoError(t, err, "Building Bundle Failed")
tests := []struct {
labelFilter string
expectedUserData []byte
expectedNetData []byte
expectedErr error
}{
{
labelFilter: "test=validdocset",
expectedUserData: []byte("cloud-init"),
expectedNetData: []byte("net-config"),
expectedErr: nil,
},
{
labelFilter: "test=ephemeralmissing",
expectedUserData: nil,
expectedNetData: nil,
expectedErr: document.ErrDocNotFound{
Selector: document.NewSelector().
ByLabel(document.EphemeralHostSelector).
ByKind("BareMetalHost"),
},
},
{
labelFilter: "test=ephemeralduplicate",
expectedUserData: nil,
expectedNetData: nil,
expectedErr: document.ErrMultiDocsFound{
Selector: document.NewSelector().
ByLabel(document.EphemeralHostSelector).
ByKind("BareMetalHost"),
},
},
{
labelFilter: "test=networkdatabadpointer",
expectedUserData: nil,
expectedNetData: nil,
expectedErr: document.ErrDocNotFound{
Selector: document.NewSelector().
ByKind("Secret").
ByNamespace("networkdatabadpointer-missing").
ByName("networkdatabadpointer-missing"),
},
},
{
labelFilter: "test=networkdatamalformed",
expectedUserData: nil,
expectedNetData: nil,
expectedErr: ErrDataNotSupplied{DocName: "networkdatamalformed-malformed", Key: networkDataKey},
},
{
labelFilter: "test=networkdatamissing",
expectedUserData: nil,
expectedNetData: nil,
expectedErr: types.NoFieldError{Field: "spec.networkData.name"},
},
{
labelFilter: "test=userdatamalformed",
expectedUserData: nil,
expectedNetData: nil,
expectedErr: ErrDataNotSupplied{DocName: "userdatamalformed-somesecret", Key: userDataKey},
},
{
labelFilter: "test=userdatamissing",
expectedUserData: nil,
expectedNetData: nil,
expectedErr: document.ErrDocNotFound{
Selector: document.NewSelector().
ByKind("Secret").
ByLabel(document.EphemeralUserDataSelector),
},
},
}
for _, tt := range tests {
// prune the bundle down using the label filter for the specific test
selector := document.NewSelector().ByLabel(tt.labelFilter)
filteredBundle, err := bundle.SelectBundle(selector)
require.NoError(t, err, "Building filtered bundle for %s failed", tt.labelFilter)
// ensure each test case filter has at least one document
docs, err := filteredBundle.GetAllDocuments()
require.NoError(t, err, "GetAllDocuments failed")
require.NotZero(t, docs)
actualUserData, actualNetData, actualErr := GetCloudData(filteredBundle)
assert.Equal(t, tt.expectedUserData, actualUserData)
assert.Equal(t, tt.expectedNetData, actualNetData)
assert.Equal(t, tt.expectedErr, actualErr)
}
}