Skip to content

Commit

Permalink
Simplify as unit tests
Browse files Browse the repository at this point in the history
Signed-off-by: Jose Luis Vazquez Gonzalez <josvaz@vmware.com>
  • Loading branch information
Jose Luis Vazquez Gonzalez committed Mar 3, 2023
1 parent b866e6a commit 5325e94
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 141 deletions.
80 changes: 0 additions & 80 deletions integration/controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,16 @@ import (

"github.com/onsi/gomega/types"
v1 "k8s.io/api/core/v1"

"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/fields"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/scheme"
corev1 "k8s.io/client-go/kubernetes/typed/core/v1"

certUtil "k8s.io/client-go/util/cert"
"k8s.io/client-go/util/keyutil"

"k8s.io/client-go/informers"

ssv1alpha1 "github.com/bitnami-labs/sealed-secrets/pkg/apis/sealedsecrets/v1alpha1"
ssclient "github.com/bitnami-labs/sealed-secrets/pkg/client/clientset/versioned"
ssinformers "github.com/bitnami-labs/sealed-secrets/pkg/client/informers/externalversions"
"github.com/bitnami-labs/sealed-secrets/pkg/controller"
"github.com/bitnami-labs/sealed-secrets/pkg/crypto"

. "github.com/onsi/ginkgo/v2"
Expand Down Expand Up @@ -627,76 +620,3 @@ var _ = Describe("controller --version", func() {
Expect(output.String()).Should(MatchRegexp("^controller version: (v[0-9]+\\.[0-9]+\\.[0-9]+|[0-9a-f]{40})(\\+dirty)?"))
})
})

