def manage_logs(): payload = dict(request.values.items()) if '_public_key' not in payload: abort(400) stream = db.Stream.find_one({'public_key': payload['_public_key']}) if not KeyMaster.check(payload, stream['private_key']): abort(400) log_data = KeyMaster.remove_keys(payload) if request.method == 'GET': resp = u'[' + ', '.join([log.to_json() for log in db[stream['log_collection']].Log.find(log_data)]) + ']' elif request.method == 'POST': log = db[stream['log_collection']].Log() for key, value in log_data.items(): log[key] = value try: log.save() resp = json.dumps({'status': 'success'}) except: resp = json.dumps({'status': 'error'}) else: abort(400) return Response(resp, status='200', mimetype='application/json')
def test_check_valid_request(self): signed_payload = KeyMaster.sign(self.payload, self.private_key) self.assertTrue(KeyMaster.check(signed_payload, self.private_key))
def test_authenticate_invalid_request_invalid_private_key(self): signed_payload = KeyMaster.sign(self.payload, self.private_key) self.assertFalse(KeyMaster.check(signed_payload, 'anotherkey'))
def test_check_invalid_payload(self): self.assertFalse(KeyMaster.check('wrongwongiswrong', 'gonnachoke'))