@@ -235,6 +235,7 @@ def mongoengine_setup(request, app, tmpdir, realdburl):
235235 class Role (db .Document , RoleMixin ):
236236 name = db .StringField (required = True , unique = True , max_length = 80 )
237237 description = db .StringField (max_length = 255 )
238+ permissions = db .StringField (max_length = 255 )
238239 meta = {"db_alias" : db_name }
239240
240241 class User (db .Document , UserMixin ):
@@ -347,6 +348,7 @@ class Role(Base, RoleMixin):
347348 id = Column (Integer (), primary_key = True )
348349 name = Column (String (80 ), unique = True )
349350 description = Column (String (255 ))
351+ permissions = Column (String (255 ))
350352
351353 class User (Base , UserMixin ):
352354 __tablename__ = "user"
@@ -424,12 +426,14 @@ def peewee_setup(request, app, tmpdir, realdburl):
424426
425427 db = FlaskDB (app )
426428
427- class Role (db .Model , RoleMixin ):
429+ class Role (RoleMixin , db .Model ):
428430 name = CharField (unique = True , max_length = 80 )
429431 description = TextField (null = True )
432+ permissions = TextField (null = True )
430433
431- class User (db .Model , UserMixin ):
434+ class User (UserMixin , db .Model ):
432435 email = TextField ()
436+ fs_uniquifier = TextField (unique = True , null = False )
433437 username = TextField ()
434438 security_number = IntegerField (null = True )
435439 password = TextField (null = True )
@@ -455,6 +459,9 @@ class UserRoles(db.Model):
455459 name = property (lambda self : self .role .name )
456460 description = property (lambda self : self .role .description )
457461
462+ def get_permissions (self ):
463+ return self .role .get_permissions ()
464+
458465 with app .app_context ():
459466 for Model in (Role , User , UserRoles ):
460467 Model .drop_table ()
@@ -600,6 +607,27 @@ def client_nc(request, sqlalchemy_app):
600607 return app .test_client (use_cookies = False )
601608
602609
610+ @pytest .fixture (params = ["cl-sqlalchemy" , "c2" , "cl-mongo" , "cl-peewee" ])
611+ def clients (request , app , tmpdir , realdburl ):
612+ if request .param == "cl-sqlalchemy" :
613+ ds = sqlalchemy_setup (request , app , tmpdir , realdburl )
614+ elif request .param == "c2" :
615+ ds = sqlalchemy_session_setup (request , app , tmpdir , realdburl )
616+ elif request .param == "cl-mongo" :
617+ ds = mongoengine_setup (request , app , tmpdir , realdburl )
618+ elif request .param == "cl-peewee" :
619+ ds = peewee_setup (request , app , tmpdir , realdburl )
620+ elif request .param == "cl-pony" :
621+ # Not working yet.
622+ ds = pony_setup (request , app , tmpdir , realdburl )
623+ app .security = Security (app , datastore = ds )
624+ populate_data (app )
625+ if request .param == "cl-peewee" :
626+ # peewee is insistent on a single connection?
627+ ds .db .close_db (None )
628+ return app .test_client ()
629+
630+
603631@pytest .yield_fixture ()
604632def in_app_context (request , sqlalchemy_app ):
605633 app = sqlalchemy_app ()
0 commit comments