def test_falls_back_to_email_field(self, api_request_factory, requests_mock): """ Test that advisers are looked up using the email field when a match using sso_email_user_id is not found, and the adviser's sso_email_user_id is updated. """ adviser = AdviserFactory(email='*****@*****.**', sso_email_user_id=None) requests_mock.post( STAFF_SSO_INTROSPECT_URL, json=_make_introspection_data(username='******'), ) request = api_request_factory.get('/test-path', HTTP_AUTHORIZATION='Bearer token') response = view(request) assert request.user == adviser assert response.status_code == status.HTTP_200_OK assert response.data == {'content': 'introspection-test-view'} # Check that the sso_email_user_id was set on the user adviser.refresh_from_db() assert adviser.sso_email_user_id == '*****@*****.**'
def test_audit_log(s3_stubber): """Test that the audit log is being created.""" adviser = AdviserFactory() bucket = 'test_bucket' object_key = 'test_key' csv_content = f"""id,telephone_number {adviser.id},111222333 """ s3_stubber.add_response( 'get_object', { 'Body': BytesIO(bytes(csv_content, encoding='utf-8')), }, expected_params={ 'Bucket': bucket, 'Key': object_key, }, ) call_command('update_adviser_telephone_number', bucket, object_key) adviser.refresh_from_db() assert adviser.telephone_number == '111222333' versions = Version.objects.get_for_object(adviser) assert len(versions) == 1 assert versions[0].revision.get_comment() == 'Telephone number migration.'
def test_400_doesnt_commit_changes(self): """ Test that in case of errors, changes are not saved. Given an order with the following assignees: [ { "adviser": { "id": 1, "first_name": "Joe", "last_name": "Doe" }, "estimated_time": 100, "is_lead": true }, { "adviser": { "id": 2, "first_name": "Rebecca", "last_name": "Bah" }, "estimated_time": 250, "is_lead": false }, ] if I pass the following data: [ { "adviser": {"id": 1}, "estimated_time": 200 }, { "adviser": {"id": 3}, "estimated_time": 250 }, { "adviser": {"id": non-existent}, "estimated_time": 250 }, ] then: 1. the response returns a validation error as the new adviser doesn't exist 2. adviser 1 doesn't get updated 3. adviser 3 doesn't get added """ order = OrderFactory(assignees=[]) adviser1 = AdviserFactory() adviser2 = AdviserFactory() adviser3 = AdviserFactory() OrderAssigneeFactory(order=order, adviser=adviser1, estimated_time=100, is_lead=True) OrderAssigneeFactory(order=order, adviser=adviser2, estimated_time=250, is_lead=False) url = reverse( 'api-v3:omis:order:assignee', kwargs={'order_pk': order.id}, ) response = self.api_client.patch( url, [ { 'adviser': { 'id': adviser1.id }, 'estimated_time': 200, 'is_lead': False, }, { 'adviser': { 'id': adviser3.id }, 'estimated_time': 250, 'is_lead': True, }, { 'adviser': { 'id': '00000000-0000-0000-0000-000000000000' }, 'estimated_time': 300, }, ], ) assert response.status_code == status.HTTP_400_BAD_REQUEST assert response.json() == [ {}, {}, { 'adviser': [ 'Invalid pk "00000000-0000-0000-0000-000000000000" - object does not exist.', ], }, ] # check db consistency adviser1.refresh_from_db() adviser2.refresh_from_db() qs = order.assignees ad_ids = set(qs.values_list('adviser_id', flat=True)) assert ad_ids == {adviser1.id, adviser2.id} assignee1 = qs.get(adviser_id=adviser1.id) assert assignee1.estimated_time == 100 assert assignee1.is_lead