예제 #1
0
def test_get_database_users(context):
    ("user_interface.get_database_users should return a list of users payload (dict)"
     )

    # Given I have existing users
    first_name_1 = 'Guido'
    email_1 = '*****@*****.**'
    password_1 = 'py123'
    user_created_1 = User(first_name_1, email_1, password_1)
    user_created_1.persist()
    context.objects.append(user_created_1)

    first_name_2 = 'Raymond'
    email_2 = '*****@*****.**'
    password_2 = 'py567'
    user_created_2 = User(first_name_2, email_2, password_2)
    user_created_2.persist()
    context.objects.append(user_created_2)

    # And that I call get_database_users
    result = user_interface.get_database_users(**{})

    # Then it should be a list
    result.should.be.a(list)

    # And it should contains the users payload
    result.should.contain(user_created_1.payload())
    result.should.contain(user_created_2.payload())
예제 #2
0
def test_delete_database_user(context):
    ("user_interface.delete_database_user should return an user payload (dict)"
     )

    # Given I have an existing user
    first_name = 'Guido'
    email = '*****@*****.**'
    password = '******'
    user_created = User(first_name, email, password)
    user_created.persist()
    user_payload = user_created.payload()

    # And that I call delete_database_user with its email
    data_json = {enums.EMAIL_KEY: email}
    result = user_interface.delete_database_user(**data_json)

    # Then it should be a dictionary
    result.should.be.a(dict)

    # And it should be the user payload
    result.should.equal(user_payload)

    # However if I try to remove an unknown email and call delete_database_user it should throw an Exception
    json_data_invalid = {enums.EMAIL_KEY: '*****@*****.**'}
    user_interface.delete_database_user.when.called_with(
        **json_data_invalid).should.have.raised(Exception)
예제 #3
0
def test_get_database_user(context):
    ("user_interface.get_database_user should return an user payload (dict)")

    # Given I have an existing user
    first_name = 'Guido'
    email = '*****@*****.**'
    password = '******'
    user = User(first_name, email, password)
    user.persist()
    context.objects.append(user)

    # And a valid json_data
    json_data = {enums.UUID_KEY: user.uuid}

    # And that I call get_database_user with its UUID
    result = user_interface.get_database_user(**json_data)

    # Then it should be a dictionary
    result.should.be.a(dict)

    # And it should be the user payload
    result.should.equal(user.payload())

    # However if I try to get an unknown UUID call edit_database_user it should throw an Exception
    json_data_invalid = {enums.UUID_KEY: 'someOddUUID'}
    user_interface.create_database_user.when.called_with(
        **json_data_invalid).should.have.raised(Exception)
예제 #4
0
def test_edit_database_user(context):
    ("user_interface.edit_database_user should return an user payload (dict)")

    # Given I have an existing user
    first_name = 'Guido'
    email = '*****@*****.**'
    password = '******'
    user = User(first_name, email, password)
    user.persist()
    context.objects.append(user)

    # And a valid json_data
    email_new = '*****@*****.**'
    password_new = 'ch4ngeMeL4terPleas3'
    json_data = {
        enums.UUID_KEY: user.uuid,
        enums.EMAIL_KEY: email_new,
        enums.PASSWORD_KEY: password_new
    }

    # And that I call edit_database_user
    result = user_interface.edit_database_user(**json_data)

    # When I check the result

    # Then it should be a dictionary
    result.should.be.a(dict)

    # And it should be the user payload
    result.should.equal(user.payload())

    # However if I try to edit the user email to another that exists in the database and call edit_database_user it should throw an Exception
    first_name_2 = 'Guido2'
    email_2 = '*****@*****.**'
    password_2 = 'py123'
    user_2 = User(first_name_2, email_2, password_2)
    user_2.persist()
    context.objects.append(user_2)
    json_data_invalid = {
        enums.UUID_KEY: user.uuid,
        enums.EMAIL_KEY: password_2
    }

    user_interface.create_database_user.when.called_with(
        **json_data_invalid).should.have.raised(Exception)

    # And if I dont a json with missing information it should also throw an Exception
    json_data_invalid_info = {enums.UUID_KEY: user.uuid}
    user_interface.create_database_user.when.called_with(
        **json_data_invalid_info).should.have.raised(Exception)

    # Or if I pass an inexisting UUID it should also throw an Exception
    json_data_invalid_uuid = {enums.UUID_KEY: 'someOddUUID'}
    user_interface.create_database_user.when.called_with(
        **json_data_invalid_uuid).should.have.raised(Exception)
예제 #5
0
def create_database_user(**kwargs):
    ''' Interface to create user database entry
        Should receive first_name, email and password
        Will return first_name, email and uuid upon success
    '''
    email = kwargs.get(enums.EMAIL_KEY)
    if User.find_instance_by_email(email):
        raise Exception(f'Could not create user: email {email} already in use')

    first_name = kwargs.get(enums.FIRST_NAME_KEY)
    password = kwargs.get(enums.PASSWORD_KEY)
    try:
        new_user = User(first_name, email, password)
        new_user.persist()
        return new_user.payload()
    except Exception as err:
        raise Exception(f'Could not create user: {err}')
예제 #6
0
def test_user_payload():
    ("user.payload should return a dict with user details")

    # Given I have an existing user
    first_name = 'Guido'
    email = '*****@*****.**'
    password = '******'
    user = User(first_name, email, password)

    # And that I call the payload on the object
    result = user.payload()

    # Then the result should be a dict
    result.should.be.a(dict)

    # And the dict should have an expected structure
    result.should.equal({
        enums.FIRST_NAME_KEY: user.first_name,
        enums.UUID_KEY: user.uuid,
        enums.EMAIL_KEY: user.email
    })