28
28
)
29
29
FAKE_NOTEBOOK = "my-notebook"
30
30
31
- client = TestClient (app )
31
+
32
+ @pytest .fixture ()
33
+ def test_client ():
34
+ return TestClient (app )
32
35
33
36
34
37
@pytest .fixture ()
@@ -131,30 +134,32 @@ def test_complete_notebook_name_from_form(mocker, notebook_name, username, compl
131
134
assert complete_notebook_name_from_form (notebook_name = notebook_name , username = username ) == complete_notebook_name
132
135
133
136
134
- def test_healthz ():
135
- response = client .get ("api/healthz" )
137
+ def test_healthz (test_client ):
138
+ response = test_client .get ("api/healthz" )
136
139
assert response .status_code == 200
137
140
assert response .json ()["status" ] == "Seems healthy"
138
141
139
142
140
- def test_root ():
141
- response = client .get ("/" )
143
+ def test_root (test_client ):
144
+ response = test_client .get ("/" )
142
145
assert response .status_code == 200
143
146
assert response .template .name == "index.html"
144
147
assert response .context ["kube_cluster_name" ] is None
145
148
146
149
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 )
149
152
assert response .status_code == 303
150
153
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
153
157
154
158
155
159
def test_notebooks (mocker , validate_kube_token_mock ):
156
160
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/" )
158
163
helm .assert_called_once_with (
159
164
body = ["list" , "--filter" , f"^nok-{ FAKE_USERNAME } -.+$" , "--all" , "--output" , "json" ], kube_token = FAKE_OIDC_TOKEN
160
165
)
@@ -177,9 +182,8 @@ def test_delete_notebook(mocker, validate_kube_token_mock, existing, helm_list_o
177
182
helm_list_call = mocker .call (
178
183
body = ["list" , "--filter" , f"^{ FAKE_NOTEBOOK } $" , "--all" , "--output" , "json" ], kube_token = FAKE_OIDC_TOKEN
179
184
)
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 )
183
187
assert response .status_code == status_code
184
188
if existing :
185
189
assert response .headers ["location" ] == "/api/notebooks/"
@@ -195,7 +199,8 @@ def test_delete_notebook(mocker, validate_kube_token_mock, existing, helm_list_o
195
199
def test_notebook_events (mocker , validate_kube_token_mock , event ):
196
200
mocker .patch ("notebook_on_kube.main.notebook_exists" , return_value = True )
197
201
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 } " )
199
204
assert response .status_code == 200
200
205
assert (
201
206
response .text
@@ -224,10 +229,10 @@ def test_notebook_events(mocker, validate_kube_token_mock, event):
224
229
def test_scale_notebook (mocker , validate_kube_token_mock , scale ):
225
230
mocker .patch ("notebook_on_kube.main.notebook_exists" , return_value = True )
226
231
kubectl = mocker .patch ("notebook_on_kube.main.kubectl" )
232
+ client = TestClient (app = app , cookies = {"kube_token" : FAKE_OIDC_TOKEN })
227
233
response = client .get (
228
234
f"api/scale_notebook/{ FAKE_NOTEBOOK } ?scale={ scale } " ,
229
- cookies = {"kube_token" : FAKE_OIDC_TOKEN },
230
- allow_redirects = False ,
235
+ follow_redirects = False ,
231
236
)
232
237
assert response .status_code == 303
233
238
assert response .headers ["location" ] == "/api/notebooks/"
@@ -245,9 +250,9 @@ def test_scale_notebook(mocker, validate_kube_token_mock, scale):
245
250
246
251
247
252
def test_new_notebook (validate_kube_token_mock ):
253
+ client = TestClient (app = app , cookies = {"kube_token" : FAKE_OIDC_TOKEN })
248
254
response = client .get (
249
255
"api/new_notebook/" ,
250
- cookies = {"kube_token" : FAKE_OIDC_TOKEN },
251
256
)
252
257
assert response .status_code == 200
253
258
assert response .template .name == "new_notebook.html"
@@ -270,11 +275,11 @@ def test_create_notebook(mocker, validate_kube_token_mock, existing, helm_values
270
275
yaml_load = mocker .spy (yaml , "load" )
271
276
yaml_dump = mocker .spy (yaml , "dump" )
272
277
278
+ client = TestClient (app = app , cookies = {"kube_token" : FAKE_OIDC_TOKEN })
273
279
response = client .post (
274
280
"api/create_notebook/" ,
275
- cookies = {"kube_token" : FAKE_OIDC_TOKEN },
276
281
data = {"notebook_name" : FAKE_NOTEBOOK , "helm_values" : helm_values },
277
- allow_redirects = False ,
282
+ follow_redirects = False ,
278
283
)
279
284
assert response .status_code == status_code
280
285
if not existing :
0 commit comments