![Ian Howell](/assets/img/avatar_default.png)
This change causes the linter to be a bit more complainy. The hope is that this will cut down on some of the more pedantic issues being caught in code reviews, and thus reduce the overall time a change spends in the review process. This change includes various changes to the codebase to bring it up to the new standards. Change-Id: I570d304bca5554404354f972d8a2743279a0171b
100 lines
3.2 KiB
Go
100 lines
3.2 KiB
Go
package document_test
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"opendev.org/airship/airshipctl/pkg/document"
|
|
"opendev.org/airship/airshipctl/testutil"
|
|
)
|
|
|
|
func TestDocument(t *testing.T) {
|
|
require := require.New(t)
|
|
assert := assert.New(t)
|
|
|
|
// the easiest way to construct a bunch of documents
|
|
// is by manufacturing a bundle
|
|
//
|
|
// alanmeadows(TODO): at some point
|
|
// refactoring this so there isn't a reliance
|
|
// on a bundle might be useful
|
|
fSys := testutil.SetupTestFs(t, "testdata")
|
|
bundle, err := document.NewBundle(fSys, "/", "/")
|
|
require.NoError(err, "Building Bundle Failed")
|
|
require.NotNil(bundle)
|
|
|
|
t.Run("GetName", func(t *testing.T) {
|
|
docs, err := bundle.GetAllDocuments()
|
|
require.NoError(err, "Unexpected error trying to GetAllDocuments")
|
|
|
|
nameList := []string{}
|
|
|
|
for _, doc := range docs {
|
|
nameList = append(nameList, doc.GetName())
|
|
}
|
|
|
|
assert.Contains(nameList, "tiller-deploy", "Could not find expected name")
|
|
})
|
|
|
|
t.Run("AsYAML", func(t *testing.T) {
|
|
doc, err := bundle.GetByName("some-random-deployment-we-will-filter")
|
|
require.NoError(err, "Unexpected error trying to GetByName for AsYAML Test")
|
|
|
|
// see if we can marshal it while we're here for coverage
|
|
// as this is a dependency for AsYAML
|
|
json, err := doc.MarshalJSON()
|
|
require.NoError(err, "Unexpected error trying to MarshalJSON()")
|
|
assert.NotNil(json)
|
|
|
|
// get it as yaml
|
|
yaml, err := doc.AsYAML()
|
|
require.NoError(err, "Unexpected error trying to AsYAML()")
|
|
|
|
// convert the bytes into a string for comparison
|
|
//
|
|
// alanmeadows(NOTE): marshal can reorder things
|
|
// in the yaml, and does not return document beginning
|
|
// or end markers that may of been in the source so
|
|
// the FixtureInitiallyIgnored has been altered to
|
|
// look more or less how unmarshalling it would look
|
|
s := string(yaml)
|
|
fileData, err := fSys.ReadFile("/initially_ignored.yaml")
|
|
require.NoError(err, "Unexpected error reading initially_ignored.yaml file")
|
|
|
|
// increase the chance of a match by removing any \n suffix on both actual
|
|
// and expected
|
|
assert.Equal(strings.TrimRight(s, "\n"), strings.TrimRight(string(fileData), "\n"))
|
|
})
|
|
|
|
t.Run("GetString", func(t *testing.T) {
|
|
doc, err := bundle.GetByName("some-random-deployment-we-will-filter")
|
|
require.NoError(err, "Unexpected error trying to GetByName")
|
|
|
|
appLabelMatch, err := doc.GetString("spec.selector.matchLabels.app")
|
|
require.NoError(err, "Unexpected error trying to GetString from document")
|
|
|
|
assert.Equal(appLabelMatch, "some-random-deployment-we-will-filter")
|
|
})
|
|
|
|
t.Run("GetNamespace", func(t *testing.T) {
|
|
doc, err := bundle.GetByName("some-random-deployment-we-will-filter")
|
|
require.NoError(err, "Unexpected error trying to GetByName")
|
|
|
|
assert.Equal("foobar", doc.GetNamespace())
|
|
})
|
|
|
|
t.Run("GetStringSlice", func(t *testing.T) {
|
|
doc, err := bundle.GetByName("some-random-deployment-we-will-filter")
|
|
require.NoError(err, "Unexpected error trying to GetByName")
|
|
s := []string{"foobar"}
|
|
|
|
gotSlice, err := doc.GetStringSlice("spec.template.spec.containers[0].args")
|
|
require.NoError(err, "Unexpected error trying to GetStringSlice")
|
|
|
|
assert.Equal(s, gotSlice)
|
|
})
|
|
}
|