Merge "Use bundle mock for document tests"
This commit is contained in:
commit
4bce04c86b
@ -15,22 +15,142 @@
|
|||||||
package document_test
|
package document_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/mock"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"opendev.org/airship/airshipctl/pkg/document"
|
"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) {
|
func TestDocHelpers(t *testing.T) {
|
||||||
require := require.New(t)
|
require := require.New(t)
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
|
|
||||||
fSys := testutil.SetupTestFs(t, "testdata/dochelper/valid/")
|
bundle := testBMHValidBundle(t)
|
||||||
bundle, err := document.NewBundle(fSys, "/")
|
|
||||||
require.NoError(err, "Building Bundle Failed")
|
|
||||||
require.NotNil(bundle)
|
require.NotNil(bundle)
|
||||||
|
|
||||||
t.Run("GetBMHNetworkData", func(t *testing.T) {
|
t.Run("GetBMHNetworkData", func(t *testing.T) {
|
||||||
@ -71,9 +191,7 @@ func TestDocHelpers(t *testing.T) {
|
|||||||
func TestDocHelpersNegativeCases(t *testing.T) {
|
func TestDocHelpersNegativeCases(t *testing.T) {
|
||||||
require := require.New(t)
|
require := require.New(t)
|
||||||
|
|
||||||
fSys := testutil.SetupTestFs(t, "testdata/dochelper/invalid/")
|
bundle := testBMHInvalidBundle(t)
|
||||||
bundle, err := document.NewBundle(fSys, "/")
|
|
||||||
require.NoError(err, "Building Bundle Failed")
|
|
||||||
require.NotNil(bundle)
|
require.NotNil(bundle)
|
||||||
|
|
||||||
t.Run("GetBMHNetworkData", func(t *testing.T) {
|
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