Merge "Use bundle mock for document tests"
This commit is contained in:
commit
4bce04c86b
@ -15,22 +15,142 @@
|
||||
package document_test
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/mock"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"opendev.org/airship/airshipctl/pkg/document"
|
||||
"opendev.org/airship/airshipctl/testutil"
|
||||
testdoc "opendev.org/airship/airshipctl/testutil/document"
|
||||
)
|
||||
|
||||
const (
|
||||
bmhConfig = `apiVersion: metal3.io/v1alpha1
|
||||
kind: BareMetalHost
|
||||
metadata:
|
||||
labels:
|
||||
airshipit.org/ephemeral-node: "true"
|
||||
name: master-0
|
||||
spec:
|
||||
online: true
|
||||
bootMACAddress: 00:3b:8b:0c:ec:8b
|
||||
bmc:
|
||||
address: redfish+https://192.168.111.1/v1/Redfish/Foo/Bar
|
||||
credentialsName: master-0-bmc
|
||||
networkData:
|
||||
name: master-0-networkdata
|
||||
namespace: metal3
|
||||
`
|
||||
networkConfig = `apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: master-0-networkdata
|
||||
namespace: metal3
|
||||
type: Opaque
|
||||
data:
|
||||
networkData: c29tZSBuZXR3b3JrIGRhdGEK
|
||||
`
|
||||
credsConfig = `apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: master-0-bmc
|
||||
namespace: metal3
|
||||
type: Opaque
|
||||
stringData:
|
||||
username: username
|
||||
password: password
|
||||
`
|
||||
bmhConfigInvalid = `apiVersion: metal3.io/v1alpha1
|
||||
kind: BareMetalHost
|
||||
metadata:
|
||||
labels:
|
||||
airshipit.org/ephemeral-node: "true"
|
||||
name: master-0
|
||||
spec:
|
||||
online: true
|
||||
bootMACAddress: 00:3b:8b:0c:ec:8b
|
||||
bmc:
|
||||
credentialsName: master-0-bmc
|
||||
networkData:
|
||||
name: master-0-networkdata
|
||||
namespace: metal3
|
||||
`
|
||||
networkConfigInvalid = `apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: master-0-networkdata
|
||||
namespace: metal3
|
||||
type: Opaque
|
||||
`
|
||||
credsConfigInvalid = `apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: master-0-bmc-invalid
|
||||
namespace: metal3
|
||||
type: Opaque
|
||||
stringData:
|
||||
username: username
|
||||
password: password
|
||||
`
|
||||
)
|
||||
|
||||
func testBMHValidBundle(t *testing.T) document.Bundle {
|
||||
bundle := &testdoc.MockBundle{}
|
||||
bmhConfigDoc, err := document.NewDocumentFromBytes([]byte(bmhConfig))
|
||||
require.NoError(t, err)
|
||||
networkSecretDoc, err := document.NewDocumentFromBytes([]byte(networkConfig))
|
||||
require.NoError(t, err)
|
||||
credsSecretDoc, err := document.NewDocumentFromBytes([]byte(credsConfig))
|
||||
require.NoError(t, err)
|
||||
|
||||
bundle.On("SelectOne", mock.MatchedBy(func(selector document.Selector) bool {
|
||||
return selector.Kind == "BareMetalHost"
|
||||
})).
|
||||
Return(bmhConfigDoc, nil)
|
||||
bundle.On("SelectOne", mock.MatchedBy(func(selector document.Selector) bool {
|
||||
return selector.Kind == "Secret" && selector.Name == "master-0-networkdata"
|
||||
})).
|
||||
Return(networkSecretDoc, nil)
|
||||
bundle.On("SelectOne", mock.MatchedBy(func(selector document.Selector) bool {
|
||||
return selector.Kind == "Secret" && selector.Name == "master-0-bmc"
|
||||
})).
|
||||
Return(credsSecretDoc, nil)
|
||||
|
||||
return bundle
|
||||
}
|
||||
|
||||
func testBMHInvalidBundle(t *testing.T) document.Bundle {
|
||||
bundle := &testdoc.MockBundle{}
|
||||
bmhConfigDocInvalid, err := document.NewDocumentFromBytes([]byte(bmhConfigInvalid))
|
||||
require.NoError(t, err)
|
||||
networkSecretDocInvalid, err := document.NewDocumentFromBytes([]byte(networkConfigInvalid))
|
||||
require.NoError(t, err)
|
||||
credsSecretDocInvalid, err := document.NewDocumentFromBytes([]byte(credsConfigInvalid))
|
||||
require.NoError(t, err)
|
||||
|
||||
bundle.On("SelectOne", mock.MatchedBy(func(selector document.Selector) bool {
|
||||
return selector.Kind == "BareMetalHost"
|
||||
})).
|
||||
Return(bmhConfigDocInvalid, nil)
|
||||
bundle.On("SelectOne", mock.MatchedBy(func(selector document.Selector) bool {
|
||||
return selector.Kind == "Secret" && selector.Name == "master-0-networkdata"
|
||||
})).
|
||||
Return(networkSecretDocInvalid, nil)
|
||||
bundle.On("SelectOne", mock.MatchedBy(func(selector document.Selector) bool {
|
||||
return selector.Kind == "Secret" && selector.Name == "master-0-bmc"
|
||||
})).
|
||||
Return(credsSecretDocInvalid, errors.New("error"))
|
||||
|
||||
return bundle
|
||||
}
|
||||
|
||||
func TestDocHelpers(t *testing.T) {
|
||||
require := require.New(t)
|
||||
assert := assert.New(t)
|
||||
|
||||
fSys := testutil.SetupTestFs(t, "testdata/dochelper/valid/")
|
||||
bundle, err := document.NewBundle(fSys, "/")
|
||||
require.NoError(err, "Building Bundle Failed")
|
||||
bundle := testBMHValidBundle(t)
|
||||
require.NotNil(bundle)
|
||||
|
||||
t.Run("GetBMHNetworkData", func(t *testing.T) {
|
||||
@ -71,9 +191,7 @@ func TestDocHelpers(t *testing.T) {
|
||||
func TestDocHelpersNegativeCases(t *testing.T) {
|
||||
require := require.New(t)
|
||||
|
||||
fSys := testutil.SetupTestFs(t, "testdata/dochelper/invalid/")
|
||||
bundle, err := document.NewBundle(fSys, "/")
|
||||
require.NoError(err, "Building Bundle Failed")
|
||||
bundle := testBMHInvalidBundle(t)
|
||||
require.NotNil(bundle)
|
||||
|
||||
t.Run("GetBMHNetworkData", func(t *testing.T) {
|
||||
|
@ -1,15 +0,0 @@
|
||||
---
|
||||
apiVersion: metal3.io/v1alpha1
|
||||
kind: BareMetalHost
|
||||
metadata:
|
||||
labels:
|
||||
airshipit.org/ephemeral-node: "true"
|
||||
name: master-0
|
||||
spec:
|
||||
online: true
|
||||
bootMACAddress: 00:3b:8b:0c:ec:8b
|
||||
bmc:
|
||||
credentialsName: master-0-bmc
|
||||
networkData:
|
||||
name: master-0-networkdata
|
||||
namespace: metal3
|
@ -1,3 +0,0 @@
|
||||
resources:
|
||||
- baremetalhost.yaml
|
||||
- secret.yaml
|
@ -1,26 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
labels:
|
||||
airshipit.org/ephemeral-user-data: "true"
|
||||
name: ephemeral-user-data
|
||||
type: Opaque
|
||||
stringData:
|
||||
userData: cloud-init
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: master-0-bmc-invalid
|
||||
namespace: metal3
|
||||
type: Opaque
|
||||
stringData:
|
||||
username: username
|
||||
password: password
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: master-0-networkdata
|
||||
namespace: metal3
|
||||
type: Opaque
|
@ -1,16 +0,0 @@
|
||||
---
|
||||
apiVersion: metal3.io/v1alpha1
|
||||
kind: BareMetalHost
|
||||
metadata:
|
||||
labels:
|
||||
airshipit.org/ephemeral-node: "true"
|
||||
name: master-0
|
||||
spec:
|
||||
online: true
|
||||
bootMACAddress: 00:3b:8b:0c:ec:8b
|
||||
bmc:
|
||||
address: redfish+https://192.168.111.1/v1/Redfish/Foo/Bar
|
||||
credentialsName: master-0-bmc
|
||||
networkData:
|
||||
name: master-0-networkdata
|
||||
namespace: metal3
|
@ -1,3 +0,0 @@
|
||||
resources:
|
||||
- baremetalhost.yaml
|
||||
- secret.yaml
|
@ -1,28 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
labels:
|
||||
airshipit.org/ephemeral-user-data: "true"
|
||||
name: ephemeral-user-data
|
||||
type: Opaque
|
||||
stringData:
|
||||
userData: cloud-init
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: master-0-bmc
|
||||
namespace: metal3
|
||||
type: Opaque
|
||||
stringData:
|
||||
username: username
|
||||
password: password
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: master-0-networkdata
|
||||
namespace: metal3
|
||||
type: Opaque
|
||||
data:
|
||||
networkData: c29tZSBuZXR3b3JrIGRhdGEK
|
Loading…
Reference in New Issue
Block a user