1717CLIENT_KEY_ENV = "CLIENT_SECRET"
1818
1919
20+ class Secret :
21+ """
22+ Class to hold sensitive data in testing. This prevents passwords
23+ and such to be printed in logs or any other reports.
24+ More info: https://github.com/pytest-dev/pytest/issues/8613
25+ NOTE: be careful, assert Secret("") == "" would still print
26+ on failure
27+ """
28+
29+ def __init__ (self , value ):
30+ self .value = value
31+
32+ def __repr__ (self ):
33+ return "Secret(********)"
34+
35+ def __str___ (self ):
36+ return "*******"
37+
38+
2039def must_env (var_name : str ) -> str :
2140 assert var_name in environ , f"Expected { var_name } to be provided in environment"
2241 LOGGER .info (f"{ var_name } : { environ [var_name ]} " )
@@ -39,8 +58,8 @@ def client_id() -> str:
3958
4059
4160@fixture (scope = "session" )
42- def client_key () -> str :
43- return urllib .parse .quote_plus (must_env (CLIENT_KEY_ENV ))
61+ def client_key () -> Secret :
62+ return Secret ( urllib .parse .quote_plus (must_env (CLIENT_KEY_ENV ) ))
4463
4564
4665@fixture (scope = "session" )
@@ -51,27 +70,27 @@ def account_name() -> str:
5170@fixture (scope = "session" )
5271def engine (
5372 client_id : str ,
54- client_key : str ,
73+ client_key : Secret ,
5574 database_name : str ,
5675 engine_name : str ,
5776 account_name : str ,
5877) -> Engine :
5978 return create_engine (
60- f"firebolt://{ client_id } :{ client_key } @{ database_name } /{ engine_name } "
79+ f"firebolt://{ client_id } :{ client_key . value } @{ database_name } /{ engine_name } "
6180 + f"?account_name={ account_name } "
6281 )
6382
6483
6584@fixture (scope = "session" )
6685def engine_service_account (
6786 client_id : str ,
68- client_key : str ,
87+ client_key : Secret ,
6988 database_name : str ,
7089 engine_name : str ,
7190 account_name : str ,
7291) -> Engine :
7392 return create_engine (
74- f"firebolt://{ client_id } :{ client_key } @{ database_name } /{ engine_name } "
93+ f"firebolt://{ client_id } :{ client_key . value } @{ database_name } /{ engine_name } "
7594 + f"?account_name={ account_name } "
7695 )
7796
@@ -91,14 +110,14 @@ def connection_service_account(engine_service_account: Engine) -> Connection:
91110@fixture ()
92111def async_engine (
93112 client_id : str ,
94- client_key : str ,
113+ client_key : Secret ,
95114 database_name : str ,
96115 engine_name : str ,
97116 account_name : str ,
98117) -> Engine :
99118 return create_async_engine (
100- f"asyncio+firebolt://{ client_id } :{ client_key } @{ database_name } /{ engine_name } "
101- + f"?account_name={ account_name } "
119+ f"asyncio+firebolt://{ client_id } :{ client_key . value } @{ database_name } /"
120+ + f"{ engine_name } ?account_name={ account_name } "
102121 )
103122
104123
0 commit comments