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())
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)
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)
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)
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}')
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 })