3
3
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
4
5
5
import pytest
6
+ from requests .packages .urllib3 .util .retry import Retry
6
7
7
8
8
9
@pytest .fixture (autouse = True )
@@ -20,32 +21,32 @@ def test_ignore_bad_url_by_default(testdir, httpserver):
20
21
def test_enable_verify_via_cli (testdir , httpserver , monkeypatch ):
21
22
testdir .makepyfile ('def test_pass(): pass' )
22
23
monkeypatch .setenv ('VERIFY_BASE_URL' , False )
24
+ monkeypatch .setattr (Retry , 'BACKOFF_MAX' , 0.5 )
23
25
status_code = 500
24
26
httpserver .serve_content (content = '<h1>Error!</h1>' , code = status_code )
25
27
reprec = testdir .inline_run ('--base-url' , httpserver .url ,
26
28
'--verify-base-url' )
27
29
passed , skipped , failed = reprec .listoutcomes ()
28
30
assert len (failed ) == 1
29
31
out = failed [0 ].longrepr .reprcrash .message
30
- assert 'UsageError: Base URL failed verification!' in out
31
- assert 'URL: {0}' .format (httpserver .url ) in out
32
- assert 'Response status code: {0}' .format (status_code ) in out
33
- assert 'Response headers: ' in out
32
+ assert 'Max retries exceeded with url:' in out
33
+ assert 'Caused by ResponseError' in out
34
+ assert 'too many 500 error responses' in out
34
35
35
36
36
37
def test_enable_verify_via_env (testdir , httpserver , monkeypatch ):
37
38
testdir .makepyfile ('def test_pass(): pass' )
38
39
monkeypatch .setenv ('VERIFY_BASE_URL' , True )
40
+ monkeypatch .setattr (Retry , 'BACKOFF_MAX' , 0.5 )
39
41
status_code = 500
40
42
httpserver .serve_content (content = '<h1>Error!</h1>' , code = status_code )
41
43
reprec = testdir .inline_run ('--base-url' , httpserver .url )
42
44
passed , skipped , failed = reprec .listoutcomes ()
43
45
assert len (failed ) == 1
44
46
out = failed [0 ].longrepr .reprcrash .message
45
- assert 'UsageError: Base URL failed verification!' in out
46
- assert 'URL: {0}' .format (httpserver .url ) in out
47
- assert 'Response status code: {0}' .format (status_code ) in out
48
- assert 'Response headers: ' in out
47
+ assert 'Max retries exceeded with url:' in out
48
+ assert 'Caused by ResponseError' in out
49
+ assert 'too many 500 error responses' in out
49
50
50
51
51
52
def test_disable_verify_via_env (testdir , httpserver , monkeypatch ):
@@ -54,3 +55,17 @@ def test_disable_verify_via_env(testdir, httpserver, monkeypatch):
54
55
httpserver .serve_content (content = '<h1>Error!</h1>' , code = 500 )
55
56
result = testdir .runpytest ('--base-url' , httpserver .url )
56
57
assert result .ret == 0
58
+
59
+
60
+ def test_url_fails (testdir , httpserver , monkeypatch ):
61
+ testdir .makepyfile ('def test_pass(): pass' )
62
+ monkeypatch .setenv ('VERIFY_BASE_URL' , False )
63
+ monkeypatch .setattr (Retry , 'BACKOFF_MAX' , 0.5 )
64
+ reprec = testdir .inline_run ('--base-url' , 'http://foo' ,
65
+ '--verify-base-url' )
66
+ passed , skipped , failed = reprec .listoutcomes ()
67
+ out = failed [0 ].longrepr .reprcrash .message
68
+ assert len (failed ) == 1
69
+ assert 'Max retries exceeded with url:' in out
70
+ assert 'Caused by NewConnectionError' in out
71
+ assert 'Failed to establish a new connection' in out
0 commit comments