@@ -248,6 +248,12 @@ def test_client_edit_preauth(testclient, client, logged_admin, trusted_client, b
248248
249249 res = testclient .get ("/admin/client/edit/" + client .client_id )
250250 res .forms ["clienteditform" ]["client_uri" ] = "https://client.trusted.test"
251+ res .forms ["clienteditform" ]["redirect_uris-0" ] = (
252+ "https://client.trusted.test/redirect1"
253+ )
254+ res .forms ["clienteditform" ]["redirect_uris-1" ] = (
255+ "https://client.trusted.test/redirect2"
256+ )
251257 res = res .forms ["clienteditform" ].submit (name = "action" , value = "edit" )
252258
253259 assert ("success" , "The client has been edited." ) in res .flashes
@@ -263,6 +269,26 @@ def test_client_edit_preauth(testclient, client, logged_admin, trusted_client, b
263269 assert not client .trusted
264270
265271
272+ def test_client_edit_preauth_needs_trusted_redirect_uris (
273+ testclient , client , logged_admin , trusted_client , backend
274+ ):
275+ """A trusted client_uri is not enough: the redirect URIs are where codes are sent."""
276+ res = testclient .get ("/admin/client/edit/" + client .client_id )
277+ res .forms ["clienteditform" ]["client_uri" ] = "https://client.trusted.test"
278+ res .forms ["clienteditform" ]["redirect_uris-0" ] = (
279+ "https://client.trusted.test/redirect1"
280+ )
281+ res = res .forms ["clienteditform" ].submit (name = "action" , value = "edit" )
282+
283+ assert ("success" , "The client has been edited." ) in res .flashes
284+ backend .reload (client )
285+ assert client .redirect_uris == [
286+ "https://client.trusted.test/redirect1" ,
287+ "https://client.test/redirect2" ,
288+ ]
289+ assert not client .trusted
290+
291+
266292def test_client_edit_invalid_uri (testclient , client , logged_admin , trusted_client ):
267293 res = testclient .get ("/admin/client/edit/" + client .client_id )
268294 res .forms ["clienteditform" ]["client_uri" ] = "invalid"
0 commit comments