2828)
2929FAKE_NOTEBOOK = "my-notebook"
3030
31- client = TestClient (app )
31+
32+ @pytest .fixture ()
33+ def test_client ():
34+ return TestClient (app )
3235
3336
3437@pytest .fixture ()
@@ -131,30 +134,32 @@ def test_complete_notebook_name_from_form(mocker, notebook_name, username, compl
131134 assert complete_notebook_name_from_form (notebook_name = notebook_name , username = username ) == complete_notebook_name
132135
133136
134- def test_healthz ():
135- response = client .get ("api/healthz" )
137+ def test_healthz (test_client ):
138+ response = test_client .get ("api/healthz" )
136139 assert response .status_code == 200
137140 assert response .json ()["status" ] == "Seems healthy"
138141
139142
140- def test_root ():
141- response = client .get ("/" )
143+ def test_root (test_client ):
144+ response = test_client .get ("/" )
142145 assert response .status_code == 200
143146 assert response .template .name == "index.html"
144147 assert response .context ["kube_cluster_name" ] is None
145148
146149
147- def test_login (validate_kube_token_mock ):
148- response = client .post ("api/login/" , data = {"kube_token" : FAKE_OIDC_TOKEN }, allow_redirects = False )
150+ def test_login (validate_kube_token_mock , test_client ):
151+ response = test_client .post ("api/login/" , data = {"kube_token" : FAKE_OIDC_TOKEN }, follow_redirects = False )
149152 assert response .status_code == 303
150153 assert response .headers ["location" ] == "/api/notebooks/"
151- # We do not send the cookie when connecting to Notebooks (non /api)
152- assert response .cookies .get_dict (path = "/api" )["kube_token" ] == FAKE_OIDC_TOKEN
154+ # Assert we only set the cookie on /api)
155+ assert len (response .cookies ) == 1
156+ assert response .cookies .get (name = "kube_token" , path = "/api" ) == FAKE_OIDC_TOKEN
153157
154158
155159def test_notebooks (mocker , validate_kube_token_mock ):
156160 helm = mocker .patch ("notebook_on_kube.main.helm" , return_value = "{}" )
157- response = client .get ("api/notebooks/" , cookies = {"kube_token" : FAKE_OIDC_TOKEN })
161+ client = TestClient (app = app , cookies = {"kube_token" : FAKE_OIDC_TOKEN })
162+ response = client .get ("api/notebooks/" )
158163 helm .assert_called_once_with (
159164 body = ["list" , "--filter" , f"^nok-{ FAKE_USERNAME } -.+$" , "--all" , "--output" , "json" ], kube_token = FAKE_OIDC_TOKEN
160165 )
@@ -177,9 +182,8 @@ def test_delete_notebook(mocker, validate_kube_token_mock, existing, helm_list_o
177182 helm_list_call = mocker .call (
178183 body = ["list" , "--filter" , f"^{ FAKE_NOTEBOOK } $" , "--all" , "--output" , "json" ], kube_token = FAKE_OIDC_TOKEN
179184 )
180- response = client .post (
181- f"api/delete_notebook/{ FAKE_NOTEBOOK } " , cookies = {"kube_token" : FAKE_OIDC_TOKEN }, allow_redirects = False
182- )
185+ client = TestClient (app = app , cookies = {"kube_token" : FAKE_OIDC_TOKEN })
186+ response = client .post (f"api/delete_notebook/{ FAKE_NOTEBOOK } " , follow_redirects = False )
183187 assert response .status_code == status_code
184188 if existing :
185189 assert response .headers ["location" ] == "/api/notebooks/"
@@ -195,7 +199,8 @@ def test_delete_notebook(mocker, validate_kube_token_mock, existing, helm_list_o
195199def test_notebook_events (mocker , validate_kube_token_mock , event ):
196200 mocker .patch ("notebook_on_kube.main.notebook_exists" , return_value = True )
197201 kubectl = mocker .patch ("notebook_on_kube.main.kubectl" , return_value = event )
198- response = client .get (f"api/notebook_events/{ FAKE_NOTEBOOK } " , cookies = {"kube_token" : FAKE_OIDC_TOKEN })
202+ client = TestClient (app = app , cookies = {"kube_token" : FAKE_OIDC_TOKEN })
203+ response = client .get (f"api/notebook_events/{ FAKE_NOTEBOOK } " )
199204 assert response .status_code == 200
200205 assert (
201206 response .text
@@ -224,10 +229,10 @@ def test_notebook_events(mocker, validate_kube_token_mock, event):
224229def test_scale_notebook (mocker , validate_kube_token_mock , scale ):
225230 mocker .patch ("notebook_on_kube.main.notebook_exists" , return_value = True )
226231 kubectl = mocker .patch ("notebook_on_kube.main.kubectl" )
232+ client = TestClient (app = app , cookies = {"kube_token" : FAKE_OIDC_TOKEN })
227233 response = client .get (
228234 f"api/scale_notebook/{ FAKE_NOTEBOOK } ?scale={ scale } " ,
229- cookies = {"kube_token" : FAKE_OIDC_TOKEN },
230- allow_redirects = False ,
235+ follow_redirects = False ,
231236 )
232237 assert response .status_code == 303
233238 assert response .headers ["location" ] == "/api/notebooks/"
@@ -245,9 +250,9 @@ def test_scale_notebook(mocker, validate_kube_token_mock, scale):
245250
246251
247252def test_new_notebook (validate_kube_token_mock ):
253+ client = TestClient (app = app , cookies = {"kube_token" : FAKE_OIDC_TOKEN })
248254 response = client .get (
249255 "api/new_notebook/" ,
250- cookies = {"kube_token" : FAKE_OIDC_TOKEN },
251256 )
252257 assert response .status_code == 200
253258 assert response .template .name == "new_notebook.html"
@@ -270,11 +275,11 @@ def test_create_notebook(mocker, validate_kube_token_mock, existing, helm_values
270275 yaml_load = mocker .spy (yaml , "load" )
271276 yaml_dump = mocker .spy (yaml , "dump" )
272277
278+ client = TestClient (app = app , cookies = {"kube_token" : FAKE_OIDC_TOKEN })
273279 response = client .post (
274280 "api/create_notebook/" ,
275- cookies = {"kube_token" : FAKE_OIDC_TOKEN },
276281 data = {"notebook_name" : FAKE_NOTEBOOK , "helm_values" : helm_values },
277- allow_redirects = False ,
282+ follow_redirects = False ,
278283 )
279284 assert response .status_code == status_code
280285 if not existing :
0 commit comments