def testDangerousParamsRestRequestLogging(server, admin, freshLog, requestParams, logParams): server.request('/folder', params=requestParams) records = Record().find() assert records.count() == 1 details = records[0]['details'] assert details['params'] == logParams
def testDocumentCreationLogging(server, freshLog): user = User().createUser('admin', 'password', 'first', 'last', '*****@*****.**') records = Record().find(sort=[('when', 1)]) assert records.count() == 3 assert records[0]['details']['collection'] == 'user' assert records[0]['details']['id'] == user['_id'] assert records[1]['details']['collection'] == 'folder' assert records[2]['details']['collection'] == 'folder'
def testFailedRestRequestLogging(server, freshLog): server.request('/folder', method='POST', params={ 'name': 'Foo', 'parentId': 'foo' }) records = Record().find() assert records.count() == 1 details = records[0]['details'] assert details['method'] == 'POST' assert details['status'] == 401 assert details['route'] == ['folder'] assert details['params'] == {'name': 'Foo', 'parentId': 'foo'}
def testAnonymousRestRequestLogging(server, freshLog): Record().collection.delete_many({}) # Clear existing records server.request('/user/me') records = Record().find() assert records.count() == 1 record = records[0] assert record['ip'] == '127.0.0.1' assert record['type'] == 'rest.request' assert record['userId'] is None assert isinstance(record['when'], datetime.datetime) assert record['details']['method'] == 'GET' assert record['details']['status'] == 200 assert record['details']['route'] == ['user', 'me'] assert record['details']['params'] == {}
def freshLog(): Record().collection.drop() # Clear existing records yield auditLogger for handler in auditLogger.handlers: auditLogger.removeHandler(handler)
def cleanup(days, types): filter = {'when': {'$lt': datetime.datetime.utcnow() - datetime.timedelta(days=days)}} if types: filter['type'] = {'$in': types.split(',')} click.echo('Deleted %d log entries.' % Record().collection.delete_many(filter).deleted_count)
def testDisableLoggingOnNotificationEndpoints(server, user, freshLog): server.request('/user/me') server.request('/notification', user=user) server.request('/notification/stream', params={'timeout': 0}, user=user, isJson=False) assert Record().find().count() == 1
def testDownloadLogging(server, admin, fsAssetstore, freshLog): folder = Folder().find({'parentId': admin['_id'], 'name': 'Public'})[0] file = Upload().uploadFromFile(io.BytesIO(b'hello'), size=5, name='test', parentType='folder', parent=folder, user=admin, assetstore=fsAssetstore) Record().collection.remove({}) # Clear existing records File().download(file, headers=False, offset=2, endByte=4) records = Record().find() assert records.count() == 1 record = records[0] assert record['ip'] == '127.0.0.1' assert record['type'] == 'file.download' assert record['details']['fileId'] == file['_id'] assert record['details']['startByte'] == 2 assert record['details']['endByte'] == 4 assert isinstance(record['when'], datetime.datetime)
def get_file_download_records(files, start=None, end=None): query = { 'type': 'file.download', 'details.fileId': { '$in': files, }, 'details.startByte': 0 } if (start is not None) or (end is not None): whenClause = {'when': {}} if start is not None: whenClause['when']['$gte'] = dateutil.parser.parse(start) if end is not None: whenClause['when']['$lt'] = dateutil.parser.parse(end) query.update(whenClause) return Record().find(query)
def testAuthenticatedRestRequestLogging(server, admin, freshLog): server.request('/user/me', user=admin) records = Record().find() assert records.count() == 1 record = records[0] assert record['userId'] == admin['_id']
def recordModel(): yield Record()