(self, path, method='GET', body=None, headers=None,
expected_status=200, allowed_warnings=None,
allowed_errors=None)
| 74 | return [] |
| 75 | |
| 76 | def check_url(self, path, method='GET', body=None, headers=None, |
| 77 | expected_status=200, allowed_warnings=None, |
| 78 | allowed_errors=None): |
| 79 | url = self.get_url(path) |
| 80 | red = self.run_redbot(url, method, body, headers) |
| 81 | if not red.response.complete: |
| 82 | if isinstance(red.response.http_error, Exception): |
| 83 | logging.warning((red.response.http_error.desc, vars(red.response.http_error), url)) |
| 84 | raise red.response.http_error.res_error |
| 85 | else: |
| 86 | raise Exception("unknown error; incomplete response") |
| 87 | self.assertEqual(int(red.response.status_code), expected_status) |
| 88 | |
| 89 | allowed_warnings = (allowed_warnings or []) + self.get_allowed_warnings() |
| 90 | allowed_errors = (allowed_errors or []) + self.get_allowed_errors() |
| 91 | |
| 92 | errors = [] |
| 93 | warnings = [] |
| 94 | for msg in red.response.notes: |
| 95 | if msg.level == 'bad': |
| 96 | logger = logging.error |
| 97 | if not isinstance(msg, tuple(allowed_errors)): |
| 98 | errors.append(msg) |
| 99 | elif msg.level == 'warning': |
| 100 | logger = logging.warning |
| 101 | if not isinstance(msg, tuple(allowed_warnings)): |
| 102 | warnings.append(msg) |
| 103 | elif msg.level in ('good', 'info', 'uri'): |
| 104 | logger = logging.info |
| 105 | else: |
| 106 | raise Exception('unknown level' + msg.level) |
| 107 | logger('%s: %s (%s)', msg.category, msg.show_summary('en'), |
| 108 | msg.__class__.__name__) |
| 109 | logger(msg.show_text('en')) |
| 110 | |
| 111 | self.assertEqual(len(warnings) + len(errors), 0, |
| 112 | 'Had %d unexpected warnings and %d errors' % |
| 113 | (len(warnings), len(errors))) |
| 114 | |
| 115 | def run_redbot(self, url, method, body, headers): |
| 116 | red = HttpResource(url, method=method, req_body=body, |
no test coverage detected