Ejemplo n.º 1
0
    def test_create_user_graph(self):

        local_auth = LocalAuth(self.settings, self.request.session)
        local_auth.create_user_graph('jdoe')

        assert self.tps.test_triple_presence('urn:sparql:test_askomics', '<urn:sparql:test_askomics:jdoe> rdfg:subGraphOf <urn:sparql:test_askomics>')
        assert not self.tps.test_triple_presence('urn:sparql:test_askomics', '<urn:sparql:test_askomics:jsmith> rdfg:subGraphOf <urn:sparql:test_askomics>')
Ejemplo n.º 2
0
def signup():
    """Register a new user

    Returns
    -------
    json
        Info about the user
    """
    if current_app.iniconfig.getboolean("askomics",
                                        "disable_account_creation"):
        return jsonify({
            'error': True,
            'errorMessage': "Account creation is disabled",
            'user': {}
        }), 500

    user = {}

    data = request.get_json()

    local_auth = LocalAuth(current_app, session)
    local_auth.check_inputs(data)

    if not local_auth.get_error():
        user = local_auth.persist_user(data)
        local_auth.create_user_directories(user['id'], user['username'])
        session['user'] = user

    return jsonify({
        'error': local_auth.get_error(),
        'errorMessage': local_auth.get_error_message(),
        'user': user
    })
Ejemplo n.º 3
0
def delete_account():
    """Remove account"""
    try:
        # Remove user from database
        local_auth = LocalAuth(current_app, session)
        local_auth.delete_user_database(session["user"]["username"])

        # Celery task to delete user's data from filesystem and rdf triplestore
        session_dict = {'user': session['user']}
        current_app.celery.send_task('delete_users_data', (session_dict, [session["user"], ], True))

        # Remove user from session
        session.pop('user', None)

    except Exception as e:
        traceback.print_exc(file=sys.stdout)
        return jsonify({
            "error": True,
            "errorMessage": str(e)
        }), 500

    return jsonify({
        "error": False,
        "errorMessage": ""
    })
