81 lines
2.0 KiB
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))
|
|
}
|