Beispiel #1
0
 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()
Beispiel #2
0
    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)
Beispiel #3
0
 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')
Beispiel #7
0
 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()
Beispiel #8
0
 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)
Beispiel #9
0
 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()
Beispiel #11
0
#!/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)