# Path: tests_python/util_tests.py
# class TestApp(TestCase):
# 
#     def setUp(self):
#         config = {
#             'SECRET_KEY': 'testing',
#             'SRP_USER_AGENT_EMAIL': 'testing@example.com',
#             'WTF_CSRF_ENABLED': False,
#         }
#         # Default to an ephemeral SQLite DB for testing unless given another
#         # database to connect to.
#         config['SQLALCHEMY_DATABASE_URI'] = env.get('DB', 'sqlite:///')
#         self.app = create_app(config)
#         db.create_all(app=self.app)
# 
#     def tearDown(self):
#         db.drop_all(app=self.app)
# 
# class TestLogin(TestApp):
# 
#     def setUp(self):
#         super(TestLogin, self).setUp()
#         self.auth_methods = [
#                 NullAuth(name='Null Auth 1'),
#                 NullAuth(name='Null Auth 2'),
#         ]
#         self.app.config['SRP_AUTH_METHODS'] = self.auth_methods
#         init_app(self.app)
#         self.normal_name = 'Normal User'
#         self.admin_name = 'Admin User'
#         self.default_authmethod = self.auth_methods[0]
#         with self.app.test_request_context():
#             db.session.add(User(self.normal_name,
#                 self.default_authmethod.name))
#             admin_user = User(self.admin_name, self.default_authmethod.name)
#             admin_user.admin = True
#             db.session.add(admin_user)
#             db.session.commit()
# 
#     def login(self, username=None):
#         if username is None:
#             username = self.normal_name
#         client = self.app.test_client()
#         data = {
#             'name': username,
#             'submit': 'true',
#         }
#         auth_method = self.auth_methods[0]
#         data = {auth_method.safe_name + '-' + field: value for field, value in
#                 data.items()}
#         client.post('/login/', follow_redirects=True, data=data)
#         return client
# 
#     @property
#     def normal_user(self):
#         return User.query.filter_by(name=self.normal_name).one()
# 
#     @property
#     def admin_user(self):
#         return User.query.filter_by(name=self.admin_name).one()


from ..util_tests import TestApp, TestLogin
from evesrp import db
from evesrp.auth import AuthMethod
from evesrp.auth.models import User
import evesrp
from __future__ import absolute_import
from __future__ import unicode_literals


class TestTrampolineView(TestLogin):

    def test_account_creation(self):
        """Tests that the AuthMethod-specific views are being rendered
        properly, including for POST requests.
        """
        with self.app.test_client() as c:
            # Actual request
            resp = c.post('/login/null_auth_1/', follow_redirects=True, data={
                'name': 'Unique User',
                'submit': 'true',
            })
            self.assertIn('Log Out', resp.get_data(as_text=True))
            self.assertIsNotNone(User.query.filter_by(name='Normal User')
                    .first())



# Path: tests_python/util_tests.py
# class TestApp(TestCase):
# 
#     def setUp(self):
#         config = {
#             'SECRET_KEY': 'testing',
#             'SRP_USER_AGENT_EMAIL': 'testing@example.com',
#             'WTF_CSRF_ENABLED': False,
#         }
#         # Default to an ephemeral SQLite DB for testing unless given another
#         # database to connect to.
#         config['SQLALCHEMY_DATABASE_URI'] = env.get('DB', 'sqlite:///')
#         self.app = create_app(config)
#         db.create_all(app=self.app)
# 
#     def tearDown(self):
#         db.drop_all(app=self.app)
# 
# class TestLogin(TestApp):
# 
#     def setUp(self):
#         super(TestLogin, self).setUp()
#         self.auth_methods = [
#                 NullAuth(name='Null Auth 1'),
#                 NullAuth(name='Null Auth 2'),
#         ]
#         self.app.config['SRP_AUTH_METHODS'] = self.auth_methods
#         init_app(self.app)
#         self.normal_name = 'Normal User'
#         self.admin_name = 'Admin User'
#         self.default_authmethod = self.auth_methods[0]
#         with self.app.test_request_context():
#             db.session.add(User(self.normal_name,
#                 self.default_authmethod.name))
#             admin_user = User(self.admin_name, self.default_authmethod.name)
#             admin_user.admin = True
#             db.session.add(admin_user)
#             db.session.commit()
# 
#     def login(self, username=None):
#         if username is None:
#             username = self.normal_name
#         client = self.app.test_client()
#         data = {
#             'name': username,
#             'submit': 'true',
#         }
#         auth_method = self.auth_methods[0]
#         data = {auth_method.safe_name + '-' + field: value for field, value in
#                 data.items()}
#         client.post('/login/', follow_redirects=True, data=data)
#         return client
# 
#     @property
#     def normal_user(self):
#         return User.query.filter_by(name=self.normal_name).one()
# 
#     @property
#     def admin_user(self):
#         return User.query.filter_by(name=self.admin_name).one()


# Path: tests_python/views/test_login.py
from ..util_tests import TestApp, TestLogin
from evesrp import db
from evesrp.auth import AuthMethod
from evesrp.auth.models import User
import evesrp

from __future__ import absolute_import
from __future__ import unicode_literals


class TestTrampolineView(TestLogin):

    def test_account_creation(self):
        """Tests that the AuthMethod-specific views are being rendered
        properly, including for POST requests.
        """
        with self.app.test_client() as c:
            # Actual request
            resp = c.post('/login/null_auth_1/', follow_redirects=True, data={
                'name': 'Unique User',
                'submit': 'true',
            })
            self.assertIn('Log Out', resp.get_data(as_text=True))
            self.assertIsNotNone(User.query.filter_by(name='Normal User')
                    .first())



class TestLoginView(TestLogin):