diff options
| author | jannfis <jann@mistrust.net> | 2020-08-04 19:45:46 +0200 |
|---|---|---|
| committer | jannfis <jann@mistrust.net> | 2020-08-04 19:45:46 +0200 |
| commit | bb184543e516f17c5801242645b5d77d0244c538 (patch) | |
| tree | 79913d38a3f4566a4547d0923452a625518437c3 /test | |
Initial commit
Diffstat (limited to 'test')
| -rw-r--r-- | test/README.md | 9 | ||||
| -rw-r--r-- | test/fake/kubernetes.go | 16 | ||||
| -rw-r--r-- | test/fixture/capture.go | 55 | ||||
| -rw-r--r-- | test/fixture/fileutil.go | 14 | ||||
| -rw-r--r-- | test/fixture/kubernetes.go | 33 | ||||
| -rw-r--r-- | test/testdata/docker/invalid1-config.json | 7 | ||||
| -rw-r--r-- | test/testdata/docker/valid-config.json | 7 | ||||
| -rw-r--r-- | test/testdata/kubernetes/config | 19 | ||||
| -rw-r--r-- | test/testdata/resources/dummy-secret.json | 12 |
9 files changed, 172 insertions, 0 deletions
diff --git a/test/README.md b/test/README.md new file mode 100644 index 0000000..909e5a9 --- /dev/null +++ b/test/README.md @@ -0,0 +1,9 @@ +# What lives here + +The `test/` directory does not contain any tests, but all fixtures and data +for running the unit tests. + +Do not add unit tests here. If a test-specific method would be useful to more +than one package's unit test, add it to the `fixture` package. Methods defined +as fixture are allowed to `panic()`, so they must not be used in code outside +the unit tests. diff --git a/test/fake/kubernetes.go b/test/fake/kubernetes.go new file mode 100644 index 0000000..cad8b50 --- /dev/null +++ b/test/fake/kubernetes.go @@ -0,0 +1,16 @@ +package fake + +import ( + "k8s.io/apimachinery/pkg/runtime" + kubefake "k8s.io/client-go/kubernetes/fake" +) + +func NewFakeKubeClient() *kubefake.Clientset { + clientset := kubefake.NewSimpleClientset() + return clientset +} + +func NewFakeClientsetWithResources(objects ...runtime.Object) *kubefake.Clientset { + clientset := kubefake.NewSimpleClientset(objects...) + return clientset +} diff --git a/test/fixture/capture.go b/test/fixture/capture.go new file mode 100644 index 0000000..57073bb --- /dev/null +++ b/test/fixture/capture.go @@ -0,0 +1,55 @@ +package fixture + +import ( + "io/ioutil" + "os" +) + +func CaptureStdout(callback func()) (string, error) { + oldStdout := os.Stdout + oldStderr := os.Stderr + r, w, err := os.Pipe() + if err != nil { + return "", err + } + os.Stdout = w + defer func() { + os.Stdout = oldStdout + os.Stderr = oldStderr + }() + + callback() + + w.Close() + + data, err := ioutil.ReadAll(r) + + if err != nil { + return "", err + } + return string(data), err +} + +func CaptureStderr(callback func()) (string, error) { + oldStdout := os.Stdout + oldStderr := os.Stderr + r, w, err := os.Pipe() + if err != nil { + return "", err + } + os.Stderr = w + defer func() { + os.Stdout = oldStdout + os.Stderr = oldStderr + }() + + callback() + w.Close() + + data, err := ioutil.ReadAll(r) + + if err != nil { + return "", err + } + return string(data), err +} diff --git a/test/fixture/fileutil.go b/test/fixture/fileutil.go new file mode 100644 index 0000000..ce75911 --- /dev/null +++ b/test/fixture/fileutil.go @@ -0,0 +1,14 @@ +package fixture + +// Fixture functions for tests related to files + +import "io/ioutil" + +// MustReadFile must read a file from given path. Panics if it can't. +func MustReadFile(path string) string { + retBytes, err := ioutil.ReadFile(path) + if err != nil { + panic(err) + } + return string(retBytes) +} diff --git a/test/fixture/kubernetes.go b/test/fixture/kubernetes.go new file mode 100644 index 0000000..49d61be --- /dev/null +++ b/test/fixture/kubernetes.go @@ -0,0 +1,33 @@ +package fixture + +import ( + "encoding/json" + + v1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +func NewSecret(namespace, name string, entries map[string][]byte) *v1.Secret { + secret := v1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: namespace, + Name: name, + }, + Data: entries, + } + return &secret +} + +func MustCreateSecretFromFile(filepath string) *v1.Secret { + jsonData := MustReadFile(filepath) + return MustCreateSecretFromJson(jsonData) +} + +func MustCreateSecretFromJson(jsonData string) *v1.Secret { + var s v1.Secret + err := json.Unmarshal([]byte(jsonData), &s) + if err != nil { + panic(err) + } + return &s +} diff --git a/test/testdata/docker/invalid1-config.json b/test/testdata/docker/invalid1-config.json new file mode 100644 index 0000000..244ff09 --- /dev/null +++ b/test/testdata/docker/invalid1-config.json @@ -0,0 +1,7 @@ +{ + "auths": { + "https://registry-1.docker.io/v2/": { + "auth": "Zm9vOmJhcg==" + } + } +} diff --git a/test/testdata/docker/valid-config.json b/test/testdata/docker/valid-config.json new file mode 100644 index 0000000..244ff09 --- /dev/null +++ b/test/testdata/docker/valid-config.json @@ -0,0 +1,7 @@ +{ + "auths": { + "https://registry-1.docker.io/v2/": { + "auth": "Zm9vOmJhcg==" + } + } +} diff --git a/test/testdata/kubernetes/config b/test/testdata/kubernetes/config new file mode 100644 index 0000000..2226e38 --- /dev/null +++ b/test/testdata/kubernetes/config @@ -0,0 +1,19 @@ +apiVersion: v1 +clusters: +- cluster: + certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURBVENDQWVtZ0F3SUJBZ0lKQU1yVlBMS3JqWGx1TUEwR0NTcUdTSWIzRFFFQkN3VUFNQmN4RlRBVEJnTlYKQkFNTURERXdMakUxTWk0eE9ETXVNVEFlRncweU1EQTFNalF4TURBeU1qbGFGdzB6TURBMU1qSXhNREF5TWpsYQpNQmN4RlRBVEJnTlZCQU1NRERFd0xqRTFNaTR4T0RNdU1UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQCkFEQ0NBUW9DZ2dFQkFOeXhoWVZsLzBOUm43L2F4RjRaKytBNzJTcFZmbXVCNCs3QUFlREYxZXgvSVlFaDIzR2IKSzFuS25FUTZuNlgvemMyWVIveGdiekswSzJCV1paUENKME9WS2xWMklyckdtZ0xnMnpmTVB0RDZwNytFZEN4LwpIUW10MmRRUndrdHhyMFJqRUxFeUtZVE1BdHhnOFJUYi95TUVsY25iOEVFaGthZ2lGNUJKSTdreTlzYks1UlA2CkhJMUlMS2k1cE5hNGQ1YlhYNXFLeXM2dUFhY0V0OXQ3ZVdxMGtLamE0ckR5alZIYjk5WFg3QkV1SXZtVzV1WTAKMTI2UmVIT2UzUG1STGNEcGhrYVBncFZVN3Z3dmdGeldYT24xU1c3TFRXTG80K0p5UHpic3NjdFFRRjd1cWlKSgpwOFpWRURDTUluTFRDRURjRUlUdGxhdytyaXRFbS95SytQTUNBd0VBQWFOUU1FNHdIUVlEVlIwT0JCWUVGRDZmCktRdnljWUk3SzNLeFIreWdhL3o5ZDBnek1COEdBMVVkSXdRWU1CYUFGRDZmS1F2eWNZSTdLM0t4Uit5Z2EvejkKZDBnek1Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQURBWG5PYXRQNnh4cUFxbApiYXlWUEg5SDJZQk5nN3JYd3pETnpUM2JxRWswYVg4RnJDbWU0RkhhVXl6QmlISTZOSi9wbWk0TkxwblRxa2NVCnY3M1RXUmhsZjE4dzQzUzA2ZFNmSXpSank3cUhXR2dWRnRKRTcrTXRhcllNaCsydkRwMSs1by9ic21wZk5DaDcKOEhFOGlqb3lGRDYvYnFmdGIyeU5jZmJVNmF4Wll5VmYvSlpvd2grZUtnU21iQXNaZXRLWXZmSGVEWnE2SFFsaQpjZnZqUUdMMDNMSGxtSjdQNWlBSkJyVlE5MmZLS3pOejRXQWV1aktiYlB0TlBtTnVpL3EzR0cwU3o4bGJiNXpvCnRvNitJMzAwUUJReGpVd0Uvb1AvUXkyN0dMeER2aGFFTEl4V2c1R1R3Q3NDeHBGZXUzSm0yMDNNU3pOVHlJRDYKOUZTa3Rxaz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= + server: https://127.0.0.1:16443 + name: mock-cluster +contexts: +- context: + cluster: mock-cluster + user: admin + name: mock-cluster +current-context: mock-cluster +kind: Config +preferences: {} +users: +- name: admin + user: + password: foobar + username: admin diff --git a/test/testdata/resources/dummy-secret.json b/test/testdata/resources/dummy-secret.json new file mode 100644 index 0000000..7055f67 --- /dev/null +++ b/test/testdata/resources/dummy-secret.json @@ -0,0 +1,12 @@ +{ + "apiVersion": "v1", + "data": { + "namespace": "YXJnb2Nk" + }, + "kind": "Secret", + "metadata": { + "name": "test-secret", + "namespace": "test-namespace" + } +} + |
