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,31 @@ 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
154
# 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
155
+ assert response .cookies .get ( name = "kube_token" , path = "/api" ) == FAKE_OIDC_TOKEN
153
156
154
157
155
158
def test_notebooks (mocker , validate_kube_token_mock ):
156
159
helm = mocker .patch ("notebook_on_kube.main.helm" , return_value = "{}" )
157
- response = client .get ("api/notebooks/" , cookies = {"kube_token" : FAKE_OIDC_TOKEN })
160
+ client = TestClient (app = app , cookies = {"kube_token" : FAKE_OIDC_TOKEN })
161
+ response = client .get ("api/notebooks/" )
158
162
helm .assert_called_once_with (
159
163
body = ["list" , "--filter" , f"^nok-{ FAKE_USERNAME } -.+$" , "--all" , "--output" , "json" ], kube_token = FAKE_OIDC_TOKEN
160
164
)
@@ -177,9 +181,8 @@ def test_delete_notebook(mocker, validate_kube_token_mock, existing, helm_list_o
177
181
helm_list_call = mocker .call (
178
182
body = ["list" , "--filter" , f"^{ FAKE_NOTEBOOK } $" , "--all" , "--output" , "json" ], kube_token = FAKE_OIDC_TOKEN
179
183
)
180
- response = client .post (
181
- f"api/delete_notebook/{ FAKE_NOTEBOOK } " , cookies = {"kube_token" : FAKE_OIDC_TOKEN }, allow_redirects = False
182
- )
184
+ client = TestClient (app = app , cookies = {"kube_token" : FAKE_OIDC_TOKEN })
185
+ response = client .post (f"api/delete_notebook/{ FAKE_NOTEBOOK } " , follow_redirects = False )
183
186
assert response .status_code == status_code
184
187
if existing :
185
188
assert response .headers ["location" ] == "/api/notebooks/"
@@ -195,7 +198,8 @@ def test_delete_notebook(mocker, validate_kube_token_mock, existing, helm_list_o
195
198
def test_notebook_events (mocker , validate_kube_token_mock , event ):
196
199
mocker .patch ("notebook_on_kube.main.notebook_exists" , return_value = True )
197
200
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 })
201
+ client = TestClient (app = app , cookies = {"kube_token" : FAKE_OIDC_TOKEN })
202
+ response = client .get (f"api/notebook_events/{ FAKE_NOTEBOOK } " )
199
203
assert response .status_code == 200
200
204
assert (
201
205
response .text
@@ -224,10 +228,10 @@ def test_notebook_events(mocker, validate_kube_token_mock, event):
224
228
def test_scale_notebook (mocker , validate_kube_token_mock , scale ):
225
229
mocker .patch ("notebook_on_kube.main.notebook_exists" , return_value = True )
226
230
kubectl = mocker .patch ("notebook_on_kube.main.kubectl" )
231
+ client = TestClient (app = app , cookies = {"kube_token" : FAKE_OIDC_TOKEN })
227
232
response = client .get (
228
233
f"api/scale_notebook/{ FAKE_NOTEBOOK } ?scale={ scale } " ,
229
- cookies = {"kube_token" : FAKE_OIDC_TOKEN },
230
- allow_redirects = False ,
234
+ follow_redirects = False ,
231
235
)
232
236
assert response .status_code == 303
233
237
assert response .headers ["location" ] == "/api/notebooks/"
@@ -245,9 +249,9 @@ def test_scale_notebook(mocker, validate_kube_token_mock, scale):
245
249
246
250
247
251
def test_new_notebook (validate_kube_token_mock ):
252
+ client = TestClient (app = app , cookies = {"kube_token" : FAKE_OIDC_TOKEN })
248
253
response = client .get (
249
254
"api/new_notebook/" ,
250
- cookies = {"kube_token" : FAKE_OIDC_TOKEN },
251
255
)
252
256
assert response .status_code == 200
253
257
assert response .template .name == "new_notebook.html"
@@ -270,11 +274,11 @@ def test_create_notebook(mocker, validate_kube_token_mock, existing, helm_values
270
274
yaml_load = mocker .spy (yaml , "load" )
271
275
yaml_dump = mocker .spy (yaml , "dump" )
272
276
277
+ client = TestClient (app = app , cookies = {"kube_token" : FAKE_OIDC_TOKEN })
273
278
response = client .post (
274
279
"api/create_notebook/" ,
275
- cookies = {"kube_token" : FAKE_OIDC_TOKEN },
276
280
data = {"notebook_name" : FAKE_NOTEBOOK , "helm_values" : helm_values },
277
- allow_redirects = False ,
281
+ follow_redirects = False ,
278
282
)
279
283
assert response .status_code == status_code
280
284
if not existing :
0 commit comments