
This commit also introduces a dochelper concept. This provides some convenience methods to the document pkg that help extract data from known document types as well as walk document relationships to discover related information such as BMC credentials for baremetal hosts. Once merged, a follow up patchset will leverage these within the cloud-init code to deduplicate some of these lookups. Change-Id: Ie6a770ce4b34adbea30281917f0cb2fdc460b4fb
56 lines
1.7 KiB
Go
56 lines
1.7 KiB
Go
package document_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"opendev.org/airship/airshipctl/pkg/document"
|
|
"opendev.org/airship/airshipctl/testutil"
|
|
)
|
|
|
|
func TestDocHelpers(t *testing.T) {
|
|
require := require.New(t)
|
|
assert := assert.New(t)
|
|
|
|
fSys := testutil.SetupTestFs(t, "testdata/dochelper")
|
|
bundle, err := document.NewBundle(fSys, "/", "/")
|
|
require.NoError(err, "Building Bundle Failed")
|
|
require.NotNil(bundle)
|
|
|
|
t.Run("GetBMHNetworkData", func(t *testing.T) {
|
|
// retrieve our single bmh in the dataset
|
|
selector := document.NewSelector().ByKind("BareMetalHost")
|
|
doc, err := bundle.SelectOne(selector)
|
|
require.NoError(err)
|
|
|
|
networkData, err := document.GetBMHNetworkData(doc, bundle)
|
|
require.NoError(err, "Unexpected error trying to GetBMHNetworkData")
|
|
assert.Equal(networkData, "some network data")
|
|
})
|
|
|
|
t.Run("GetBMHBMCAddress", func(t *testing.T) {
|
|
// retrieve our single bmh in the dataset
|
|
selector := document.NewSelector().ByKind("BareMetalHost")
|
|
doc, err := bundle.SelectOne(selector)
|
|
require.NoError(err)
|
|
|
|
bmcAddress, err := document.GetBMHBMCAddress(doc)
|
|
require.NoError(err, "Unexpected error trying to GetBMHBMCAddress")
|
|
assert.Equal(bmcAddress, "redfish+https://192.168.111.1/v1/Redfish/Foo/Bar")
|
|
})
|
|
|
|
t.Run("GetBMHBMCCredentials", func(t *testing.T) {
|
|
// retrieve our single bmh in the dataset
|
|
selector := document.NewSelector().ByKind("BareMetalHost")
|
|
doc, err := bundle.SelectOne(selector)
|
|
require.NoError(err)
|
|
|
|
bmcUsername, bmcPassword, err := document.GetBMHBMCCredentials(doc, bundle)
|
|
require.NoError(err, "Unexpected error trying to GetBMHBMCCredentials")
|
|
assert.Equal(bmcUsername, "username")
|
|
assert.Equal(bmcPassword, "password")
|
|
})
|
|
}
|