Skip to content

Commit b4ef09c

Browse files
tests: Add unit tests for pkg/argocd (#818)
Signed-off-by: isequeir <[email protected]>
1 parent e193d9d commit b4ef09c

File tree

2 files changed

+72
-0
lines changed

2 files changed

+72
-0
lines changed

pkg/argocd/gitcreds_test.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package argocd
2+
3+
import (
4+
"testing"
5+
6+
"github.com/argoproj-labs/argocd-image-updater/ext/git"
7+
"github.com/argoproj-labs/argocd-image-updater/pkg/kube"
8+
"github.com/argoproj-labs/argocd-image-updater/test/fake"
9+
"github.com/argoproj-labs/argocd-image-updater/test/fixture"
10+
11+
"github.com/stretchr/testify/assert"
12+
)
13+
14+
func TestGetCredsFromSecret(t *testing.T) {
15+
wbc := &WriteBackConfig{
16+
GitRepo: "https://github.com/example/repo.git",
17+
GitCreds: git.NoopCredsStore{},
18+
}
19+
20+
secret1 := fixture.NewSecret("foo", "bar", map[string][]byte{"username": []byte("myuser"), "password": []byte("mypass")})
21+
secret2 := fixture.NewSecret("foo1", "bar1", map[string][]byte{"username": []byte("myuser")})
22+
kubeClient := kube.KubernetesClient{
23+
Clientset: fake.NewFakeClientsetWithResources(secret1, secret2),
24+
}
25+
26+
// Test case 1: Valid secret reference
27+
credentialsSecret := "foo/bar"
28+
expectedCreds := git.NewHTTPSCreds("myuser", "mypass", "", "", true, "", wbc.GitCreds, false)
29+
creds, err := getCredsFromSecret(wbc, credentialsSecret, &kubeClient)
30+
assert.NoError(t, err)
31+
assert.Equal(t, expectedCreds, creds)
32+
33+
// Test case 2: Invalid secret reference
34+
credentialsSecret = "invalid"
35+
_, err = getCredsFromSecret(wbc, credentialsSecret, &kubeClient)
36+
assert.Error(t, err)
37+
assert.EqualError(t, err, "secret ref must be in format 'namespace/name', but is 'invalid'")
38+
39+
// Test case 3: Missing field in secret
40+
credentialsSecret = "foo1/bar1"
41+
_, err = getCredsFromSecret(wbc, credentialsSecret, &kubeClient)
42+
assert.Error(t, err)
43+
assert.EqualError(t, err, "invalid secret foo1/bar1: does not contain field password")
44+
45+
// Test case 4: Unknown repository type
46+
credentialsSecret = "foo/bar"
47+
wbc.GitRepo = "unknown://example.com/repo.git"
48+
_, err = getCredsFromSecret(wbc, credentialsSecret, &kubeClient)
49+
assert.Error(t, err)
50+
assert.EqualError(t, err, "unknown repository type")
51+
}

pkg/argocd/update_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3185,3 +3185,24 @@ func mockGit(t *testing.T) (gitMock *gitmock.Client, dir string, cleanup func())
31853185
_ = os.RemoveAll(dir)
31863186
}
31873187
}
3188+
3189+
func Test_GetRepositoryLock(t *testing.T) {
3190+
state := NewSyncIterationState()
3191+
3192+
// Test case 1: Get lock for a repository that doesn't exist in the state
3193+
repo1 := "repo1"
3194+
lock1 := state.GetRepositoryLock(repo1)
3195+
require.NotNil(t, lock1)
3196+
require.Equal(t, lock1, state.repositoryLocks[repo1])
3197+
3198+
// Test case 2: Get lock for the same repository again, should return the same lock
3199+
lock2 := state.GetRepositoryLock(repo1)
3200+
require.Equal(t, lock1, lock2)
3201+
3202+
// Test case 3: Get lock for a different repository, should return a different lock
3203+
repo2 := "repo2"
3204+
lock3 := state.GetRepositoryLock(repo2)
3205+
require.NotNil(t, lock3)
3206+
require.NotNil(t, state.repositoryLocks[repo2])
3207+
require.Equal(t, lock3, state.repositoryLocks[repo2])
3208+
}

0 commit comments

Comments
 (0)