Esempio n. 1
0
def test_build_user_missing_key(parsed_user, key):
    ## GIVEN a parsed_user (dict) containing user information

    ## WHEN deleting key
    parsed_user.pop(key)
    ## THEN calling build_user() will raise KeyError
    with pytest.raises(KeyError):
        build_user(parsed_user)
Esempio n. 2
0
def user(context, institute_id, user_name, user_mail, admin):
    """Add a user to the database."""
    adapter = context.obj['adapter']

    institutes = []
    for institute in institute_id:
        institute_obj = adapter.institute(institute_id=institute)

        if not institute_obj:
            LOG.warning("Institute % does not exist", institute)
            context.abort()

        institutes.append(institute)

    roles = []
    if admin:
        LOG.info("User is admin")
        roles.append('admin')

    user_info = dict(email=user_mail.lower(), name=user_name, roles=roles, institutes=institutes)

    user_obj = build_user(user_info)

    try:
        adapter.add_user(user_obj)
    except Exception as err:
        LOG.warning(err)
        context.abort()
Esempio n. 3
0
def user(institute_id, user_name, user_mail, admin, user_id=None):
    """Add a user to the database."""
    adapter = store

    institutes = []
    for institute in institute_id:
        institute_obj = adapter.institute(institute_id=institute)

        if not institute_obj:
            LOG.warning("Institute % does not exist", institute)
            raise click.Abort()

        institutes.append(institute)

    roles = []
    if admin:
        LOG.info("User is admin")
        roles.append("admin")

    user_info = dict(
        email=user_mail.lower(),
        name=user_name,
        roles=roles,
        institutes=institutes,
        id=user_id,
    )

    user_obj = build_user(user_info)

    try:
        adapter.add_user(user_obj)
    except Exception as err:
        LOG.warning(err)
        raise click.Abort()
Esempio n. 4
0
def user(context, institute_id, user_name, user_mail, admin):
    """Add a user to the database."""
    adapter = context.obj['adapter']

    institutes = []
    for institute in institute_id:
        institute_obj = adapter.institute(institute_id=institute)

        if not institute_obj:
            LOG.warning("Institute % does not exist", institute)
            context.abort()

        institutes.append(institute)

    roles = []
    if admin:
        LOG.info("User is admin")
        roles.append('admin')

    user_info = dict(email=user_mail,
                     name=user_name,
                     roles=roles,
                     institutes=institutes)

    user_obj = build_user(user_info)

    try:
        adapter.add_user(user_obj)
    except Exception as err:
        LOG.warning(err)
        context.abort()
Esempio n. 5
0
def test_update_user(real_adapter):
    adapter = real_adapter
    ## GIVEN an adapter with a user
    user_info = {
        "email": "*****@*****.**",
        "location": "here",
        "name": "Clark Kent",
        "institutes": ["test-1"],
    }
    user_obj = build_user(user_info)
    user_obj = adapter.add_user(user_obj)
    assert user_obj["institutes"] == ["test-1"]
    ## WHEN updating a user
    user_info["institutes"].append("test-2")
    user_obj = build_user(user_info)

    adapter.update_user(user_obj)
    ## THEN assert that the user is in the database
    updated_user = adapter.user_collection.find_one()
    assert set(updated_user["institutes"]) == set(["test-1", "test-2"])
Esempio n. 6
0
def test_build_user(parsed_user):
    ## GIVEN some parsed user information

    ## WHEN building a user object
    user_obj = build_user(parsed_user)

    ## THEN assert that the build was correct
    assert user_obj["_id"] == user_obj["email"] == parsed_user["email"]

    assert user_obj["name"] == user_obj["name"]

    assert isinstance(user_obj["created_at"], datetime.datetime)
Esempio n. 7
0
def test_build_user(parsed_user):
    ## GIVEN some parsed user information
    
    ## WHEN building a user object
    user_obj = build_user(parsed_user)
    
    ## THEN assert that the build was correct
    assert user_obj['_id'] == user_obj['email'] == parsed_user['email']

    assert user_obj['name'] == user_obj['name']
    
    assert isinstance(user_obj['created_at'], datetime.datetime)
Esempio n. 8
0
def test_get_user_email(adapter):
    user_info = {
        "email": "*****@*****.**",
        "id": "clke01",
        "location": "here",
        "name": "Clark Kent",
        "institutes": ["test-1"],
    }
    user_obj = build_user(user_info)
    user_obj = adapter.add_user(user_obj)
    ## WHEN fetching the user with email
    user = adapter.user(email="*****@*****.**")

    ## THEN assert that the user is fetched
    assert user
Esempio n. 9
0
def test_insert_user(adapter):
    user_info = {
        "email": "*****@*****.**",
        "location": "here",
        "name": "Clark Kent",
        "institutes": ["test-1"],
    }
    user_obj = build_user(user_info)
    ## GIVEN a empty adapter

    assert adapter.user_collection.find_one() is None

    ## WHEN inserting a user
    user_obj = adapter.add_user(user_obj)

    ## THEN assert that the user is in the database
    assert adapter.user_collection.find_one()
Esempio n. 10
0
def test_get_insert_user(adapter):
    user_info = {
        'email': '*****@*****.**',
        'location': 'here',
        'name': 'Clark Kent',
        'institutes': ['test-1'],
    }
    user_obj = build_user(user_info)
    ## GIVEN a empty adapter

    assert adapter.user(email=user_info['email']) is None

    ## WHEN insaerting a user
    user_obj = adapter.add_user(user_obj)

    ## THEN assert that the user is in the database

    assert user_obj['_id'] == user_info['email']
Esempio n. 11
0
def test_get_users(adapter):
    institutes = ["test-1", "test-2"]
    ## GIVEN an adapter with multiple users
    for i, ins in enumerate(institutes, 1):
        user_info = {
            "email": "clark.kent{}@mail.com".format(i),
            "id": "clke0" + str(i),
            "location": "here",
            "name": "Clark Kent",
            "institutes": [ins],
        }
        user_obj = build_user(user_info)
        user_obj = adapter.add_user(user_obj)
    ## WHEN fetching all users
    users = adapter.users()

    ## THEN assert that both users are fetched
    assert sum(1 for user in users) == len(institutes)
def test_get_insert_user(adapter):
    user_info = {
        'email': '*****@*****.**',
        'location': 'here',
        'name': 'Clark Kent',
        'institutes': ['test-1'],
        
    }
    user_obj = build_user(user_info)
    ## GIVEN a empty adapter
    
    assert adapter.user(email=user_info['email']) is None

    ## WHEN insaerting a user
    user_obj = adapter.add_user(user_obj)

    ## THEN assert that the user is in the database
    
    assert user_obj['_id'] == user_info['email']
Esempio n. 13
0
def test_delete_user(adapter):
    institutes = ["test-1", "test-2"]
    ## GIVEN an adapter with two users
    for i, ins in enumerate(institutes, 1):
        user_info = {
            "email": "clark.kent{}@mail.com".format(i),
            "id": "clke0" + str(i),
            "location": "here",
            "name": "Clark Kent",
            "institutes": [ins],
        }
        user_obj = build_user(user_info)
        user_obj = adapter.add_user(user_obj)
    assert sum(1 for user in adapter.users()) == 2
    ## WHEN deleting a user
    adapter.delete_user(email="*****@*****.**")

    ## THEN assert that there is only ine user left
    assert sum(1 for user in adapter.users()) == 1
Esempio n. 14
0
def user_obj(request, parsed_user):
    """Return a User object"""
    _user_obj = build_user(parsed_user)
    return _user_obj