44package e2e
55
66import (
7+ "encoding/json"
78 "fmt"
89 "testing"
910 "time"
1011
1112 uitest "github.com/cppforlife/go-cli-ui/ui/test"
1213 "github.com/stretchr/testify/require"
14+ kcpkg "github.com/vmware-tanzu/carvel-kapp-controller/pkg/apis/packaging/v1alpha1"
1315)
1416
1517func TestPackageRepository (t * testing.T ) {
@@ -19,14 +21,17 @@ func TestPackageRepository(t *testing.T) {
1921 kubectl := Kubectl {t , env .Namespace , logger }
2022
2123 pkgrName := "test-package-repository"
24+ pkgrWithSecretName := "test-package-repository-with-secret"
2225 pkgrURL := `ghcr.io/carvel-dev/kc-e2e-test-repo:latest`
26+ pkgrSecretRef := "sample-registry-secret"
2327
2428 newRepoNamespace := "carvel-test-repo-a"
2529
2630 kind := "PackageRepository"
2731
2832 cleanUp := func () {
2933 RemoveClusterResource (t , kind , pkgrName , env .Namespace , kubectl )
34+ RemoveClusterResource (t , kind , pkgrWithSecretName , env .Namespace , kubectl )
3035 RemoveClusterResource (t , kind , pkgrName , newRepoNamespace , kubectl )
3136 }
3237
@@ -205,6 +210,45 @@ func TestPackageRepository(t *testing.T) {
205210 kubectl .Run ([]string {"get" , kind , pkgrName , "-n" , env .Namespace })
206211 })
207212
213+ logger .Section ("create a repository with secretRef" , func () {
214+ _ , _ = kappCtrl .RunWithOpts ([]string {"package" , "repository" , "add" , "-r" , pkgrWithSecretName , "--url" , pkgrURL , "--secret-ref" , pkgrSecretRef }, RunOpts {
215+ AllowError : true })
216+
217+ pkgrYaml := kubectl .Run ([]string {"get" , kind , pkgrWithSecretName , "-ojson" })
218+ pkgr := & kcpkg.PackageRepository {}
219+ err := json .Unmarshal ([]byte (pkgrYaml ), pkgr )
220+ require .NoError (t , err )
221+ require .Equal (t , pkgrSecretRef , pkgr .Spec .Fetch .ImgpkgBundle .SecretRef .Name )
222+
223+ kappCtrl .Run ([]string {"package" , "repository" , "delete" , "-r" , pkgrWithSecretName })
224+ })
225+
226+ logger .Section ("updating a repository's secret with no change in url" , func () {
227+ _ , err := kappCtrl .RunWithOpts ([]string {"package" , "repository" , "add" , "-r" , pkgrWithSecretName , "--url" , pkgrURL }, RunOpts {
228+ AllowError : true })
229+ require .NoError (t , err )
230+
231+ kubectl .Run ([]string {"get" , kind , pkgrWithSecretName })
232+
233+ kappCtrl .RunWithOpts ([]string {"package" , "repository" , "update" , "-r" , pkgrWithSecretName , "--url" , pkgrURL , "--secret-ref" , pkgrSecretRef }, RunOpts {
234+ AllowError : true })
235+
236+ pkgrYaml := kubectl .Run ([]string {"get" , kind , pkgrWithSecretName , "-ojson" })
237+ pkgr := & kcpkg.PackageRepository {}
238+ err = json .Unmarshal ([]byte (pkgrYaml ), pkgr )
239+ require .NoError (t , err )
240+ require .Equal (t , pkgrSecretRef , pkgr .Spec .Fetch .ImgpkgBundle .SecretRef .Name )
241+
242+ // update to a new secret
243+ kappCtrl .RunWithOpts ([]string {"package" , "repository" , "update" , "-r" , pkgrWithSecretName , "--url" , pkgrURL , "--secret-ref" , pkgrSecretRef + "-2" }, RunOpts {
244+ AllowError : true })
245+
246+ pkgrYaml = kubectl .Run ([]string {"get" , kind , pkgrWithSecretName , "-ojson" })
247+ pkgr = & kcpkg.PackageRepository {}
248+ err = json .Unmarshal ([]byte (pkgrYaml ), pkgr )
249+ require .NoError (t , err )
250+ require .Equal (t , pkgrSecretRef + "-2" , pkgr .Spec .Fetch .ImgpkgBundle .SecretRef .Name )
251+ })
208252}
209253
210254func TestPackageRepositoryTagSemver (t * testing.T ) {
0 commit comments