6
6
import dateutil
7
7
from allauth .socialaccount .models import SocialAccount
8
8
from django .contrib .auth .models import User
9
+ from django .core .validators import URLValidator
9
10
from django .http import QueryDict
10
11
from django .test import TestCase , override_settings
11
12
from django .urls import reverse
@@ -299,12 +300,14 @@ def test_response_building(self):
299
300
'version_slug' : version .slug ,
300
301
},
301
302
)
303
+ url_validator = URLValidator (verify_exists = False , schemes = ["https" ])
302
304
build = resp .data
303
- self .assertEqual (build ['state' ], 'cloning' )
304
- self .assertEqual (build ['error' ], '' )
305
- self .assertEqual (build ['exit_code' ], 0 )
306
- self .assertEqual (build ['success' ], True )
307
- self .assertEqual (build ['docs_url' ], dashboard_url )
305
+ self .assertEqual (build ["state" ], "cloning" )
306
+ self .assertEqual (build ["error" ], "" )
307
+ self .assertEqual (build ["exit_code" ], 0 )
308
+ self .assertEqual (build ["success" ], True )
309
+ self .assertTrue (build ["docs_url" ].endswith (dashboard_url ))
310
+ self .assertTrue (url_validator .validate (build ["docs_url" ]))
308
311
309
312
@override_settings (DOCROOT = "/home/docs/checkouts/readthedocs.org/user_builds" )
310
313
def test_response_finished_and_success (self ):
@@ -381,6 +384,7 @@ def test_response_finished_and_fail(self):
381
384
382
385
resp = client .get ('/api/v2/build/{build}/' .format (build = build .pk ))
383
386
self .assertEqual (resp .status_code , 200 )
387
+ url_validator = URLValidator (verify_exists = False , schemes = ["https" ])
384
388
385
389
dashboard_url = reverse (
386
390
'project_version_detail' ,
@@ -390,11 +394,12 @@ def test_response_finished_and_fail(self):
390
394
},
391
395
)
392
396
build = resp .data
393
- self .assertEqual (build ['state' ], 'finished' )
394
- self .assertEqual (build ['error' ], '' )
395
- self .assertEqual (build ['exit_code' ], 1 )
396
- self .assertEqual (build ['success' ], False )
397
- self .assertEqual (build ['docs_url' ], dashboard_url )
397
+ self .assertEqual (build ["state" ], "finished" )
398
+ self .assertEqual (build ["error" ], "" )
399
+ self .assertEqual (build ["exit_code" ], 1 )
400
+ self .assertEqual (build ["success" ], False )
401
+ self .assertTrue (build ["docs_url" ].endswith (dashboard_url ))
402
+ self .assertTrue (url_validator .validate (build ["docs_url" ]))
398
403
399
404
def test_make_build_without_permission (self ):
400
405
"""Ensure anonymous/non-staff users cannot write the build endpoint."""
0 commit comments