def authz(request): """ new-authz command """ if request.method == 'POST' or request.method == 'GET': with Authorization(DEBUG, get_url(request.META), LOGGER) as authorization: if request.method == 'POST': response_dic = authorization.new_post(request.body) else: response_dic = authorization.new_get( request.build_absolute_uri()) # create the response response = JsonResponse(status=response_dic['code'], data=response_dic['data']) # generate additional header elements for element in response_dic['header']: response[element] = response_dic['header'][element] # logging logger_info(LOGGER, request.META['REMOTE_ADDR'], request.META['PATH_INFO'], response_dic) # send response return response else: return JsonResponse(status=405, data={ 'status': 405, 'message': 'Method Not Allowed', 'detail': 'Wrong request type. Expected POST.' })
def authorizations_invalidate(self, uts=uts_now(), report_format='csv', report_name=None): """ authorizations cleanup based on expiry date""" self.logger.debug('Housekeeping.authorization_invalidate({0})'.format(uts)) with Authorization(self.debug, None, self.logger) as authorization: # get expired orders (field_list, authorization_list) = authorization.invalidate(timestamp=uts) # normalize lists (field_list, authorization_list) = self._lists_normalize(field_list, authorization_list, 'authorization') # convert dates into human readable format authorization_list = self._convert_data(authorization_list) if report_name: if authorization_list: # dump report to file if report_format == 'csv': self.logger.debug('Housekeeping.authorizations_invalidate(): Dump in csv-format') csv_list = self._to_list(field_list, authorization_list) self._csv_dump('{0}.{1}'.format(report_name, report_format), csv_list) elif report_format == 'json': self.logger.debug('Housekeeping.authorizations_invalidate(): Dump in json-format') self._json_dump('{0}.{1}'.format(report_name, report_format), authorization_list) else: self.logger.debug('Housekeeping.authorizations_invalidate(): No dump just return report') else: self.logger.debug('Housekeeping.authorizations_invalidate(): No authorizations to dump')
def authz(environ, start_response): """ authorization handling """ if environ['REQUEST_METHOD'] == 'POST' or environ['REQUEST_METHOD'] == 'GET': with Authorization(DEBUG, get_url(environ), LOGGER) as authorization: if environ['REQUEST_METHOD'] == 'POST': try: request_body_size = int(environ.get('CONTENT_LENGTH', 0)) except ValueError: request_body_size = 0 request_body = environ['wsgi.input'].read(request_body_size) response_dic = authorization.new_post(request_body) else: response_dic = authorization.new_get(get_url(environ, True)) # generate header and nonce headers = [('Content-Type', 'application/json')] # enrich header if 'header' in response_dic: for element, value in response_dic['header'].items(): headers.append((element, value)) start_response('{0} {1}'.format(response_dic['code'], HTTP_CODE_DIC[response_dic['code']]), headers) # logging logger_info(LOGGER, environ['REMOTE_ADDR'], environ['PATH_INFO'], response_dic) return [json.dumps(response_dic['data']).encode('utf-8')] else: start_response('405 {0}'.format(HTTP_CODE_DIC[405]), [('Content-Type', 'application/json')]) return [json.dumps({'status':405, 'message':HTTP_CODE_DIC[405], 'detail': 'Wrong request type. Expected POST.'}).encode('utf-8')]
def setUp(self): """ setup unittest """ models_mock = MagicMock() models_mock.acme_srv.db_handler.DBstore.return_value = FakeDBStore modules = {'acme_srv.db_handler': models_mock} patch.dict('sys.modules', modules).start() import logging logging.basicConfig(level=logging.CRITICAL) self.logger = logging.getLogger('test_a2c') from acme_srv.authorization import Authorization self.authorization = Authorization(False, 'http://tester.local', self.logger)