mirror of
https://github.com/1Password/onepassword-operator.git
synced 2025-10-21 15:08:06 +00:00
Compare commits
2 Commits
03b093ac17
...
a5e4a352e9
Author | SHA1 | Date | |
---|---|---|---|
![]() |
a5e4a352e9 | ||
![]() |
edde903759 |
@@ -1,6 +1,6 @@
|
||||
# OnePassword Operator Test Helper
|
||||
|
||||
This is a standalone Go module that provides testing utilities for Kubernetes operators, specifically designed for testing OnePassword operators but can be used for any Kubernetes operator testing.
|
||||
This is a standalone Go module that provides testing utilities for Kubernetes operators and webhooks. It's specifically designed for testing 1Password Kubernetes operator and secrets injector, but it can be used for any Kubernetes operator or webhook testing.
|
||||
|
||||
## Installation
|
||||
|
||||
@@ -35,19 +35,19 @@ kubeClient := kube.NewKubeClient(&kube.Config{
|
||||
### Working with Secrets
|
||||
|
||||
```go
|
||||
// Create a secret from environment variable
|
||||
secret := kubeClient.Secret("my-secret")
|
||||
secret.CreateFromEnvVar(ctx, "MY_ENV_VAR")
|
||||
// Create k8s secret from environment variable
|
||||
k8sSecret := kubeClient.Secret("my-secret")
|
||||
k8sSecret.CreateFromEnvVar(ctx, "MY_ENV_VAR")
|
||||
|
||||
// Create a secret from file
|
||||
data := []byte("secret content")
|
||||
secret.CreateFromFile(ctx, "filename", data)
|
||||
k8sSecret.CreateFromFile(ctx, "filename", data)
|
||||
|
||||
// Check if secret exists
|
||||
secret.CheckIfExists(ctx)
|
||||
k8sSecret.CheckIfExists(ctx)
|
||||
|
||||
// Get secret
|
||||
secretObj := secret.Get(ctx)
|
||||
secretObj := k8sSecret.Get(ctx)
|
||||
```
|
||||
|
||||
### Working with Deployments
|
||||
|
@@ -60,13 +60,17 @@ func (p *Pod) GetPodLogs(ctx context.Context) string {
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(pods.Items).NotTo(BeEmpty(), "no pods found with selector %q", labels.Set(p.selector).String())
|
||||
|
||||
// Use the first pod found
|
||||
pod := pods.Items[0]
|
||||
// Find a running pod to get logs from
|
||||
var pod *corev1.Pod
|
||||
for i := range pods.Items {
|
||||
if pods.Items[i].Status.Phase == corev1.PodRunning {
|
||||
pod = &pods.Items[i]
|
||||
break
|
||||
}
|
||||
}
|
||||
Expect(pod).NotTo(BeNil(), "no running pod found with selector %q", labels.Set(p.selector).String())
|
||||
|
||||
podName := pod.Name
|
||||
|
||||
// Verify pod is running before getting logs
|
||||
Expect(pod.Status.Phase).To(Equal(corev1.PodRunning), "pod %s is not running (status: %s)", podName, pod.Status.Phase)
|
||||
|
||||
// Get logs using the Kubernetes clientset
|
||||
req := p.clientset.CoreV1().Pods(p.config.Namespace).GetLogs(podName, &corev1.PodLogOptions{})
|
||||
stream, err := req.Stream(context.TODO())
|
||||
@@ -97,8 +101,15 @@ func (p *Pod) VerifyWebhookInjection(ctx context.Context) {
|
||||
g.Expect(p.client.List(attemptCtx, &pods, listOpts...)).To(Succeed())
|
||||
g.Expect(pods.Items).NotTo(BeEmpty(), "no pods found with selector %q", labels.Set(p.selector).String())
|
||||
|
||||
// Use the first pod found
|
||||
pod := pods.Items[0]
|
||||
// Find a running pod to verify webhook injection
|
||||
var pod *corev1.Pod
|
||||
for i := range pods.Items {
|
||||
if pods.Items[i].Status.Phase == corev1.PodRunning {
|
||||
pod = &pods.Items[i]
|
||||
break
|
||||
}
|
||||
}
|
||||
g.Expect(pod).NotTo(BeNil(), "no running pod found with selector %q", labels.Set(p.selector).String())
|
||||
|
||||
// Check injection status annotation
|
||||
g.Expect(pod.Annotations).To(HaveKey("operator.1password.io/status"))
|
||||
|
Reference in New Issue
Block a user