def setUp(self): """ Set up an app to test with. """ FlaskTrackUsageTestCase.setUp(self) self.storage = MongoStorage(database=DB, collection=COLL_NAME) # Clean out the storage self.storage.collection.drop() self.track_usage = TrackUsage(self.app, self.storage)
def setUp(self): """ Set up an app to test with. """ FlaskTrackUsageTestCase.setUp(self) self.storage = MongoStorage( database=DB, collection=COLL_NAME ) # Clean out the storage self.storage.collection.drop() self.track_usage = TrackUsage(self.app, self.storage)
class TestMongoStorage(FlaskTrackUsageTestCase): """ Tests MongoDB storage while using it's own connection. """ def setUp(self): """ Set up an app to test with. """ FlaskTrackUsageTestCase.setUp(self) self.storage = MongoStorage(database=DB, collection=COLL_NAME) # Clean out the storage self.storage.collection.drop() self.track_usage = TrackUsage(self.app, self.storage) def test_mongo_storage_data(self): """ Test that data is stored in MongoDB and retrieved correctly. """ self.client.get('/') result = self.storage.collection.find_one() assert result['blueprint'] is None assert result['ip_info'] is None assert result['status'] == 200 self.assertTrue(result['remote_addr'] ) # Should be set with modern versions of Flask assert result['speed'].__class__ is float assert result['view_args'] == {} assert result['url'] == 'http://localhost/' assert result['authorization'] is False assert result['user_agent']['browser'] is None # because of testing assert result['user_agent']['platform'] is None # because of testing assert result['user_agent']['language'] is None # because of testing assert result['user_agent']['version'] is None # because of testing assert result['path'] == '/' assert type(result['date']) is datetime.datetime def test_mongo_storage_get_usage(self): """ Verify we can get usage information in expected ways. """ # Make 3 requests to make sure we have enough records self.client.get('/') self.client.get('/') self.client.get('/') # Limit tests assert len(self.storage.get_usage()) == 3 assert len(self.storage.get_usage(limit=2)) == 2 assert len(self.storage.get_usage(limit=1)) == 1 # Page tests assert len(self.storage.get_usage(limit=2, page=1)) == 2 assert len(self.storage.get_usage(limit=2, page=2)) == 1 # timing tests now = datetime.datetime.utcnow() assert len(self.storage.get_usage(start_date=now)) == 0 assert len(self.storage.get_usage(end_date=now)) == 3 assert len(self.storage.get_usage(end_date=now, limit=2)) == 2
def create_app(config_class=Config): app = Flask(__name__) app.config.from_object(Config) # app.redis = Redis.from_url(app.config['REDIS_URL']) # app.task_queue = rq.Queue(connection=app.redis) db.init_app(app) t = TrackUsage( app, [MongoStorage('PersonalWebsite', 'tracking', Config.MONGO_URI)]) from website.main.routes import main from website.jobs.routes import jobs from website.analytics.routes import analytics_bp app.register_blueprint(main) app.register_blueprint(jobs) app.register_blueprint(analytics_bp) t.include_blueprint(main) return app
class TestMongoStorage(FlaskTrackUsageTestCase): """ Tests MongoDB storage while using it's own connection. """ def setUp(self): """ Set up an app to test with. """ FlaskTrackUsageTestCase.setUp(self) self.storage = MongoStorage( database=DB, collection=COLL_NAME ) # Clean out the storage self.storage.collection.drop() self.track_usage = TrackUsage(self.app, self.storage) def test_mongo_storage_data(self): """ Test that data is stored in MongoDB and retrieved correctly. """ self.client.get('/') result = self.storage.collection.find_one() assert result['blueprint'] is None assert result['ip_info'] is None assert result['status'] == 200 self.assertTrue(result['remote_addr']) # Should be set with modern versions of Flask assert result['speed'].__class__ is float assert result['view_args'] == {} assert result['url'] == 'http://localhost/' assert result['authorization'] is False assert result['user_agent']['browser'] is None # because of testing assert result['user_agent']['platform'] is None # because of testing assert result['user_agent']['language'] is None # because of testing assert result['user_agent']['version'] is None # because of testing assert result['path'] == '/' assert type(result['date']) is datetime.datetime def test_mongo_storage_get_usage(self): """ Verify we can get usage information in expected ways. """ # Make 3 requests to make sure we have enough records self.client.get('/') self.client.get('/') self.client.get('/') # Limit tests assert len(self.storage.get_usage()) == 3 assert len(self.storage.get_usage(limit=2)) == 2 assert len(self.storage.get_usage(limit=1)) == 1 # Page tests assert len(self.storage.get_usage(limit=2, page=1)) == 2 assert len(self.storage.get_usage(limit=2, page=2)) == 1 # timing tests now = datetime.datetime.utcnow() assert len(self.storage.get_usage(start_date=now)) == 0 assert len(self.storage.get_usage(end_date=now)) == 3 assert len(self.storage.get_usage(end_date=now, limit=2)) == 2