[GitHub] [airflow] jedcunningham commented on a change in pull request #21222: Helm: Fix elasticsearch URL in secret when username/password fields are empty,

2022-02-10 Thread GitBox


jedcunningham commented on a change in pull request #21222:
URL: https://github.com/apache/airflow/pull/21222#discussion_r804016587



##
File path: chart/tests/test_elasticsearch_secret.py
##
@@ -132,3 +132,30 @@ def 
test_should_generate_secret_with_specified_schemes(self, scheme):
 )
 
 assert f"{scheme}://username:password@elastichostname:9200" == 
connection
+
+@parameterized.expand(
+[
+# When both user and password are empty.
+({}, ""),
+# When password is empty
+({"user": "admin"}, ""),
+# When user is empty
+({"pass": "password"}, ""),
+# Valid username/password
+({"user": "admin", "pass": "password"}, "admin:password"),
+],
+)
+def test_url_generated_when_user_pass_empty_combinations(self, 
extra_conn_kwargs, expected_user_info):
+connection = self._get_connection(
+{
+"elasticsearch": {
+"enabled": True,
+"connection": {"host": "elastichostname", "port": 8080, 
**extra_conn_kwargs},
+}
+}
+)
+
+if not expected_user_info:
+assert f"http://elastichostname:8080"; == connection

Review comment:
   ```suggestion
   assert "http://elastichostname:8080"; == connection
   ```
   
   Should fix the static check.




-- 
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: commits-unsubscr...@airflow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org




[GitHub] [airflow] jedcunningham commented on a change in pull request #21222: Helm: Fix elasticsearch URL in secret when username/password fields are empty,

2022-02-07 Thread GitBox


jedcunningham commented on a change in pull request #21222:
URL: https://github.com/apache/airflow/pull/21222#discussion_r801116690



##
File path: chart/tests/test_elasticsearch_secret.py
##
@@ -132,3 +132,39 @@ def 
test_should_generate_secret_with_specified_schemes(self, scheme):
 )
 
 assert f"{scheme}://username:password@elastichostname:9200" == 
connection
+
+def test_url_generated_when_user_is_empty(self):
+connection = self._get_connection(
+{
+"elasticsearch": {
+"enabled": True,
+"connection": {"pass": "password", "host": 
"elastichostname", "port": 8080},
+}
+}
+)
+
+assert "http://elastichostname:8080"; == connection
+
+def test_url_generated_when_password_is_empty(self):
+connection = self._get_connection(
+{
+"elasticsearch": {
+"enabled": True,
+"connection": {"user": "admin", "host": "elastichostname", 
"port": 8080},
+}
+}
+)
+
+assert "http://elastichostname:8080"; == connection
+
+def test_url_generated_with_valid_user_password(self):
+connection = self._get_connection(
+{
+"elasticsearch": {
+"enabled": True,
+"connection": {"user": "admin", "pass": "pass", "host": 
"elastichostname", "port": 8080},
+}
+}
+)
+
+assert "http://admin:pass@elastichostname:8080"; == connection

Review comment:
   I was kinda thinking something like this (untested, but might help?):
   
   ```
   @parameterized([
   ({}, ""),
   ({"user": "admin", ""),
   ({"pass": "password", ""),
   ({"user": "admin", "pass": "password", "admin:password"),
   ])
   def test_something(self, extra_conn_kwargs, expected_userinfo):
   connection = self._get_connection({
  "elasticsearch": {
   "enabled": True,
   "connection": {
   "host": "elastichostname",
   "port": 8080,
   **extra_conn_kwargs
}
   }
   })
   
   assert f"http://{expected_userinfo}@elastichostname:8080"; == connection
   
   
   I think not being a tuple might be your issue?
   




-- 
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: commits-unsubscr...@airflow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org




[GitHub] [airflow] jedcunningham commented on a change in pull request #21222: Helm: Fix elasticsearch URL in secret when username/password fields are empty,

2022-02-07 Thread GitBox


jedcunningham commented on a change in pull request #21222:
URL: https://github.com/apache/airflow/pull/21222#discussion_r800945294



##
File path: chart/templates/secrets/elasticsearch-secret.yaml
##
@@ -33,6 +33,14 @@ metadata:
 type: Opaque
 data:
   {{- with .Values.elasticsearch.connection }}
-  connection: {{ urlJoin (dict "scheme" (default "http" .scheme) "userinfo" 
(printf "%s:%s" (.user | urlquery) (.pass | urlquery)) "host" (printf "%s:%s" 
.host ((default 9200 .port) | toString) ) ) | b64enc | quote }}
-  {{- end }}
+{{- if .user }}
+  {{- if .pass }}
+  connection: {{ urlJoin (dict "scheme" (default "http" .scheme) 
"userinfo" (printf "%s:%s" (.user | urlquery) (.pass | urlquery)) "host" 
(printf "%s:%s" .host ((default 9200 .port) | toString) ) ) | b64enc | quote }}
+  {{- else}}
+  connection: {{ urlJoin (dict "scheme" (default "http" .scheme) "host" 
(printf "%s:%s" .host ((default 9200 .port) | toString))) | b64enc | quote }}
+  {{- end }}

Review comment:
   ```suggestion
   {{- if and .user .pass }}
 connection: {{ urlJoin (dict "scheme" (default "http" .scheme) 
"userinfo" (printf "%s:%s" (.user | urlquery) (.pass | urlquery)) "host" 
(printf "%s:%s" .host ((default 9200 .port) | toString) ) ) | b64enc | quote }}
   ```
   
   This is simpler.

##
File path: chart/tests/test_elasticsearch_secret.py
##
@@ -132,3 +132,39 @@ def 
test_should_generate_secret_with_specified_schemes(self, scheme):
 )
 
 assert f"{scheme}://username:password@elastichostname:9200" == 
connection
+
+def test_url_generated_when_user_is_empty(self):
+connection = self._get_connection(
+{
+"elasticsearch": {
+"enabled": True,
+"connection": {"pass": "password", "host": 
"elastichostname", "port": 8080},
+}
+}
+)
+
+assert "http://elastichostname:8080"; == connection
+
+def test_url_generated_when_password_is_empty(self):
+connection = self._get_connection(
+{
+"elasticsearch": {
+"enabled": True,
+"connection": {"user": "admin", "host": "elastichostname", 
"port": 8080},
+}
+}
+)
+
+assert "http://elastichostname:8080"; == connection
+
+def test_url_generated_with_valid_user_password(self):
+connection = self._get_connection(
+{
+"elasticsearch": {
+"enabled": True,
+"connection": {"user": "admin", "pass": "pass", "host": 
"elastichostname", "port": 8080},
+}
+}
+)
+
+assert "http://admin:pass@elastichostname:8080"; == connection

Review comment:
   You don't have a test where neither user/pass are set. It might be 
cleaner to parameterize these as well.




-- 
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: commits-unsubscr...@airflow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org