def setUpClass(cls): app = Eve(settings=SETTINGS) app.debug = True ext = EveMongoengine(app) ext.add_model(TwoFaceDoc) cls.app = app cls.client = app.test_client()
def test_uppercase_resource_names(self): # Sanity Check: the Default Setting is Uppercase Off response = self.client.get('/SimpleDoc') self.assertEqual(response.status_code, 404) # Create a new Eve App with settings to allow Uppercase Resource Names # in the URI. app = Eve(settings=SETTINGS) app.debug = True ext = EveMongoengine(app) ext.add_model(SimpleDoc, lowercase=False) client = app.test_client() d = SimpleDoc(a='Tom', b=223).save() # Sanity Check: Lowercase is Disabled response = client.get('/simpledoc/') self.assertEqual(response.status_code, 404) # Use the Uppercase Resource Name response = client.get('/SimpleDoc/') self.assertEqual(response.status_code, 200) json_data = response.get_json() expected_url = json_data[config.LINKS]['self']['href'] if ':' in expected_url: expected_url = '/' + '/'.join(expected_url.split('/')[1:]) self.assertTrue('SimpleDoc' in expected_url)
def setUpClass(cls): SETTINGS['DOMAIN'] = {'eve-mongoengine': {}} app = Eve(settings=SETTINGS) app.debug = True ext = EveMongoengine(app) ext.add_model([ SimpleDoc, ComplexDoc, LimitedDoc, FieldsDoc, NonStructuredDoc, Inherited, HawkeyDoc ]) cls.ext = ext cls.client = app.test_client() cls.app = app
def test_nondefault_date_created_field(self): # redefine to get entirely new class class SimpleDoc(Document): a = StringField() b = IntField() sett = SETTINGS.copy() sett['DATE_CREATED'] = 'created_at' app = Eve(settings=sett) app.debug = True ext = EveMongoengine(app) ext.add_model(SimpleDoc) app = app.test_client() self._test_default_values(app, SimpleDoc, created_name='created_at')
def test_init_app(self): ext = EveMongoengine() ext.add_model(Dummy) self.assertEqual(ext.models, {}) app = Eve( settings={ 'MONGO_HOST': 'localhost', 'MONGO_PORT': 27017, 'MONGO_DBNAME': 'eve_mongoengine_test', 'DOMAIN': {} }) ext.init_app(app) self.assertEqual(ext.models, {'dummy': Dummy})
def test_nondefault_last_updated_field(self): # redefine to get entirely new class class SimpleDoc(Document): a = StringField() b = IntField() sett = SETTINGS.copy() sett['LAST_UPDATED'] = 'last_change' app = Eve(settings=sett) app.debug = True ext = EveMongoengine(app) ext.add_model(SimpleDoc) client = app.test_client() with app.app_context(): # to get current app's config self._test_default_values(client, SimpleDoc, updated_name='last_change')
def test_datasource_projection(self): SETTINGS['DOMAIN'] = {'eve-mongoengine': {}} app = Eve(settings=SETTINGS) app.debug = True ext = EveMongoengine(app) ext.add_model(SimpleDoc, datasource={'projection': {'b': 0}}) client = app.test_client() d = SimpleDoc(a='Tom', b=223).save() response = client.get('/simpledoc/%s' % d.id) try: self.assertNotIn('b', response.get_json().keys()) # here it should return the field, but sadly, does not #response = client.get('/simpledoc/%s?projection={"b":1}' % d.id) #self.assertIn('b', response.get_json().keys()) finally: d.delete()
def test_uppercase_resource_names(self): # test default lowercase response = self.client.get('/SimpleDoc') self.assertEqual(response.status_code, 404) # uppercase app = Eve(settings=SETTINGS) app.debug = True ext = EveMongoengine(app) ext.add_model(SimpleDoc, lowercase=False) client = app.test_client() d = SimpleDoc(a='Tom', b=223).save() response = client.get('/SimpleDoc/') self.assertEqual(response.status_code, 200) json_data = response.get_json() expected_url = json_data[config.LINKS]['self']['href'] if ':' in expected_url: expected_url = '/' + '/'.join(expected_url.split('/')[1:]) self.assertEqual(expected_url, '/SimpleDoc') # not lowercase when uppercase response = client.get('/simpledoc/') self.assertEqual(response.status_code, 404)
def setUpClass(cls): SETTINGS["DOMAIN"] = {"eve-mongoengine": {}} app = Eve(settings=SETTINGS) app.debug = True with app.app_context(): ext = EveMongoengine(app) for Doc in ( SimpleDoc, ComplexDoc, LimitedDoc, FieldsDoc, NonStructuredDoc, Inherited, SensitiveInfoDoc, ): ext.add_model( Doc, resource_methods=["GET", "POST", "DELETE"], item_methods=["GET", "PATCH", "PUT", "DELETE"], ) ext.add_model(SensitiveInfoDoc, resource_name="user") cls.ext = ext cls.client = app.test_client() cls.app = app
def create_app(self, *models): app = Eve(settings=SETTINGS) app.debug = True ext = EveMongoengine(app) ext.add_model(models) return app.test_client()
#!/usr/bin/env python import config from flask import request from eve import Eve from eve_mongoengine import EveMongoengine from eve.auth import TokenAuth from models import * class ApiTokenAuth(TokenAuth): def authorized(self, allowed_roles, resource, method): token = request.headers.get(config.EVE_AUTH_HEADER_NAME) if User.check_api_token(token): return True else: return False if __name__ == '__main__': app = Eve(auth=ApiTokenAuth, settings=config.EVE_SETTINGS) ext = EveMongoengine(app) ext.add_model(User) ext.add_model(Message) ext.add_model(GPSDevice) app.debug = True app.run(host='0.0.0.0', port=5000)