var _ = Describe("new controller", func() {
var ssctl *controller.Controller
var clientset *kubernetes.Clientset
var c *corev1.CoreV1Client
var ssc ssclient.Interface
var ns string
var ssinformer ssinformers.SharedInformerFactory
var sinformer informers.SharedInformerFactory
var keyRegistry *controller.KeyRegistry
var (
ctx context.Context
cancelLog context.CancelFunc
)

Context("with default setup", func() {
BeforeEach(func() {
ctx, cancelLog = context.WithCancel(context.Background())

conf := clusterConfigOrDie()
clientset = clientSetOrDie(conf)
c = corev1.NewForConfigOrDie(conf)
ssc = ssclient.NewForConfigOrDie(conf)
ns = createNsOrDie(ctx, c, "create")
var tweakopts func(*metav1.ListOptions)
sinformer = controller.InitSecretInformerFactory(clientset, ns, tweakopts, true)
ssinformer = ssinformers.NewFilteredSharedInformerFactory(ssc, 0, ns, tweakopts)
keyRegistry = keyRegisterOrDie(ctx, clientset, ns)
})

AfterEach(func() {
deleteNsOrDie(ctx, c, ns)
cancelLog()
})

It("works as expected", func() {
var err error
Expect(sinformer).NotTo(BeNil())
ssctl, err = controller.NewController(clientset, ssc, ssinformer, sinformer, keyRegistry)
Expect(ssctl).ToNot(BeNil())
Expect(err).ToNot(HaveOccurred())
})
})

Context("without secret listener", func() {
BeforeEach(func() {
ctx, cancelLog = context.WithCancel(context.Background())

conf := clusterConfigOrDie()
clientset = clientSetOrDie(conf)
c = corev1.NewForConfigOrDie(conf)
ssc = ssclient.NewForConfigOrDie(conf)
ns = createNsOrDie(ctx, c, "create")
var tweakopts func(*metav1.ListOptions)
sinformer = controller.InitSecretInformerFactory(clientset, ns, tweakopts, false)
ssinformer = ssinformers.NewFilteredSharedInformerFactory(ssc, 0, ns, tweakopts)
keyRegistry = keyRegisterOrDie(ctx, clientset, ns)
})

AfterEach(func() {
deleteNsOrDie(ctx, c, ns)
cancelLog()
})

It("still works", func() {
var err error
Expect(sinformer).To(BeNil())
ssctl, err = controller.NewController(clientset, ssc, ssinformer, sinformer, keyRegistry)
Expect(ssctl).ToNot(BeNil())
Expect(err).ToNot(HaveOccurred())
})
})
})
25 changes: 0 additions & 25 deletions integration/integration_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (
"bufio"
"bytes"
"context"
"crypto/rand"
"flag"
"fmt"
"io"
Expand All @@ -17,14 +16,12 @@ import (
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/scheme"
corev1 "k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"

ssv1alpha1 "github.com/bitnami-labs/sealed-secrets/pkg/apis/sealedsecrets/v1alpha1"
"github.com/bitnami-labs/sealed-secrets/pkg/controller"

. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
Expand All @@ -43,10 +40,8 @@ func clusterConfigOrDie() *rest.Config {
var err error

if *kubeconfig != "" {
fmt.Fprintf(GinkgoWriter, "config from kubectl\n")
config, err = clientcmd.BuildConfigFromFlags("", *kubeconfig)
} else {
fmt.Fprintf(GinkgoWriter, "in cluster config\n")
config, err = rest.InClusterConfig()
}
if err != nil {
Expand Down Expand Up @@ -189,26 +184,6 @@ func runKubesealWith(flags []string, input runtime.Object, opts ...runAppOpt) (r
return outputObj, nil
}

func clientSetOrDie(config *rest.Config) *kubernetes.Clientset {
cs, err := kubernetes.NewForConfig(config)
if err != nil {
panic("failed to create Kubernetes clientset" + err.Error())
}
return cs
}

func keyRegisterOrDie(ctx context.Context, clientset *kubernetes.Clientset, ns string) *controller.KeyRegistry {
keyLabel := controller.SealedSecretsKeyLabel
prefix := "test-keys"
testKeySize := 4096
fmt.Fprintf(GinkgoWriter, "initiating key registry\n")
keyRegistry, err := controller.InitKeyRegistry(ctx, clientset, rand.Reader, ns, prefix, keyLabel, testKeySize)
if err != nil {
panic("failed to provision key registry" + err.Error())
}
return keyRegistry
}

func TestE2e(t *testing.T) {
RegisterFailHandler(Fail)
RunSpecs(t, "sealed-secrets integration tests")
Expand Down
51 changes: 27 additions & 24 deletions pkg/controller/controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ import (
ssinformers "github.com/bitnami-labs/sealed-secrets/pkg/client/informers/externalversions"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/client-go/kubernetes/fake"

ssfake "github.com/bitnami-labs/sealed-secrets/pkg/client/clientset/versioned/fake"
)

func TestConvert2SealedSecretBadType(t *testing.T) {
Expand Down Expand Up @@ -56,44 +57,46 @@ func TestConvert2SealedSecretPassThrough(t *testing.T) {
func TestDefaultConfigDoesNotSkipRecreate(t *testing.T) {
ns := "some-namespace"
var tweakopts func(*metav1.ListOptions)
conf := clusterConfig(t)
clientset := clientSetOrDie(conf)
ssc := ssclient.NewForConfigOrDie(conf)
sinformer := InitSecretInformerFactory(clientset, ns, tweakopts, false /* skip-recreate */)
clientset := fake.NewSimpleClientset()
ssc := ssfake.NewSimpleClientset()
sinformer := initSecretInformerFactory(clientset, ns, tweakopts, false /* skip-recreate */)
if sinformer == nil {
t.Fatalf("sinformer %v want non nil", sinformer)
}
ssinformer := ssinformers.NewFilteredSharedInformerFactory(ssc, 0, ns, tweakopts)
keyRegistry := keyRegister(t, context.Background(), clientset, ns)
keyRegistry := testKeyRegister(t, context.Background(), clientset, ns)

_, got := NewController(clientset, ssc, ssinformer, sinformer, keyRegistry)
if got != nil {
t.Fatalf("got %v want %v", got, nil)
}

}

func clusterConfig(t *testing.T) *rest.Config {
t.Helper()

var config *rest.Config
var err error

if *kubeconfig != "" {
config, err = clientcmd.BuildConfigFromFlags("", *kubeconfig)
}
if err != nil {
t.Fatalf("failed to setup kubeconfig", err)
func TestSkipReleaseConfigDoesSkipIt(t *testing.T) {
ns := "some-namespace"
var tweakopts func(*metav1.ListOptions)
clientset := fake.NewSimpleClientset()
ssc := ssfake.NewSimpleClientset()
sinformer := initSecretInformerFactory(clientset, ns, tweakopts, true /* skip-recreate */)
if sinformer != nil {
t.Fatalf("sinformer %v want nil", sinformer)
}
ssinformer := ssinformers.NewFilteredSharedInformerFactory(ssc, 0, ns, tweakopts)
keyRegistry := testKeyRegister(t, context.Background(), clientset, ns)

return config
_, got := NewController(clientset, ssc, ssinformer, sinformer, keyRegistry)
if got != nil {
t.Fatalf("got %v want %v", got, nil)
}
}

func keyRegister(t *testing.T, ctx context.Context, clientset *kubernetes.Clientset, ns string) *controller.KeyRegistry {
func testKeyRegister(t *testing.T, ctx context.Context, clientset kubernetes.Interface, ns string) *KeyRegistry {
t.Helper()

keyLabel := controller.SealedSecretsKeyLabel
keyLabel := SealedSecretsKeyLabel
prefix := "test-keys"
testKeySize := 4096
fmt.Fprintf(GinkgoWriter, "initiating key registry\n")
keyRegistry, err := controller.InitKeyRegistry(ctx, clientset, rand.Reader, ns, prefix, keyLabel, testKeySize)
keyRegistry, err := initKeyRegistry(ctx, clientset, rand.Reader, ns, prefix, keyLabel, testKeySize)
if err != nil {
t.Fatalf("failed to provision key registry: %v", err)
}
Expand Down
8 changes: 4 additions & 4 deletions pkg/controller/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ func initKeyPrefix(keyPrefix string) (string, error) {
return validateKeyPrefix(keyPrefix)
}

func InitKeyRegistry(ctx context.Context, client kubernetes.Interface, r io.Reader, namespace, prefix, label string, keysize int) (*KeyRegistry, error) {
func initKeyRegistry(ctx context.Context, client kubernetes.Interface, r io.Reader, namespace, prefix, label string, keysize int) (*KeyRegistry, error) {
log.Printf("Searching for existing private keys")
secretList, err := client.CoreV1().Secrets(namespace).List(ctx, metav1.ListOptions{
LabelSelector: keySelector.String(),
Expand Down Expand Up @@ -162,7 +162,7 @@ func Main(f *Flags, version string) error {
return err
}

keyRegistry, err := InitKeyRegistry(ctx, clientset, rand.Reader, myNs, prefix, SealedSecretsKeyLabel, f.KeySize)
keyRegistry, err := initKeyRegistry(ctx, clientset, rand.Reader, myNs, prefix, SealedSecretsKeyLabel, f.KeySize)
if err != nil {
return err
}
Expand Down Expand Up @@ -227,7 +227,7 @@ func Main(f *Flags, version string) error {
}
if ns != namespace {
ssinf = ssinformers.NewFilteredSharedInformerFactory(ssclientset, 0, ns, tweakopts)
sinf = InitSecretInformerFactory(clientset, ns, tweakopts, f.SkipRecreate)
sinf = initSecretInformerFactory(clientset, ns, tweakopts, f.SkipRecreate)
ctlr, err = NewController(clientset, ssclientset, ssinf, sinf, keyRegistry)
if err != nil {
return err
Expand Down Expand Up @@ -257,7 +257,7 @@ func Main(f *Flags, version string) error {
return server.Shutdown(context.Background())
}

func InitSecretInformerFactory(clientset *kubernetes.Clientset, ns string, tweakopts func(*metav1.ListOptions), skipRecreate bool) informers.SharedInformerFactory {
func initSecretInformerFactory(clientset kubernetes.Interface, ns string, tweakopts func(*metav1.ListOptions), skipRecreate bool) informers.SharedInformerFactory {
if skipRecreate {
return nil
}
Expand Down
16 changes: 8 additions & 8 deletions pkg/controller/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ func TestInitKeyRegistry(t *testing.T) {
client := fake.NewSimpleClientset()
client.PrependReactor("create", "secrets", generateNameReactor)

registry, err := InitKeyRegistry(ctx, client, rand, "namespace", "prefix", "label", 1024)
registry, err := initKeyRegistry(ctx, client, rand, "namespace", "prefix", "label", 1024)
if err != nil {
t.Fatalf("initKeyRegistry() returned err: %v", err)
}
Expand All @@ -69,7 +69,7 @@ func TestInitKeyRegistry(t *testing.T) {

// Due to limitations of the fake client, we cannot test whether initKeyRegistry is able
// to pick up existing keys
_, err = InitKeyRegistry(ctx, client, rand, "namespace", "prefix", "label", 1024)
_, err = initKeyRegistry(ctx, client, rand, "namespace", "prefix", "label", 1024)
if err != nil {
t.Fatalf("initKeyRegistry() returned err: %v", err)
}
Expand All @@ -84,7 +84,7 @@ func TestInitKeyRotation(t *testing.T) {
client := fake.NewSimpleClientset()
client.PrependReactor("create", "secrets", generateNameReactor)

registry, err := InitKeyRegistry(ctx, client, rand, "namespace", "prefix", "label", 1024)
registry, err := initKeyRegistry(ctx, client, rand, "namespace", "prefix", "label", 1024)
if err != nil {
t.Fatalf("initKeyRegistry() returned err: %v", err)
}
Expand Down Expand Up @@ -125,7 +125,7 @@ func TestInitKeyRotationTick(t *testing.T) {
client := fake.NewSimpleClientset()
client.PrependReactor("create", "secrets", generateNameReactor)

registry, err := InitKeyRegistry(ctx, client, rand, "namespace", "prefix", "label", 1024)
registry, err := initKeyRegistry(ctx, client, rand, "namespace", "prefix", "label", 1024)
if err != nil {
t.Fatalf("initKeyRegistry() returned err: %v", err)
}
Expand Down Expand Up @@ -180,7 +180,7 @@ func TestReuseKey(t *testing.T) {

client.ClearActions()

registry, err := InitKeyRegistry(ctx, client, rand, "namespace", "prefix", SealedSecretsKeyLabel, 1024)
registry, err := initKeyRegistry(ctx, client, rand, "namespace", "prefix", SealedSecretsKeyLabel, 1024)
if err != nil {
t.Fatalf("initKeyRegistry() returned err: %v", err)
}
Expand Down Expand Up @@ -226,7 +226,7 @@ func TestRenewStaleKey(t *testing.T) {
t.Errorf("writeKey() failed with: %v", err)
}

registry, err := InitKeyRegistry(ctx, client, rand, "namespace", "prefix", SealedSecretsKeyLabel, 1024)
registry, err := initKeyRegistry(ctx, client, rand, "namespace", "prefix", SealedSecretsKeyLabel, 1024)
if err != nil {
t.Fatalf("initKeyRegistry() returned err: %v", err)
}
Expand Down Expand Up @@ -283,7 +283,7 @@ func TestKeyCutoff(t *testing.T) {
t.Errorf("writeKey() failed with: %v", err)
}

registry, err := InitKeyRegistry(ctx, client, rand, "namespace", "prefix", SealedSecretsKeyLabel, 1024)
registry, err := initKeyRegistry(ctx, client, rand, "namespace", "prefix", SealedSecretsKeyLabel, 1024)
if err != nil {
t.Fatalf("initKeyRegistry() returned err: %v", err)
}
Expand Down Expand Up @@ -350,7 +350,7 @@ func TestLegacySecret(t *testing.T) {

client.ClearActions()

registry, err := InitKeyRegistry(ctx, client, rand, "namespace", "prefix", SealedSecretsKeyLabel, 1024)
registry, err := initKeyRegistry(ctx, client, rand, "namespace", "prefix", SealedSecretsKeyLabel, 1024)
if err != nil {
t.Fatalf("initKeyRegistry() returned err: %v", err)
}
Expand Down

0 comments on commit 5325e94

Please sign in to comment.