Exemple #1
0
    def setUp(self,
              data_dir='example01',
              bgen_names='chr{:d}impv1.bgen',
              bgenix_path='bgenix',
              user_pass_line=None):
        super(TestRestApiGenotype, self).setUp()

        # Load data
        genoq = GenoQuery(get_repository_path(data_dir),
                          bgen_names=bgen_names,
                          bgenix_path=bgenix_path)

        # Configure
        app.app.config['testing'] = True
        app.app.config['auth'] = None
        app.app.config['genoquery'] = genoq

        if user_pass_line is not None:
            f = tempfile.NamedTemporaryFile(delete=False)
            f.close()

            with open(f.name, 'w') as fi:
                fi.write(user_pass_line)

            ph = PasswordHasher(f.name, method='pbkdf2:sha256')
            app.app.config['auth'] = ph.setup_http_basic_auth()

        self.app = app.app.test_client()
Exemple #2
0
    def test_process_users_file_file_does_not_exist_test00(self):
        # prepare
        users_file = get_repository_path('no/existing/file/here.txt')

        # run
        ph = PasswordHasher(users_file, method='pbkdf2:sha256')
        ph.process_users_file()
Exemple #3
0
    def test_process_users_file_one_password_hashed_rest_not_test01(self):
        # prepare
        orig_user_file = get_repository_path('wsgi/test01/users.txt')
        users_file = orig_user_file + '.bak'
        copyfile(orig_user_file, users_file)

        orig_users = self.load_data(orig_user_file)

        # run
        ph = PasswordHasher(users_file, method='pbkdf2:sha256')
        ph.process_users_file()

        # evaluate
        assert os.path.isfile(users_file)

        users = self.load_data(users_file)

        assert len(users) == 3
        for user, password in users.items():
            assert user in orig_users.keys(), user

            if user != 'adams':
                assert password != orig_users[user], user + ' / ' + password + ' / ' + orig_users[user]
            else:
                assert password == users[user], user +  password + ' / ' + users[user]

            assert len(password) == 93, len(password)

        os.remove(users_file)
Exemple #4
0
    def test_process_users_file_already_hashed_test00(self):
        # prepare
        orig_user_file = get_repository_path('wsgi/test00/users.txt')
        users_file = orig_user_file + '.bak'
        copyfile(orig_user_file, users_file)

        orig_users = self.load_data(orig_user_file)
        ph = PasswordHasher(users_file, method='pbkdf2:sha256')
        ph.process_users_file()
        users = self.load_data(users_file)

        # run
        ph = PasswordHasher(users_file, method='pbkdf2:sha256')
        ph.process_users_file()

        # evaluate
        assert os.path.isfile(users_file)

        new_users = self.load_data(users_file)

        assert len(users) == 3
        for user, password in new_users.items():
            assert user in orig_users.keys(), user
            assert password == users[user], password + ' / ' + users[user]
            assert len(password) == 93, len(password)

        os.remove(users_file)
Exemple #5
0
    def test_verify_password_users_file_none_test01(self):
        # prepare
        ph = PasswordHasher(None, method='pbkdf2:sha256')
        ph.process_users_file()

        # evaluate
        assert ph.verify_password('milton', 'whatever')
        assert ph.verify_password('john', 'mypassword')
        assert ph.verify_password('adams', 'anotherpassword')
        assert ph.verify_password('james', 'mypassword')
Exemple #6
0
    def test_verify_password_users_file_does_not_exist_test01(self):
        # prepare
        users_file = get_repository_path('no/existing/file/here.txt')

        ph = PasswordHasher(users_file, method='pbkdf2:sha256')
        ph.process_users_file()

        # evaluate
        assert not ph.verify_password('milton', 'whatever')
        assert not ph.verify_password('john', 'mypassword')
        assert not ph.verify_password('adams', 'anotherpassword')
        assert not ph.verify_password('james', 'mypassword')
Exemple #7
0
    def test_verify_password_users_file_empty_test01(self):
        # prepare
        orig_user_file = get_repository_path('wsgi/test02/users.txt')
        users_file = orig_user_file + '.bak'

        ph = PasswordHasher(users_file, method='pbkdf2:sha256')
        ph.process_users_file()

        # evaluate
        assert not ph.verify_password('milton', 'whatever')
        assert not ph.verify_password('john', 'mypassword')
        assert not ph.verify_password('adams', 'anotherpassword')
        assert not ph.verify_password('james', 'mypassword')
Exemple #8
0
    genoq_parameters = config.get_genoquery_parameters()
    genoq_parameters = update_parameters_from_args(genoq_parameters, args)

    if parameter_empty(genoq_parameters, 'genotype_path'):
        logger.warning('--genotype-path missing')

    genoq = GenoQuery(**genoq_parameters)
    app.config.update({'genoquery': genoq})

    # Pheno2SQL
    pheno2sql_parameters = config.get_pheno2sql_parameters()
    pheno2sql_parameters = update_parameters_from_args(pheno2sql_parameters,
                                                       args)

    if parameter_empty(pheno2sql_parameters, 'db_uri'):
        parser.error('--db-uri missing')

    p2sql = Pheno2SQL(**pheno2sql_parameters)

    app.config.update({'pheno2sql': p2sql})

    ph = PasswordHasher(args.users_file, method='pbkdf2:sha256')
    ph.process_users_file()
    auth = ph.setup_http_basic_auth()
    app.config.update({'auth': auth})

    app.run(host=str(args.host),
            port=args.port,
            debug=args.debug,
            ssl_context='adhoc' if args.ssl_mode else None)
Exemple #9
0
from ukbrest import config
from ukbrest.app import app
from ukbrest.common.genoquery import GenoQuery
from ukbrest.common.pheno2sql import Pheno2SQL
from ukbrest.common.utils.auth import PasswordHasher


def setup_app(app, ph):
    # Add GenoQuery object
    genoq = GenoQuery(**config.get_genoquery_parameters())
    app.config.update({'genoquery': genoq})

    # Add Pheno2SQL object
    p2sql = Pheno2SQL(**config.get_pheno2sql_parameters())
    app.config.update({'pheno2sql': p2sql})

    # Add auth object
    auth = ph.setup_http_basic_auth()
    app.config.update({'auth': auth})


ph = PasswordHasher(config.http_auth_users_file, method='pbkdf2:sha256')
ph.process_users_file()

setup_app(app, ph)