github.com/argoproj/argo-cd/v3@v3.2.1/test/e2e/jsonnet_test.go (about) 1 package e2e 2 3 import ( 4 "testing" 5 6 . "github.com/argoproj/gitops-engine/pkg/sync/common" 7 "github.com/argoproj/gitops-engine/pkg/utils/kube" 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 11 . "github.com/argoproj/argo-cd/v3/pkg/apis/application/v1alpha1" 12 . "github.com/argoproj/argo-cd/v3/test/e2e/fixture" 13 . "github.com/argoproj/argo-cd/v3/test/e2e/fixture/app" 14 "github.com/argoproj/argo-cd/v3/util/errors" 15 ) 16 17 func TestJsonnetAppliedCorrectly(t *testing.T) { 18 Given(t). 19 Path("jsonnet-tla"). 20 When(). 21 CreateApp(). 22 Sync(). 23 Then(). 24 Expect(SyncStatusIs(SyncStatusCodeSynced)). 25 And(func(app *Application) { 26 manifests, err := RunCli("app", "manifests", app.Name, "--source", "live") 27 require.NoError(t, err) 28 resources, err := kube.SplitYAML([]byte(manifests)) 29 require.NoError(t, err) 30 31 index := -1 32 for i := range resources { 33 if resources[i].GetKind() == kube.DeploymentKind { 34 index = i 35 break 36 } 37 } 38 39 assert.Greater(t, index, -1) 40 41 deployment := resources[index] 42 assert.Equal(t, "jsonnet-guestbook-ui", deployment.GetName()) 43 assert.Equal(t, int64(1), *kube.GetDeploymentReplicas(deployment)) 44 }) 45 } 46 47 func TestJsonnetTlaParameterAppliedCorrectly(t *testing.T) { 48 Given(t). 49 Path("jsonnet-tla"). 50 When(). 51 CreateApp("--jsonnet-tla-str", "name=testing-tla", "--jsonnet-tla-code", "replicas=0"). 52 Sync(). 53 Then(). 54 Expect(SyncStatusIs(SyncStatusCodeSynced)). 55 And(func(app *Application) { 56 manifests, err := RunCli("app", "manifests", app.Name, "--source", "live") 57 require.NoError(t, err) 58 resources, err := kube.SplitYAML([]byte(manifests)) 59 require.NoError(t, err) 60 61 index := -1 62 for i := range resources { 63 if resources[i].GetKind() == kube.DeploymentKind { 64 index = i 65 break 66 } 67 } 68 69 assert.Greater(t, index, -1) 70 71 deployment := resources[index] 72 assert.Equal(t, "testing-tla", deployment.GetName()) 73 assert.Equal(t, int64(0), *kube.GetDeploymentReplicas(deployment)) 74 }) 75 } 76 77 func TestJsonnetTlaEnv(t *testing.T) { 78 Given(t). 79 Path("jsonnet-tla-cm"). 80 When(). 81 CreateApp("--jsonnet-tla-str", "foo=$ARGOCD_APP_NAME", "--jsonnet-tla-code", "bar='$ARGOCD_APP_NAME'"). 82 Sync(). 83 Then(). 84 Expect(OperationPhaseIs(OperationSucceeded)). 85 Expect(SyncStatusIs(SyncStatusCodeSynced)). 86 And(func(_ *Application) { 87 assert.Equal(t, Name(), errors.NewHandler(t).FailOnErr(Run(".", "kubectl", "-n", DeploymentNamespace(), "get", "cm", "my-map", "-o", "jsonpath={.data.foo}")).(string)) 88 assert.Equal(t, Name(), errors.NewHandler(t).FailOnErr(Run(".", "kubectl", "-n", DeploymentNamespace(), "get", "cm", "my-map", "-o", "jsonpath={.data.bar}")).(string)) 89 }) 90 } 91 92 func TestJsonnetExtVarEnv(t *testing.T) { 93 Given(t). 94 Path("jsonnet-ext-var"). 95 When(). 96 CreateApp("--jsonnet-ext-var-str", "foo=$ARGOCD_APP_NAME", "--jsonnet-ext-var-code", "bar='$ARGOCD_APP_NAME'"). 97 Sync(). 98 Then(). 99 Expect(OperationPhaseIs(OperationSucceeded)). 100 Expect(SyncStatusIs(SyncStatusCodeSynced)). 101 And(func(_ *Application) { 102 assert.Equal(t, Name(), errors.NewHandler(t).FailOnErr(Run(".", "kubectl", "-n", DeploymentNamespace(), "get", "cm", "my-map", "-o", "jsonpath={.data.foo}")).(string)) 103 assert.Equal(t, Name(), errors.NewHandler(t).FailOnErr(Run(".", "kubectl", "-n", DeploymentNamespace(), "get", "cm", "my-map", "-o", "jsonpath={.data.bar}")).(string)) 104 }) 105 } 106 107 // Jsonnet file located in nested sub directory uses import 108 func TestJsonnetNestedDirWithImports(t *testing.T) { 109 Given(t). 110 Path("jsonnet-nested-dir-with-imports/apps"). 111 When(). 112 CreateApp("--directory-recurse"). 113 Sync(). 114 Then(). 115 Expect(OperationPhaseIs(OperationSucceeded)). 116 Expect(SyncStatusIs(SyncStatusCodeSynced)). 117 Expect(ResourceSyncStatusIs("Namespace", "hello-world", SyncStatusCodeSynced)). 118 Expect(ResourceSyncStatusIs("Namespace", "hello-root", SyncStatusCodeSynced)) 119 }