def test_can_create_an_adviser_by_email_user_id(self, mock_get_user_by_email_user_id): """Test that an adviser can be created using its SSO email user ID.""" mock_get_user_by_email_user_id.return_value = FAKE_SSO_USER_DATA data = {'search_email': '*****@*****.**'} form = AddAdviserFromSSOForm(data=data) assert not form.errors adviser = form.save() assert adviser.email == FAKE_SSO_USER_DATA['email'] assert adviser.sso_email_user_id == FAKE_SSO_USER_DATA['email_user_id'] assert adviser.contact_email == FAKE_SSO_USER_DATA['contact_email'] assert adviser.first_name == FAKE_SSO_USER_DATA['first_name'] assert adviser.last_name == FAKE_SSO_USER_DATA['last_name']
def test_validation_fails_when_no_search_email_entered(self): """Test that validation fails if no search email is entered.""" data = {'search_email': ''} form = AddAdviserFromSSOForm(data=data) assert form.errors == { 'search_email': ['This field is required.'], }
def test_validation_fails_when_there_is_a_request_error(self, mock_get_user_by_email_user_id): """ Test that validation fails if there's an error communicating with Staff SSO. """ mock_get_user_by_email_user_id.side_effect = SSORequestError('Test error') data = {'search_email': '*****@*****.**'} form = AddAdviserFromSSOForm(data=data) assert form.errors == { NON_FIELD_ERRORS: [ 'There was an error communicating with Staff SSO: Test error. Please try again.', ], }
def test_can_create_an_adviser_by_email( self, mock_get_user_by_email_user_id, mock_get_user_by_email, ): """ Test that an adviser can be created using its SSO email (when there is no match on email user ID). """ mock_get_user_by_email_user_id.side_effect = SSOUserDoesNotExistError() mock_get_user_by_email.return_value = FAKE_SSO_USER_DATA data = {'search_email': '*****@*****.**'} form = AddAdviserFromSSOForm(data=data) assert not form.errors adviser = form.save() assert adviser.email == FAKE_SSO_USER_DATA['email'] assert adviser.sso_email_user_id == FAKE_SSO_USER_DATA['email_user_id'] assert adviser.contact_email == FAKE_SSO_USER_DATA['contact_email'] assert adviser.first_name == FAKE_SSO_USER_DATA['first_name'] assert adviser.last_name == FAKE_SSO_USER_DATA['last_name']
def test_validation_fails_when_adviser_not_in_sso( self, mock_get_user_by_email, mock_get_user_by_email_user_id, ): """ Test that validation fails if there's no matching adviser in Staff SSO. """ mock_get_user_by_email.side_effect = SSOUserDoesNotExistError() mock_get_user_by_email_user_id.side_effect = SSOUserDoesNotExistError() data = {'search_email': '*****@*****.**'} form = AddAdviserFromSSOForm(data=data) assert form.errors == { NON_FIELD_ERRORS: [NO_MATCHING_USER_MESSAGE], }
def test_validation_fails_when_adviser_already_exists( self, factory_kwargs, mock_get_user_by_email_user_id, ): """ Test that validation fails if there's an existing adviser with the same SSO email user ID or email (username). """ mock_get_user_by_email_user_id.return_value = FAKE_SSO_USER_DATA AdviserFactory(**factory_kwargs) data = {'search_email': '*****@*****.**'} form = AddAdviserFromSSOForm(data=data) assert form.errors == { NON_FIELD_ERRORS: [DUPLICATE_USER_MESSAGE], }