gitops-engine/pkg/cache/resource_test.go

81 lines
2.0 KiB
Go

package cache
import (
"testing"
"github.com/stretchr/testify/assert"
"k8s.io/client-go/rest"
)
var cacheTest = NewClusterCache(&rest.Config{})
func TestIsParentOf(t *testing.T) {
child := cacheTest.newResource(mustToUnstructured(testPod1()))
parent := cacheTest.newResource(mustToUnstructured(testRS()))
grandParent := cacheTest.newResource(mustToUnstructured(testDeploy()))
assert.True(t, parent.isParentOf(child))
assert.False(t, grandParent.isParentOf(child))
}
func TestIsParentOfSameKindDifferentGroupAndUID(t *testing.T) {
rs := testRS()
rs.APIVersion = "somecrd.io/v1"
rs.SetUID("123")
child := cacheTest.newResource(mustToUnstructured(testPod1()))
invalidParent := cacheTest.newResource(mustToUnstructured(rs))
assert.False(t, invalidParent.isParentOf(child))
}
func TestIsServiceParentOfEndPointWithTheSameName(t *testing.T) {
nonMatchingNameEndPoint := cacheTest.newResource(strToUnstructured(`
apiVersion: v1
kind: Endpoints
metadata:
name: not-matching-name
namespace: default
`))
matchingNameEndPoint := cacheTest.newResource(strToUnstructured(`
apiVersion: v1
kind: Endpoints
metadata:
name: helm-guestbook
namespace: default
`))
parent := cacheTest.newResource(testService)
assert.True(t, parent.isParentOf(matchingNameEndPoint))
assert.Equal(t, parent.Ref.UID, matchingNameEndPoint.OwnerRefs[0].UID)
assert.False(t, parent.isParentOf(nonMatchingNameEndPoint))
}
func TestIsServiceAccountParentOfSecret(t *testing.T) {
serviceAccount := cacheTest.newResource(strToUnstructured(`
apiVersion: v1
kind: ServiceAccount
metadata:
name: default
namespace: default
uid: '123'
secrets:
- name: default-token-123
`))
tokenSecret := cacheTest.newResource(strToUnstructured(`
apiVersion: v1
kind: Secret
metadata:
annotations:
kubernetes.io/service-account.name: default
kubernetes.io/service-account.uid: '123'
name: default-token-123
namespace: default
uid: '345'
type: kubernetes.io/service-account-token
`))
assert.True(t, serviceAccount.isParentOf(tokenSecret))
}