diff --git a/pkg/runfileconfig/run_file_config_parser_test.go b/pkg/runfileconfig/run_file_config_parser_test.go index 8fd009e73..f3acb6ea9 100644 --- a/pkg/runfileconfig/run_file_config_parser_test.go +++ b/pkg/runfileconfig/run_file_config_parser_test.go @@ -32,6 +32,9 @@ var ( runFileForPrecedenceRuleDaprDir = filepath.Join(".", "testdata", "test_run_config_precedence_rule_dapr_dir.yaml") runFileForLogDestination = filepath.Join(".", "testdata", "test_run_config_log_destination.yaml") runFileForMultiResourcePaths = filepath.Join(".", "testdata", "test_run_config_multiple_resources_paths.yaml") + + runFileForContainerImagePullPolicy = filepath.Join(".", "testdata", "test_run_config_container_image_pull_policy.yaml") + runFileForContainerImagePullPolicyInvalid = filepath.Join(".", "testdata", "test_run_config_container_image_pull_policy_invalid.yaml") ) func TestRunConfigFile(t *testing.T) { @@ -144,6 +147,34 @@ func TestRunConfigFile(t *testing.T) { } }) + t.Run("test containerImagePullPolicy", func(t *testing.T) { + t.Run("default value is Always", func(t *testing.T) { + config := RunFileConfig{} + config.parseAppsConfig(validRunFilePath) + err := config.validateRunConfig(runFileForPrecedenceRuleDaprDir) + assert.NoError(t, err) + assert.Equal(t, "Always", config.Apps[0].ContainerImagePullPolicy) + assert.Equal(t, "Always", config.Apps[1].ContainerImagePullPolicy) + }) + + t.Run("custom value is respected", func(t *testing.T) { + config := RunFileConfig{} + config.parseAppsConfig(runFileForContainerImagePullPolicy) + err := config.validateRunConfig(runFileForContainerImagePullPolicy) + assert.NoError(t, err) + assert.Equal(t, "IfNotPresent", config.Apps[0].ContainerImagePullPolicy) + assert.Equal(t, "Always", config.Apps[1].ContainerImagePullPolicy) + }) + + t.Run("invalid value is rejected", func(t *testing.T) { + config := RunFileConfig{} + config.parseAppsConfig(runFileForContainerImagePullPolicyInvalid) + err := config.validateRunConfig(runFileForContainerImagePullPolicyInvalid) + assert.Error(t, err) + assert.Contains(t, err.Error(), "invalid containerImagePullPolicy: Invalid, allowed values: Always, Never, IfNotPresent") + }) + }) + t.Run("test precedence logic with daprInstallDir for resources-path and dapr config file", func(t *testing.T) { config := RunFileConfig{} diff --git a/pkg/runfileconfig/testdata/test_run_config_container_image_pull_policy.yaml b/pkg/runfileconfig/testdata/test_run_config_container_image_pull_policy.yaml new file mode 100644 index 000000000..a2b19f112 --- /dev/null +++ b/pkg/runfileconfig/testdata/test_run_config_container_image_pull_policy.yaml @@ -0,0 +1,24 @@ +version: 1 +common: + resourcesPath: ./app/resources + appProtocol: HTTP + appHealthProbeTimeout: 10 + env: + DEBUG: false + tty: sts +apps: + - appDirPath: ./webapp/ + resourcesPath: ./resources + configFilePath: ./config.yaml + appPort: 8080 + appHealthProbeTimeout: 1 + containerImagePullPolicy: IfNotPresent + containerImage: ghcr.io/dapr/dapr-workflows-python-sdk:latest + - appID: backend + appDirPath: ./backend/ + appProtocol: GRPC + appPort: 3000 + unixDomainSocket: /tmp/test-socket + env: + DEBUG: true + containerImage: ghcr.io/dapr/dapr-workflows-csharp-sdk:latest \ No newline at end of file diff --git a/pkg/runfileconfig/testdata/test_run_config_container_image_pull_policy_invalid.yaml b/pkg/runfileconfig/testdata/test_run_config_container_image_pull_policy_invalid.yaml new file mode 100644 index 000000000..d1aaf7030 --- /dev/null +++ b/pkg/runfileconfig/testdata/test_run_config_container_image_pull_policy_invalid.yaml @@ -0,0 +1,24 @@ +version: 1 +common: + resourcesPath: ./app/resources + appProtocol: HTTP + appHealthProbeTimeout: 10 + env: + DEBUG: false + tty: sts +apps: + - appDirPath: ./webapp/ + resourcesPath: ./resources + configFilePath: ./config.yaml + appPort: 8080 + appHealthProbeTimeout: 1 + containerImagePullPolicy: Invalid + containerImage: ghcr.io/dapr/dapr-workflows-python-sdk:latest + - appID: backend + appDirPath: ./backend/ + appProtocol: GRPC + appPort: 3000 + unixDomainSocket: /tmp/test-socket + env: + DEBUG: true + containerImage: ghcr.io/dapr/dapr-workflows-csharp-sdk:latest \ No newline at end of file