Ejemplo n.º 4
0
    def test_is_email_in_db(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()

        local_auth = LocalAuth(self.settings, self.request.session)

        assert local_auth.is_email_in_db('*****@*****.**')
        assert not local_auth.is_email_in_db('*****@*****.**')
Ejemplo n.º 5
0
    def test_is_username_in_db(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()

        local_auth = LocalAuth(self.settings, self.request.session)

        assert local_auth.is_username_in_db('jdoe')
        assert not local_auth.is_username_in_db('jsmith')
Ejemplo n.º 6
0
    def test_is_email_in_db(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()

        local_auth = LocalAuth(self.settings, self.request.session)

        assert local_auth.is_email_in_db('*****@*****.**')
        assert not local_auth.is_email_in_db('*****@*****.**')
Ejemplo n.º 7
0
    def test_get_number_of_users(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()
        self.tps.add_jsmith_in_users()

        local_auth = LocalAuth(self.settings, self.request.session)

        assert local_auth.get_number_of_users() == 2
Ejemplo n.º 8
0
    def test_get_number_of_users(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()
        self.tps.add_jsmith_in_users()

        local_auth = LocalAuth(self.settings, self.request.session)

        assert local_auth.get_number_of_users() == 2
Ejemplo n.º 9
0
    def test_is_username_in_db(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()

        local_auth = LocalAuth(self.settings, self.request.session)

        assert local_auth.is_username_in_db('jdoe')
        assert not local_auth.is_username_in_db('jsmith')
Ejemplo n.º 10
0
    def test_get_galaxy_infos(self):

        self.tps.clean_up()
        self.tps.add_galaxy_account()

        local_auth = LocalAuth(self.settings, self.request.session)
        galaxy_infos = local_auth.get_galaxy_infos(1)

        assert galaxy_infos == {'url': 'http://locahost/galaxy', 'key': 'fake_api_key'}
Ejemplo n.º 11
0
    def test_set_auth_type(self):

        local_auth = LocalAuth(self.settings, self.request.session)

        assert local_auth.auth_type == "local"

        local_auth.set_auth_type('ldap')

        assert local_auth.auth_type == "ldap"
Ejemplo n.º 12
0
    def test_authenticate_user_with_email(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()

        local_auth = LocalAuth(self.settings, self.request.session)

        assert local_auth.authenticate_user_with_email('*****@*****.**', 'iamjohndoe')
        assert not local_auth.authenticate_user_with_email('*****@*****.**', 'iamjanesmith')
Ejemplo n.º 13
0
    def test_get_auth_type(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()
        self.tps.add_ldap_jdoe_user_in_users()

        local_auth = LocalAuth(self.settings, self.request.session)

        assert local_auth.get_auth_type('jdoe') == 'local'
        assert local_auth.get_auth_type('ldap_jdoe') == 'ldap'
Ejemplo n.º 14
0
    def test_get_auth_type(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()
        self.tps.add_ldap_jdoe_user_in_users()

        local_auth = LocalAuth(self.settings, self.request.session)

        assert local_auth.get_auth_type('jdoe') == 'local'
        assert local_auth.get_auth_type('ldap_jdoe') == 'ldap'
Ejemplo n.º 15
0
    def test_authenticate_user_with_username(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()

        local_auth = LocalAuth(self.settings, self.request.session)

        assert local_auth.authenticate_user_with_username('jdoe', 'iamjohndoe')
        assert not local_auth.authenticate_user_with_username(
            'jsmith', 'iamjanesmith')
Ejemplo n.º 16
0
    def test_delete_user(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()

        local_auth = LocalAuth(self.settings, self.request.session)

        assert self.tps.test_row_presence('users', 'username', ('jdoe', ))

        local_auth.delete_user('jdoe')

        assert not self.tps.test_row_presence('users', 'username', ('jdoe', ))
Ejemplo n.º 17
0
    def test_admin_user(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()

        local_auth = LocalAuth(self.settings, self.request.session)

        assert self.tps.test_row_presence('users', 'username, admin, blocked', ('jdoe', 'false', 'false'))

        local_auth.admin_user('true', 'jdoe')

        assert self.tps.test_row_presence('users', 'username, admin, blocked', ('jdoe', 'true', 'false'))
Ejemplo n.º 18
0
    def test_update_email(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()

        local_auth = LocalAuth(self.settings, self.request.session)

        assert self.tps.test_row_presence('users', 'username, email', ('jdoe', '*****@*****.**'))

        local_auth.update_email('jdoe', '*****@*****.**')

        assert self.tps.test_row_presence('users', 'username, email', ('jdoe', '*****@*****.**'))
Ejemplo n.º 19
0
    def test_update_password(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()

        local_auth = LocalAuth(self.settings, self.request.session)

        assert self.tps.test_row_presence('users', 'username, password, salt', ('jdoe', 'f49d76161eb1617568fedf0a0adc92532cc81c1a2626ec0e2d5fa36bd600f55b17f599a4a343a5ccdc907a2831db70c7a390a9f96afbf346190e6fe3d6ed836f', '00000000000000000000'))

        local_auth.update_password('jdoe', 'newpass')

        assert not self.tps.test_row_presence('users', 'username, password, salt', ('jdoe', 'f49d76161eb1617568fedf0a0adc92532cc81c1a2626ec0e2d5fa36bd600f55b17f599a4a343a5ccdc907a2831db70c7a390a9f96afbf346190e6fe3d6ed836f', '00000000000000000000'))
Ejemplo n.º 20
0
    def test_renew_apikey(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()

        local_auth = LocalAuth(self.settings, self.request.session)

        assert self.tps.test_row_presence('users', 'username, email, apikey', ('jdoe', '*****@*****.**', 'jdoe_apikey'))

        local_auth.renew_apikey('jdoe')

        assert not self.tps.test_row_presence('users', 'username, email, apikey', ('jdoe', '*****@*****.**', 'jdoe_apikey'))
        assert self.tps.test_row_presence('users', 'username, email', ('jdoe', '*****@*****.**'))
Ejemplo n.º 21
0
    def test_create_user_graph(self):

        local_auth = LocalAuth(self.settings, self.request.session)
        local_auth.create_user_graph('jdoe')

        assert self.tps.test_triple_presence(
            'urn:sparql:test_askomics',
            '<urn:sparql:test_askomics:jdoe> rdfg:subGraphOf <urn:sparql:test_askomics>'
        )
        assert not self.tps.test_triple_presence(
            'urn:sparql:test_askomics',
            '<urn:sparql:test_askomics:jsmith> rdfg:subGraphOf <urn:sparql:test_askomics>'
        )
Ejemplo n.º 22
0
    def test_add_galaxy(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()

        galaxy_url = self.settings['askomics.testing_galaxy_url']
        galaxy_key = self.settings['askomics.testing_galaxy_key']

        local_auth = LocalAuth(self.settings, self.request.session)

        local_auth.add_galaxy(galaxy_url, galaxy_key, 1)

        assert self.tps.test_row_presence('galaxy_accounts', '*', (1, 1, galaxy_url, galaxy_key))
Ejemplo n.º 23
0
    def test_get_user_infos_api_key(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()
        self.tps.add_jsmith_in_users()
        self.tps.add_galaxy_account()

        local_auth = LocalAuth(self.settings, self.request.session)

        user_infos_jdoe = local_auth.get_user_infos_api_key('jdoe_apikey')
        user_infos_jsmith = local_auth.get_user_infos_api_key('jsmith_apikey')
        assert user_infos_jdoe == {'id': 1, 'username': '******', 'email': '*****@*****.**', 'password': '******', 'salt': '00000000000000000000', 'admin': False, 'blocked': False, 'apikey': 'jdoe_apikey', 'galaxy': {'url': 'http://locahost/galaxy', 'key': 'fake_api_key'}, 'auth_type': 'local'}
        assert user_infos_jsmith == {'id': 2, 'username': '******', 'email': '*****@*****.**', 'password': '******', 'salt': '00000000000000000000', 'admin': False, 'blocked': False, 'apikey': 'jsmith_apikey', 'galaxy': None, 'auth_type': 'local'}
Ejemplo n.º 24
0
    def test_persist_user(self):

        self.tps.clean_up()

        local_auth = LocalAuth(self.settings, self.request.session)
        local_auth.persist_user('jdoe', '*****@*****.**', 'jdoe')
        local_auth.persist_user('jsmith', '*****@*****.**', 'jsmith')
        local_auth.set_auth_type('ldap')
        local_auth.persist_user('ldap_jdoe', '*****@*****.**')

        assert self.tps.test_row_presence('users', 'username, email, password', ('ldap_jdoe', '*****@*****.**', None))
        assert self.tps.test_row_presence('users', 'username, email', ('jdoe', '*****@*****.**'))
        assert self.tps.test_row_presence('users', 'username, email', ('jsmith', '*****@*****.**'))
Ejemplo n.º 25
0
    def test_persist_user(self):

        self.tps.clean_up()

        local_auth = LocalAuth(self.settings, self.request.session)
        local_auth.persist_user('jdoe', '*****@*****.**', 'jdoe')
        local_auth.persist_user('jsmith', '*****@*****.**', 'jsmith')
        local_auth.set_auth_type('ldap')
        local_auth.persist_user('ldap_jdoe', '*****@*****.**')

        assert self.tps.test_row_presence(
            'users', 'username, email, password',
            ('ldap_jdoe', '*****@*****.**', None))
        assert self.tps.test_row_presence('users', 'username, email',
                                          ('jdoe', '*****@*****.**'))
        assert self.tps.test_row_presence('users', 'username, email',
                                          ('jsmith', '*****@*****.**'))
Ejemplo n.º 26
0
    def main(self):
        """Insert the user and the eventualy galaxy account"""
        # Inseret user in database
        inputs = {
            "fname": self.args.first_name,
            "lname": self.args.last_name,
            "username": self.args.username,
            "email": self.args.email,
            "password": self.args.password,
            "apikey": self.args.api_key
        }

        local_auth = LocalAuth(self.application, self.session)
        if local_auth.get_number_of_users() > 0:
            self.application.logger.error(
                "Database is not empty, user {} will not be created".format(
                    self.args.username))
            return
        self.application.logger.info("Create user {}".format(
            self.args.username))
        self.user = local_auth.persist_user(inputs)
        self.session["user"] = self.user
        local_auth.create_user_directories(self.user["id"],
                                           self.user["username"])

        # insert Galaxy account if set
        if self.args.galaxy_url and self.args.galaxy_apikey:
            result = local_auth.add_galaxy_account(self.user,
                                                   self.args.galaxy_url,
                                                   self.args.galaxy_apikey)
            self.user = result["user"]
Ejemplo n.º 27
0
    def test_renew_apikey(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()

        local_auth = LocalAuth(self.settings, self.request.session)

        assert self.tps.test_row_presence(
            'users', 'username, email, apikey',
            ('jdoe', '*****@*****.**', 'jdoe_apikey'))

        local_auth.renew_apikey('jdoe')

        assert not self.tps.test_row_presence(
            'users', 'username, email, apikey',
            ('jdoe', '*****@*****.**', 'jdoe_apikey'))
        assert self.tps.test_row_presence('users', 'username, email',
                                          ('jdoe', '*****@*****.**'))
Ejemplo n.º 28
0
    def test_get_all_users_infos(self):

        self.tps.clean_up()
        self.tps.add_jdoe_in_users()
        self.tps.add_ldap_jdoe_user_in_users()
        self.tps.add_jsmith_in_users()

        local_auth = LocalAuth(self.settings, self.request.session)
        all_users = local_auth.get_all_users_infos()

        # Get dir size
        path = self.settings['askomics.files_dir'] + '/jdoe'
        size = 0
        for dirpath, dirnames, filenames in os.walk(path):
            for f in filenames:
                fp = os.path.join(dirpath, f)
                size += os.path.getsize(fp)
        hsize = humanize.naturalsize(size)

        assert all_users == [{'ldap': False, 'username': '******', 'email': '*****@*****.**', 'admin': False, 'blocked': False, 'gurl': None, 'nquery': 0, 'nintegration': 0, 'dirsize': size, 'hdirsize': hsize}, {'ldap': False, 'username': '******', 'email': '*****@*****.**', 'admin': False, 'blocked': False, 'gurl': None, 'nquery': 0, 'nintegration': 0, 'dirsize': 0, 'hdirsize': '0 Bytes'}, {'ldap': True, 'username': '******', 'email': '*****@*****.**', 'admin': False, 'blocked': False, 'gurl': None, 'nquery': 0, 'nintegration': 0, 'dirsize': 0, 'hdirsize': '0 Bytes'}]
Ejemplo n.º 29
0
    def test_get_random_string(self):

        local_auth = LocalAuth(self.settings, self.request.session)

        assert len(local_auth.get_random_string(20)) == 20