@@ -166,3 +166,97 @@ def test_rename_tree(self):
166166 )
167167 assert rv .status_code == 200
168168 assert rv .json == {"old_name" : "my old name" , "new_name" : "my new name" }
169+
170+ def test_disable_tree (self ):
171+ # fetch tokens
172+ rv = self .client .post (
173+ BASE_URL + "/token/" , json = {"username" : "owner" , "password" : "123" }
174+ )
175+ assert rv .status_code == 200
176+ token_owner = rv .json ["access_token" ]
177+ token_owner_refresh = rv .json ["refresh_token" ]
178+ rv = self .client .post (
179+ BASE_URL + "/token/" , json = {"username" : "admin" , "password" : "123" }
180+ )
181+ assert rv .status_code == 200
182+ token_admin = rv .json ["access_token" ]
183+ # owner can't disable
184+ rv = self .client .post (
185+ BASE_URL + f"/trees/{ self .tree } /disable" ,
186+ headers = {"Authorization" : f"Bearer { token_owner } " },
187+ )
188+ assert rv .status_code == 403
189+ # admin can disable
190+ rv = self .client .post (
191+ BASE_URL + f"/trees/{ self .tree } /disable" ,
192+ headers = {"Authorization" : f"Bearer { token_admin } " },
193+ )
194+ assert rv .status_code == 201
195+ # token does not work
196+ rv = self .client .post (
197+ BASE_URL + "/token/" , json = {"username" : "owner" , "password" : "123" }
198+ )
199+ assert rv .status_code == 503
200+ rv = self .client .post (
201+ BASE_URL + "/token/refresh/" ,
202+ headers = {"Authorization" : f"Bearer { token_owner_refresh } " },
203+ )
204+ assert rv .status_code == 503
205+ rv = self .client .post (
206+ BASE_URL + f"/trees/{ self .tree } /enable" ,
207+ headers = {"Authorization" : f"Bearer { token_admin } " },
208+ )
209+ assert rv .status_code == 201
210+ # works again
211+ rv = self .client .post (
212+ BASE_URL + "/token/" , json = {"username" : "owner" , "password" : "123" }
213+ )
214+ assert rv .status_code == 200
215+ rv = self .client .post (
216+ BASE_URL + "/token/refresh/" ,
217+ headers = {"Authorization" : f"Bearer { token_owner_refresh } " },
218+ )
219+ assert rv .status_code == 200
220+ # and disable again
221+ rv = self .client .post (
222+ BASE_URL + f"/trees/{ self .tree } /disable" ,
223+ headers = {"Authorization" : f"Bearer { token_admin } " },
224+ )
225+ assert rv .status_code == 201
226+ # token does not work
227+ rv = self .client .post (
228+ BASE_URL + "/token/" , json = {"username" : "owner" , "password" : "123" }
229+ )
230+ assert rv .status_code == 503
231+ rv = self .client .post (
232+ BASE_URL + "/token/refresh/" ,
233+ headers = {"Authorization" : f"Bearer { token_owner_refresh } " },
234+ )
235+ assert rv .status_code == 503
236+ rv = self .client .post (
237+ BASE_URL + f"/trees/{ self .tree } /enable" ,
238+ headers = {"Authorization" : f"Bearer { token_admin } " },
239+ )
240+ assert rv .status_code == 201
241+ # works again
242+ rv = self .client .post (
243+ BASE_URL + "/token/" , json = {"username" : "owner" , "password" : "123" }
244+ )
245+ assert rv .status_code == 200
246+ rv = self .client .post (
247+ BASE_URL + "/token/refresh/" ,
248+ headers = {"Authorization" : f"Bearer { token_owner_refresh } " },
249+ )
250+ assert rv .status_code == 200
251+
252+ def test_disable_nonexistant_tree (self ):
253+ rv = self .client .post (
254+ BASE_URL + "/token/" , json = {"username" : "admin" , "password" : "123" }
255+ )
256+ assert rv .status_code == 200
257+ token_admin = rv .json ["access_token" ]
258+ rv = self .client .post (
259+ BASE_URL + "/trees/idontexist/disable" ,
260+ headers = {"Authorization" : f"Bearer { token_admin } " },
261+ )
262+ assert rv .status_code == 404
0 commit comments