dmartinol commented on code in PR #311:
URL: 
https://github.com/apache/incubator-kie-kogito-serverless-operator/pull/311#discussion_r1427024129


##########
controllers/profiles/common/properties/application_test.go:
##########
@@ -238,3 +182,140 @@ func doTestGenerateMicroprofileServiceCatalogProperty(t 
*testing.T, serviceUri s
        mpProperty := generateMicroprofileServiceCatalogProperty(serviceUri)
        assert.Equal(t, mpProperty, expectedProperty, "expected microprofile 
service catalog property for serviceUri: %s, is %s, but the returned value was: 
%s", serviceUri, expectedProperty, mpProperty)
 }
+
+func Test_appPropertyHandler_WithServicesWithUserOverrides(t *testing.T) {
+       //try to override kogito.service.url and quarkus.http.port
+       userProperties := 
"property1=value1\nproperty2=value2\nquarkus.http.port=9090\nkogito.service.url=http://myUrl.override.com\nquarkus.http.port=9090";
+       ns := "default"
+       workflow := test.GetBaseSonataFlow(ns)
+       workflow.SetAnnotations(map[string]string{metadata.Profile: 
string(metadata.DevProfile)})
+       enabled := true
+       platform := test.GetBasePlatform()
+       platform.Namespace = ns
+       platform.Spec = operatorapi.SonataFlowPlatformSpec{
+               Services: operatorapi.ServicesPlatformSpec{
+                       DataIndex: &operatorapi.ServiceSpec{
+                               Enabled: &enabled,
+                       },
+                       JobService: &operatorapi.ServiceSpec{
+                               Enabled: &enabled,
+                       },
+               },
+       }
+
+       di := services.NewDataIndexService(platform)
+
+       props, err := NewAppPropertyHandler(workflow, platform)
+       assert.NoError(t, err)
+       generatedProps, propsErr := 
properties.LoadString(props.WithUserProperties(userProperties).Build())
+       assert.NoError(t, propsErr)
+       assert.Equal(t, 8, len(generatedProps.Keys()))
+       assert.Equal(t, "value1", generatedProps.GetString("property1", ""))
+       assert.Equal(t, "value2", generatedProps.GetString("property2", ""))
+       //kogito.service.url takes the user provided value since it's a default 
mutable property.
+       assert.Equal(t, "http://myUrl.override.com";, 
generatedProps.GetString("kogito.service.url", ""))
+       //quarkus.http.port remains with the default value since it's immutable.
+       assert.Equal(t, "8080", generatedProps.GetString("quarkus.http.port", 
""))
+       assert.Equal(t, "0.0.0.0", 
generatedProps.GetString("quarkus.http.host", ""))
+       assert.Equal(t, "false", 
generatedProps.GetString("org.kie.kogito.addons.knative.eventing.health-enabled",
 ""))
+       assert.Equal(t, "false", 
generatedProps.GetString("quarkus.devservices.enabled", ""))
+       assert.Equal(t, "false", 
generatedProps.GetString("quarkus.kogito.devservices.enabled", ""))
+       assert.Equal(t, "", 
generatedProps.GetString(constants.DataIndexServiceURLProperty, ""))
+       assert.Equal(t, "", 
generatedProps.GetString(constants.JobServiceURLProperty, ""))
+
+       // prod profile enables config of outgoing events url
+       workflow.SetAnnotations(map[string]string{metadata.Profile: 
string(metadata.ProdProfile)})
+       props, err = NewAppPropertyHandler(workflow, platform)
+       assert.NoError(t, err)
+       generatedProps, propsErr = 
properties.LoadString(props.WithUserProperties(userProperties).Build())
+       assert.NoError(t, propsErr)
+       assert.Equal(t, 13, len(generatedProps.Keys()))
+       assert.Equal(t, 
"http://"+platform.Name+"-"+constants.DataIndexServiceName+"."+platform.Namespace+"/processes";,
 generatedProps.GetString(constants.DataIndexServiceURLProperty, ""))
+       assert.Equal(t, 
"http://"+platform.Name+"-"+constants.JobServiceName+"."+platform.Namespace+"/v2/jobs/events";,
 generatedProps.GetString(constants.JobServiceURLProperty, ""))
+       assert.Equal(t, "false", 
generatedProps.GetString(constants.JobServiceKafkaSinkInjectionHealthCheck, ""))
+       assert.Equal(t, "", 
generatedProps.GetString(constants.JobServiceDataSourceReactiveURLProperty, ""))
+       assert.Equal(t, "true", 
generatedProps.GetString(constants.JobServiceStatusChangeEventsProperty, ""))
+       assert.Equal(t, 
generatedProps.GetString(constants.JobServiceStatusChangeEventsURL, ""), 
fmt.Sprintf("%s://%s.%s/jobs", constants.DataIndexServiceURLProtocol, 
di.GetServiceName(), platform.Namespace))
+
+       // disabling data index bypasses config of outgoing events url
+       platform.Spec.Services.DataIndex.Enabled = nil
+       props, err = NewAppPropertyHandler(workflow, platform)
+       assert.NoError(t, err)
+       generatedProps, propsErr = 
properties.LoadString(props.WithUserProperties(userProperties).Build())
+       assert.NoError(t, propsErr)
+       assert.Equal(t, 10, len(generatedProps.Keys()))
+       assert.Equal(t, "", 
generatedProps.GetString(constants.DataIndexServiceURLProperty, ""))
+       assert.Equal(t, 
"http://"+platform.Name+"-"+constants.JobServiceName+"."+platform.Namespace+"/v2/jobs/events";,
 generatedProps.GetString(constants.JobServiceURLProperty, ""))
+       assert.Equal(t, "false", 
generatedProps.GetString(constants.JobServiceKafkaSinkInjectionHealthCheck, ""))
+       assert.Equal(t, "", 
generatedProps.GetString(constants.JobServiceStatusChangeEventsProperty, ""))
+       assert.Equal(t, "", 
generatedProps.GetString(constants.JobServiceStatusChangeEventsURL, ""))
+
+       // disabling job service bypasses config of outgoing events url
+       platform.Spec.Services.JobService.Enabled = nil
+       props, err = NewAppPropertyHandler(workflow, platform)
+       assert.NoError(t, err)
+       generatedProps, propsErr = 
properties.LoadString(props.WithUserProperties(userProperties).Build())
+       assert.NoError(t, propsErr)
+       assert.Equal(t, 8, len(generatedProps.Keys()))
+       assert.Equal(t, "", 
generatedProps.GetString(constants.DataIndexServiceURLProperty, ""))
+       assert.Equal(t, "", 
generatedProps.GetString(constants.JobServiceURLProperty, ""))
+       assert.Equal(t, "", 
generatedProps.GetString(constants.JobServiceKafkaSinkInjectionHealthCheck, ""))
+       assert.Equal(t, "", 
generatedProps.GetString(constants.JobServiceDataSourceReactiveURLProperty, ""))
+       assert.Equal(t, "", 
generatedProps.GetString(constants.JobServiceStatusChangeEventsProperty, ""))
+       assert.Equal(t, "", 
generatedProps.GetString(constants.JobServiceStatusChangeEventsURL, ""))
+
+       // check that service app properties are being properly set
+       generatedProps, propsErr = 
properties.LoadString(NewServiceAppPropertyHandler(platform).WithUserProperties(userProperties).Build())

Review Comment:
   in the business code (`services.go`) there is no such case where 
`NewServiceAppPropertyHandler` is decorated with `WithUserProperties`. Is this 
a correct population of the test data?
   According to what I undertstood from @wmedvede
   > there are no DI or JS properties that requires user intervention
   
   so I would expect that there's no way to have `property1`, `property2` in 
the `generatedProps` (and `kogito.service.url` either), and the len should be 6 
instead of 9



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to