Skip to content

Commit

Permalink
test: enhance test coverage for keptn-cert-manager
Browse files Browse the repository at this point in the history
Signed-off-by: Yash Pimple <yashpimple22@gmail.com>
  • Loading branch information
YashPimple committed Feb 28, 2024
1 parent 4febd99 commit 050a49c
Show file tree
Hide file tree
Showing 3 changed files with 108 additions and 0 deletions.
30 changes: 30 additions & 0 deletions keptn-cert-manager/eventfilter/eventfilter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"github.com/stretchr/testify/assert"
v1 "k8s.io/api/apps/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
)

const (
Expand Down Expand Up @@ -76,3 +77,32 @@ func Test_matchesName(t *testing.T) {

assert.False(t, matchesName(deployment, []string{"my-deployment"}))
}

func Test_matchesLabels(t *testing.T) {
deployment := &v1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Labels: map[string]string{
"app": "test",
"env": "dev",
},
},
}

firstSelector := labels.SelectorFromSet(labels.Set{
"app": "test",
"env": "dev", // different value for 'env'
})

assert.True(t, matchesLabels(deployment, firstSelector))

secondSelectors := labels.SelectorFromSet(labels.Set{
"app": "test",
"env": "prod",
})

assert.False(t, matchesLabels(deployment, secondSelectors))

deploymentNoLabels := &v1.Deployment{}

assert.False(t, matchesLabels(deploymentNoLabels, firstSelector))
}
41 changes: 41 additions & 0 deletions keptn-cert-manager/kubeutils/secret_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ func TestSecretQuery(t *testing.T) {
t.Run(`Update secret when data has changed`, testUpdateSecretWhenDataChanged)
t.Run(`Update secret when labels have changed`, testUpdateSecretWhenLabelsChanged)
t.Run(`Create secret in target namespace`, testCreateSecretInTargetNamespace)
t.Run(`New Secret`, TestNewSecret)
}

func testGetSecret(t *testing.T) {
Expand Down Expand Up @@ -259,3 +260,43 @@ func createTestSecret(labels map[string]string, data map[string][]byte) *corev1.
}
return secret
}

func TestNewSecret(t *testing.T) {

testCases := []struct {
name string
namespace string
data map[string][]byte
}{
{
name: "test-secret-1",
namespace: "test-namespace-1",
data: map[string][]byte{
"key1": []byte("value1"),
"key2": []byte("value2"),
},
},
{
name: "test-secret-2",
namespace: "test-namespace-2",
data: map[string][]byte{
"key1": []byte("value1"),
},
},
{
name: "test-secret-3",
namespace: "test-namespace-3",
data: map[string][]byte{},
},
}

for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
secret := NewSecret(tc.name, tc.namespace, tc.data)

assert.Equal(t, tc.name, secret.Name)
assert.Equal(t, tc.namespace, secret.Namespace)
assert.Equal(t, tc.data, secret.Data)
})
}
}
37 changes: 37 additions & 0 deletions keptn-cert-manager/pkg/certificates/watcher_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -324,3 +324,40 @@ func TestNewCertificateWatcher(t *testing.T) {
func TestNewNoOpCertificateWatcher(t *testing.T) {
require.EqualValues(t, NewNoOpCertificateWatcher(), &NoOpCertificateWatcher{})
}

func TestCertificateWatcher_watchForCertificatesSecret(t *testing.T) {
mockReader := newFakeClient()
logger := testr.New(t)

watcher := &CertificateWatcher{
apiReader: mockReader,
fs: afero.NewOsFs(),
certificateDirectory: "",
namespace: "",
certificateSecretName: "",
ICertificateHandler: defaultCertificateHandler{},
Log: logger,
}

updateSignal := make(chan struct{})
defer close(updateSignal)

updateCalled := false
go func() {
time.Sleep(10 * time.Millisecond)
updateSignal <- struct{}{}
}()

go watcher.watchForCertificatesSecret()

select {
case <-time.After(20 * time.Millisecond):
t.Error("Expected update but did not receive it within the specified interval")
case <-updateSignal:
updateCalled = true
}

if !updateCalled {
t.Error("updateCertificatesFromSecret method was not called as expected")
}
}

0 comments on commit 050a49c

Please sign in to comment.