summaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authorIshita Sequeira <46771830+ishitasequeira@users.noreply.github.com>2024-08-07 05:55:43 -0700
committerGitHub <noreply@github.com>2024-08-07 08:55:43 -0400
commitb4ef09c39227e9039f1e56979657d5160495f3a4 (patch)
tree0dad083fe6407246cb5deaf69729234d2eb84396 /pkg
parente193d9d54e6ca32b4fc2322b0756453a42a067d4 (diff)
tests: Add unit tests for pkg/argocd (#818)
Signed-off-by: isequeir <isequeir@redhat.com>
Diffstat (limited to 'pkg')
-rw-r--r--pkg/argocd/gitcreds_test.go51
-rw-r--r--pkg/argocd/update_test.go21
2 files changed, 72 insertions, 0 deletions
diff --git a/pkg/argocd/gitcreds_test.go b/pkg/argocd/gitcreds_test.go
new file mode 100644
index 0000000..02f23df
--- /dev/null
+++ b/pkg/argocd/gitcreds_test.go
@@ -0,0 +1,51 @@
+package argocd
+
+import (
+ "testing"
+
+ "github.com/argoproj-labs/argocd-image-updater/ext/git"
+ "github.com/argoproj-labs/argocd-image-updater/pkg/kube"
+ "github.com/argoproj-labs/argocd-image-updater/test/fake"
+ "github.com/argoproj-labs/argocd-image-updater/test/fixture"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestGetCredsFromSecret(t *testing.T) {
+ wbc := &WriteBackConfig{
+ GitRepo: "https://github.com/example/repo.git",
+ GitCreds: git.NoopCredsStore{},
+ }
+
+ secret1 := fixture.NewSecret("foo", "bar", map[string][]byte{"username": []byte("myuser"), "password": []byte("mypass")})
+ secret2 := fixture.NewSecret("foo1", "bar1", map[string][]byte{"username": []byte("myuser")})
+ kubeClient := kube.KubernetesClient{
+ Clientset: fake.NewFakeClientsetWithResources(secret1, secret2),
+ }
+
+ // Test case 1: Valid secret reference
+ credentialsSecret := "foo/bar"
+ expectedCreds := git.NewHTTPSCreds("myuser", "mypass", "", "", true, "", wbc.GitCreds, false)
+ creds, err := getCredsFromSecret(wbc, credentialsSecret, &kubeClient)
+ assert.NoError(t, err)
+ assert.Equal(t, expectedCreds, creds)
+
+ // Test case 2: Invalid secret reference
+ credentialsSecret = "invalid"
+ _, err = getCredsFromSecret(wbc, credentialsSecret, &kubeClient)
+ assert.Error(t, err)
+ assert.EqualError(t, err, "secret ref must be in format 'namespace/name', but is 'invalid'")
+
+ // Test case 3: Missing field in secret
+ credentialsSecret = "foo1/bar1"
+ _, err = getCredsFromSecret(wbc, credentialsSecret, &kubeClient)
+ assert.Error(t, err)
+ assert.EqualError(t, err, "invalid secret foo1/bar1: does not contain field password")
+
+ // Test case 4: Unknown repository type
+ credentialsSecret = "foo/bar"
+ wbc.GitRepo = "unknown://example.com/repo.git"
+ _, err = getCredsFromSecret(wbc, credentialsSecret, &kubeClient)
+ assert.Error(t, err)
+ assert.EqualError(t, err, "unknown repository type")
+}
diff --git a/pkg/argocd/update_test.go b/pkg/argocd/update_test.go
index ca00460..7896a99 100644
--- a/pkg/argocd/update_test.go
+++ b/pkg/argocd/update_test.go
@@ -3185,3 +3185,24 @@ func mockGit(t *testing.T) (gitMock *gitmock.Client, dir string, cleanup func())
_ = os.RemoveAll(dir)
}
}
+
+func Test_GetRepositoryLock(t *testing.T) {
+ state := NewSyncIterationState()
+
+ // Test case 1: Get lock for a repository that doesn't exist in the state
+ repo1 := "repo1"
+ lock1 := state.GetRepositoryLock(repo1)
+ require.NotNil(t, lock1)
+ require.Equal(t, lock1, state.repositoryLocks[repo1])
+
+ // Test case 2: Get lock for the same repository again, should return the same lock
+ lock2 := state.GetRepositoryLock(repo1)
+ require.Equal(t, lock1, lock2)
+
+ // Test case 3: Get lock for a different repository, should return a different lock
+ repo2 := "repo2"
+ lock3 := state.GetRepositoryLock(repo2)
+ require.NotNil(t, lock3)
+ require.NotNil(t, state.repositoryLocks[repo2])
+ require.Equal(t, lock3, state.repositoryLocks[repo2])
+}