@@ -24,7 +24,9 @@ def test_auth_callback_success(monkeypatch, dontwait, timeout, reuse_port) -> No
2424 monkeypatch .setenv ("SNOWFLAKE_AUTH_SOCKET_REUSE_PORT" , reuse_port )
2525 monkeypatch .setenv ("SNOWFLAKE_AUTH_SOCKET_MSG_DONTWAIT" , dontwait )
2626 test_response : requests .Response | None = None
27- with AuthHttpServer ("http://127.0.0.1/test_request" ) as callback_server :
27+ with AuthHttpServer (
28+ "http://127.0.0.1/test_request" ,
29+ ) as callback_server :
2830
2931 def request_callback ():
3032 nonlocal test_response
@@ -57,7 +59,155 @@ def request_callback():
5759def test_auth_callback_timeout (monkeypatch , dontwait , timeout , reuse_port ) -> None :
5860 monkeypatch .setenv ("SNOWFLAKE_AUTH_SOCKET_REUSE_PORT" , reuse_port )
5961 monkeypatch .setenv ("SNOWFLAKE_AUTH_SOCKET_MSG_DONTWAIT" , dontwait )
60- with AuthHttpServer ("http://127.0.0.1/test_request" ) as callback_server :
62+ with AuthHttpServer (
63+ "http://127.0.0.1/test_request" ,
64+ ) as callback_server :
6165 block , client_socket = callback_server .receive_block (timeout = timeout )
6266 assert block is None
6367 assert client_socket is None
68+
69+
70+ @pytest .mark .parametrize (
71+ "socket_host" ,
72+ [
73+ "127.0.0.1" ,
74+ "localhost" ,
75+ ],
76+ )
77+ @pytest .mark .parametrize (
78+ "socket_port" ,
79+ [
80+ "" ,
81+ ":0" ,
82+ ":12345" ,
83+ ],
84+ )
85+ @pytest .mark .parametrize (
86+ "redirect_host" ,
87+ [
88+ "127.0.0.1" ,
89+ "localhost" ,
90+ ],
91+ )
92+ @pytest .mark .parametrize (
93+ "redirect_port" ,
94+ [
95+ "" ,
96+ ":0" ,
97+ ":12345" ,
98+ ],
99+ )
100+ @pytest .mark .parametrize (
101+ "dontwait" ,
102+ ["false" , "true" ],
103+ )
104+ @pytest .mark .parametrize ("reuse_port" , ["true" , "false" ])
105+ def test_auth_callback_server_updates_localhost_redirect_uri_port_to_match_socket_port (
106+ monkeypatch ,
107+ socket_host ,
108+ socket_port ,
109+ redirect_host ,
110+ redirect_port ,
111+ dontwait ,
112+ reuse_port ,
113+ ) -> None :
114+ monkeypatch .setenv ("SNOWFLAKE_AUTH_SOCKET_REUSE_PORT" , reuse_port )
115+ monkeypatch .setenv ("SNOWFLAKE_AUTH_SOCKET_MSG_DONTWAIT" , dontwait )
116+ with AuthHttpServer (
117+ uri = f"http://{ socket_host } { socket_port } /test_request" ,
118+ redirect_uri = f"http://{ redirect_host } { redirect_port } /test_request" ,
119+ ) as callback_server :
120+ assert callback_server ._redirect_uri .port == callback_server .port
121+
122+
123+ @pytest .mark .parametrize (
124+ "socket_host" ,
125+ [
126+ "127.0.0.1" ,
127+ "localhost" ,
128+ ],
129+ )
130+ @pytest .mark .parametrize (
131+ "socket_port" ,
132+ [
133+ "" ,
134+ ":0" ,
135+ ":12345" ,
136+ ],
137+ )
138+ @pytest .mark .parametrize (
139+ "redirect_host" ,
140+ [
141+ "127.0.0.1" ,
142+ "localhost" ,
143+ ],
144+ )
145+ @pytest .mark .parametrize (
146+ "redirect_port" ,
147+ [
148+ 54321 ,
149+ 54320 ,
150+ ],
151+ )
152+ @pytest .mark .parametrize (
153+ "dontwait" ,
154+ ["false" , "true" ],
155+ )
156+ @pytest .mark .parametrize ("reuse_port" , ["true" , "false" ])
157+ def test_auth_callback_server_uses_redirect_uri_port_when_specified (
158+ monkeypatch ,
159+ socket_host ,
160+ socket_port ,
161+ redirect_host ,
162+ redirect_port ,
163+ dontwait ,
164+ reuse_port ,
165+ ) -> None :
166+ monkeypatch .setenv ("SNOWFLAKE_AUTH_SOCKET_REUSE_PORT" , reuse_port )
167+ monkeypatch .setenv ("SNOWFLAKE_AUTH_SOCKET_MSG_DONTWAIT" , dontwait )
168+ with AuthHttpServer (
169+ uri = f"http://{ socket_host } { socket_port } /test_request" ,
170+ redirect_uri = f"http://{ redirect_host } :{ redirect_port } /test_request" ,
171+ ) as callback_server :
172+ assert callback_server .port == redirect_port
173+ assert callback_server ._redirect_uri .port == redirect_port
174+
175+
176+ @pytest .mark .parametrize (
177+ "socket_host" ,
178+ [
179+ "127.0.0.1" ,
180+ "localhost" ,
181+ ],
182+ )
183+ @pytest .mark .parametrize (
184+ "socket_port" ,
185+ [
186+ "" ,
187+ ":0" ,
188+ ":12345" ,
189+ ],
190+ )
191+ @pytest .mark .parametrize (
192+ "redirect_port" ,
193+ [
194+ "" ,
195+ ":0" ,
196+ ":12345" ,
197+ ],
198+ )
199+ @pytest .mark .parametrize (
200+ "dontwait" ,
201+ ["false" , "true" ],
202+ )
203+ @pytest .mark .parametrize ("reuse_port" , ["true" , "false" ])
204+ def test_auth_callback_server_does_not_updates_nonlocalhost_redirect_uri_port_to_match_socket_port (
205+ monkeypatch , socket_host , socket_port , redirect_port , dontwait , reuse_port
206+ ) -> None :
207+ monkeypatch .setenv ("SNOWFLAKE_AUTH_SOCKET_REUSE_PORT" , reuse_port )
208+ monkeypatch .setenv ("SNOWFLAKE_AUTH_SOCKET_MSG_DONTWAIT" , dontwait )
209+ redirect_uri = f"http://not_localhost{ redirect_port } /test_request"
210+ with AuthHttpServer (
211+ uri = f"http://{ socket_host } { socket_port } /test_request" , redirect_uri = redirect_uri
212+ ) as callback_server :
213+ assert callback_server .redirect_uri == redirect_uri
0 commit comments