def _test_request_arg_allvalues(self, method, **kwargs): for string in self._argvalues: try: self._test_request_arg(method, string, **kwargs) except AssertionError as exc: self.fail('failed subtest for argument {!r}:\n{}' .format(string, _indented(str(exc), size=2)))
def _request_received_debuglog_message(self): message = '{} {} {}'.format(self.request.remote_ip, self.request.method, self.request.path) if self.request.arguments: args_strs = ['{}: {}'.format(name, value[0]) for name, value in self.request.arguments.items()] message += ' {{{}}}'.format(', '.join(args_strs)) message += ' {!r}'.format(self.request.headers['Accept']) if self.request.body: message += '\n' + _indented(self.request.body, size=2) return message
def create_from_configfile(cls, uris, configfile, configdir): try: slaptest_output = \ _subprocess.check_output(('slaptest', '-f', configfile, '-F', configdir), stderr=_subprocess.STDOUT) except _subprocess.CalledProcessError as exc: raise RuntimeError('invalid config file {!r}: slaptest returned' ' exit code {} with output\n{}' .format(configfile, exc.returncode, _indented(exc.output))) for line in slaptest_output.split('\n'): _logging.debug('slaptest: ' + line) return cls(uris, configloc=configdir)
def _send_unhandled_error_response(self, exc, traceback): self.set_status(self.service._exc_http_statuscode(exc)) try: response = self.request_webmethod.response_fromexc(exc, traceback) except: exc_str = '{}: {}\n{}'.format(exc.__class__.__name__, exc, traceback) try: for mediarange in self.request_acceptable_mediaranges: mediarange, _, _ = mediarange.partition(';') range_major, range_minor = mediarange.split('/', 1) if range_major == '*' \ or (range_major == 'text' and range_minor in ('*', 'plain')): try: self.write(exc_str) except IOError: if self.client_disconnected: return else: raise self.set_header('Content-Type', 'text/plain') except IOError: self.logger.error('no acceptable representation for unhandled' ' exception:\n{}'.format(_indented(exc_str, size=2))) else: if response.content and self.request.method != 'HEAD': try: self.write(response.content) except IOError: if self.client_disconnected: return else: raise if response.mediatype: self.set_header('Content-Type', response.mediatype) else: self.clear_header('Content-Type')
def indented(string, level=1): return _indented(string, level, size=2)