88
99import os
1010
11- from typing import Union , Tuple , List
11+ from typing import Union , Tuple , List , Optional
1212
1313@library
1414class web_service_keywords (Process ):
1515
1616 _DEFAULT_SQLITE_DB_PATH : str = os .path .abspath (os .path .join (os .path .dirname (__file__ ), ".." , ".." , "tmp" , "robot_cli_affirmation_store.db" ))
1717
18+ _DEFAULT_APP_ROOT : str = 'test/python/flask'
19+
20+ _DEFAULT_LOG_ROOT : str = os .path .abspath (os .path .join (os .path .dirname (__file__ ), '..' , 'log' ))
21+
22+ _DEFAULT_TLS_KEY_PATH : str = 'test/server/mtls/credentials/pg_server_key.pem'
23+
24+ _DEFAULT_TLS_CERT_PATH : str = 'test/server/mtls/credentials/pg_server_cert.pem'
25+
26+ _DEFAULT_MOCKSERVER_PORT_GOOGLE = 1080
27+ _DEFAULT_MOCKSERVER_PORT_GOOGLEADMIN = 1098
28+ _DEFAULT_MOCKSERVER_PORT_STACKQL_AUTH_TESTING = 1170
29+ _DEFAULT_MOCKSERVER_PORT_OKTA = 1090
30+ _DEFAULT_MOCKSERVER_PORT_AWS = 1091
31+ _DEFAULT_MOCKSERVER_PORT_K8S = 1092
32+ _DEFAULT_MOCKSERVER_PORT_GITHUB = 1093
33+ _DEFAULT_MOCKSERVER_PORT_AZURE = 1095
34+ _DEFAULT_MOCKSERVER_PORT_SUMOLOGIC = 1096
35+ _DEFAULT_MOCKSERVER_PORT_DIGITALOCEAN = 1097
36+ _DEFAULT_MOCKSERVER_PORT_OAUTH_CLIENT_CREDENTIALS_TOKEN = 2091
37+ _DEFAULT_MOCKSERVER_PORT_REGISTRY = 1094
38+
1839 def _get_dsn (self ) -> str :
1940 return self ._DEFAULT_SQLITE_DB_PATH
2041
21- def __init__ (self ):
42+ def __init__ (
43+ self ,
44+ log_root : Optional [str ] = None ,
45+ app_root : Optional [str ] = None ,
46+ tls_key_path : Optional [str ] = None ,
47+ tls_cert_path : Optional [str ] = None
48+ ):
49+ _app_root : str = app_root if app_root else self ._DEFAULT_APP_ROOT
50+
51+ self ._log_root : str = log_root if log_root else self ._DEFAULT_LOG_ROOT
52+
2253 self ._affirmation_store_web_service = None
23- self ._web_server_app : str = 'test/python/flask/oauth2/token_srv'
24- self ._github_app : str = 'test/python/flask/github/app'
25- self ._gcp_app : str = 'test/python/flask/gcp/app'
26- self ._okta_app : str = 'test/python/flask/okta/app'
27- self ._static_auth_testing_app : str = 'test/python/flask/static_auth/app'
28- self ._aws_app : str = 'test/python/flask/aws/app'
29- self ._azure_app : str = 'test/python/flask/azure/app'
30- self ._digitalocean_app : str = 'test/python/flask/digitalocean/app'
31- self ._googleadmin_app : str = 'test/python/flask/googleadmin/app'
32- self ._k8s_app : str = 'test/python/flask/k8s/app'
33- self ._registry_app : str = 'test/python/flask/registry/app'
34- self ._sumologic_app : str = 'test/python/flask/sumologic/app'
35- self ._tls_key_path : str = 'test/server/mtls/credentials/pg_server_key.pem'
36- self ._tls_cert_path : str = 'test/server/mtls/credentials/pg_server_cert.pem'
54+
55+ self ._web_server_app : str = f'{ _app_root } /oauth2/token_srv'
56+ self ._github_app : str = f'{ _app_root } /github/app'
57+ self ._gcp_app : str = f'{ _app_root } /gcp/app'
58+ self ._okta_app : str = f'{ _app_root } /okta/app'
59+ self ._static_auth_testing_app : str = f'{ _app_root } /static_auth/app'
60+ self ._aws_app : str = f'{ _app_root } /aws/app'
61+ self ._azure_app : str = f'{ _app_root } /azure/app'
62+ self ._digitalocean_app : str = f'{ _app_root } /digitalocean/app'
63+ self ._googleadmin_app : str = f'{ _app_root } /googleadmin/app'
64+ self ._k8s_app : str = f'{ _app_root } /k8s/app'
65+ self ._registry_app : str = f'{ _app_root } /registry/app'
66+ self ._sumologic_app : str = f'{ _app_root } /sumologic/app'
67+
68+ self ._tls_key_path : str = tls_key_path if tls_key_path else self ._DEFAULT_TLS_KEY_PATH
69+ self ._tls_cert_path : str = tls_cert_path if tls_cert_path else self ._DEFAULT_TLS_CERT_PATH
3770 super ().__init__ ()
3871
3972 @keyword
@@ -51,8 +84,8 @@ def create_oauth2_client_credentials_web_service(
5184 'run' ,
5285 f'--host={ host } ' , # generally, `0.0.0.0`; otherwise, invisible on `docker.host.internal` etc
5386 f'--port={ port } ' ,
54- stdout = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'token-client-credentials-{ port } -stdout.txt' )),
55- stderr = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'token-client-credentials-{ port } -stderr.txt' ))
87+ stdout = os .path .abspath (os .path .join (self . _log_root , f'token-client-credentials-{ port } -stdout.txt' )),
88+ stderr = os .path .abspath (os .path .join (self . _log_root , f'token-client-credentials-{ port } -stderr.txt' ))
5689 )
5790
5891 @keyword
@@ -72,8 +105,8 @@ def create_github_web_service(
72105 f'--port={ port } ' ,
73106 f'--cert={ self ._tls_cert_path } ' ,
74107 f'--key={ self ._tls_key_path } ' ,
75- stdout = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'github-server-{ port } -stdout.txt' )),
76- stderr = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'github-server-{ port } -stderr.txt' ))
108+ stdout = os .path .abspath (os .path .join (self . _log_root , f'github-server-{ port } -stdout.txt' )),
109+ stderr = os .path .abspath (os .path .join (self . _log_root , f'github-server-{ port } -stderr.txt' ))
77110 )
78111
79112 @keyword
@@ -93,8 +126,8 @@ def create_gcp_web_service(
93126 f'--port={ port } ' ,
94127 f'--cert={ self ._tls_cert_path } ' ,
95128 f'--key={ self ._tls_key_path } ' ,
96- stdout = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'gcp-server-{ port } -stdout.txt' )),
97- stderr = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'gcp-server-{ port } -stderr.txt' ))
129+ stdout = os .path .abspath (os .path .join (self . _log_root , f'gcp-server-{ port } -stdout.txt' )),
130+ stderr = os .path .abspath (os .path .join (self . _log_root , f'gcp-server-{ port } -stderr.txt' ))
98131 )
99132
100133 @keyword
@@ -114,8 +147,8 @@ def create_okta_web_service(
114147 f'--port={ port } ' ,
115148 f'--cert={ self ._tls_cert_path } ' ,
116149 f'--key={ self ._tls_key_path } ' ,
117- stdout = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'okta-server-{ port } -stdout.txt' )),
118- stderr = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'okta-server-{ port } -stderr.txt' ))
150+ stdout = os .path .abspath (os .path .join (self . _log_root , f'okta-server-{ port } -stdout.txt' )),
151+ stderr = os .path .abspath (os .path .join (self . _log_root , f'okta-server-{ port } -stderr.txt' ))
119152 )
120153
121154 @keyword
@@ -135,8 +168,8 @@ def create_aws_web_service(
135168 f'--port={ port } ' ,
136169 f'--cert={ self ._tls_cert_path } ' ,
137170 f'--key={ self ._tls_key_path } ' ,
138- stdout = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'aws-server-{ port } -stdout.txt' )),
139- stderr = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'aws-server-{ port } -stderr.txt' ))
171+ stdout = os .path .abspath (os .path .join (self . _log_root , f'aws-server-{ port } -stdout.txt' )),
172+ stderr = os .path .abspath (os .path .join (self . _log_root , f'aws-server-{ port } -stderr.txt' ))
140173 )
141174
142175 @keyword
@@ -156,8 +189,8 @@ def create_static_auth_web_service(
156189 f'--port={ port } ' ,
157190 f'--cert={ self ._tls_cert_path } ' ,
158191 f'--key={ self ._tls_key_path } ' ,
159- stdout = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'static-auth-server-{ port } -stdout.txt' )),
160- stderr = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'static-auth-server-{ port } -stderr.txt' ))
192+ stdout = os .path .abspath (os .path .join (self . _log_root , f'static-auth-server-{ port } -stdout.txt' )),
193+ stderr = os .path .abspath (os .path .join (self . _log_root , f'static-auth-server-{ port } -stderr.txt' ))
161194 )
162195
163196 @keyword
@@ -177,8 +210,8 @@ def create_google_admin_web_service(
177210 f'--port={ port } ' ,
178211 f'--cert={ self ._tls_cert_path } ' ,
179212 f'--key={ self ._tls_key_path } ' ,
180- stdout = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'google-admin-server-{ port } -stdout.txt' )),
181- stderr = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'google-admin-server-{ port } -stderr.txt' ))
213+ stdout = os .path .abspath (os .path .join (self . _log_root , f'google-admin-server-{ port } -stdout.txt' )),
214+ stderr = os .path .abspath (os .path .join (self . _log_root , f'google-admin-server-{ port } -stderr.txt' ))
182215 )
183216
184217 @keyword
@@ -198,8 +231,8 @@ def create_k8s_web_service(
198231 f'--port={ port } ' ,
199232 f'--cert={ self ._tls_cert_path } ' ,
200233 f'--key={ self ._tls_key_path } ' ,
201- stdout = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'k8s-server-{ port } -stdout.txt' )),
202- stderr = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'k8s-server-{ port } -stderr.txt' ))
234+ stdout = os .path .abspath (os .path .join (self . _log_root , f'k8s-server-{ port } -stdout.txt' )),
235+ stderr = os .path .abspath (os .path .join (self . _log_root , f'k8s-server-{ port } -stderr.txt' ))
203236 )
204237
205238 @keyword
@@ -219,8 +252,8 @@ def create_registry_web_service(
219252 f'--port={ port } ' ,
220253 # f'--cert={self._tls_cert_path}',
221254 # f'--key={self._tls_key_path}',
222- stdout = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'registry-server-{ port } -stdout.txt' )),
223- stderr = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'registry-server-{ port } -stderr.txt' ))
255+ stdout = os .path .abspath (os .path .join (self . _log_root , f'registry-server-{ port } -stdout.txt' )),
256+ stderr = os .path .abspath (os .path .join (self . _log_root , f'registry-server-{ port } -stderr.txt' ))
224257 )
225258
226259 @keyword
@@ -240,8 +273,8 @@ def create_azure_web_service(
240273 f'--port={ port } ' ,
241274 f'--cert={ self ._tls_cert_path } ' ,
242275 f'--key={ self ._tls_key_path } ' ,
243- stdout = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'azure-server-{ port } -stdout.txt' )),
244- stderr = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'azure-server-{ port } -stderr.txt' ))
276+ stdout = os .path .abspath (os .path .join (self . _log_root , f'azure-server-{ port } -stdout.txt' )),
277+ stderr = os .path .abspath (os .path .join (self . _log_root , f'azure-server-{ port } -stderr.txt' ))
245278 )
246279
247280 @keyword
@@ -261,8 +294,8 @@ def create_sumologic_web_service(
261294 f'--port={ port } ' ,
262295 f'--cert={ self ._tls_cert_path } ' ,
263296 f'--key={ self ._tls_key_path } ' ,
264- stdout = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'sumologic-server-{ port } -stdout.txt' )),
265- stderr = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'sumologic-server-{ port } -stderr.txt' ))
297+ stdout = os .path .abspath (os .path .join (self . _log_root , f'sumologic-server-{ port } -stdout.txt' )),
298+ stderr = os .path .abspath (os .path .join (self . _log_root , f'sumologic-server-{ port } -stderr.txt' ))
266299 )
267300
268301 @keyword
@@ -282,9 +315,26 @@ def create_digitalocean_web_service(
282315 f'--port={ port } ' ,
283316 f'--cert={ self ._tls_cert_path } ' ,
284317 f'--key={ self ._tls_key_path } ' ,
285- stdout = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'digitalocean-server-{ port } -stdout.txt' )),
286- stderr = os .path .abspath (os .path .join (os . path . dirname ( __file__ ), '..' , 'log' , f'digitalocean-server-{ port } -stderr.txt' ))
318+ stdout = os .path .abspath (os .path .join (self . _log_root , f'digitalocean-server-{ port } -stdout.txt' )),
319+ stderr = os .path .abspath (os .path .join (self . _log_root , f'digitalocean-server-{ port } -stderr.txt' ))
287320 )
321+
322+ @keyword
323+ def start_all_webservers (self , port_dict : Optional [dict ] = None ) -> None :
324+ _port_dict : dict = port_dict if port_dict else {}
325+
326+ self .create_digitalocean_web_service (_port_dict .get ('digitalocean' , self ._DEFAULT_MOCKSERVER_PORT_DIGITALOCEAN ))
327+ self .create_sumologic_web_service (_port_dict .get ('sumologic' , self ._DEFAULT_MOCKSERVER_PORT_SUMOLOGIC ))
328+ self .create_registry_web_service (_port_dict .get ('registry' , self ._DEFAULT_MOCKSERVER_PORT_REGISTRY ))
329+ self .create_k8s_web_service (_port_dict .get ('k8s' , self ._DEFAULT_MOCKSERVER_PORT_K8S ))
330+ self .create_google_admin_web_service (_port_dict .get ('googleadmin' , self ._DEFAULT_MOCKSERVER_PORT_GOOGLEADMIN ))
331+ self .create_azure_web_service (_port_dict .get ('azure' , self ._DEFAULT_MOCKSERVER_PORT_AZURE ))
332+ self .create_aws_web_service (_port_dict .get ('aws' , self ._DEFAULT_MOCKSERVER_PORT_AWS ))
333+ self .create_static_auth_web_service (_port_dict .get ('static_auth_testing' , self ._DEFAULT_MOCKSERVER_PORT_STACKQL_AUTH_TESTING ))
334+ self .create_okta_web_service (_port_dict .get ('okta' , self ._DEFAULT_MOCKSERVER_PORT_OKTA ))
335+ self .create_gcp_web_service (_port_dict .get ('gcp' , self ._DEFAULT_MOCKSERVER_PORT_GOOGLE ))
336+ self .create_github_web_service (_port_dict .get ('github' , self ._DEFAULT_MOCKSERVER_PORT_GITHUB ))
337+ self .create_oauth2_client_credentials_web_service (_port_dict .get ('oauth_client_credentials_token' , self ._DEFAULT_MOCKSERVER_PORT_OAUTH_CLIENT_CREDENTIALS_TOKEN ))
288338
289339 @keyword
290340 def send_get_request (
0 commit comments