def testGetProjectTransfers(self, mockRemoteStore): mock_requests_response = MagicMock() mock_data_service = mockRemoteStore.return_value.data_service mock_data_service.get_all_project_transfers.return_value = mock_requests_response ddsutil = DDSUtil(self.user) project_transfers_response = ddsutil.get_project_transfers() self.assertTrue(mock_data_service.get_all_project_transfers.called) self.assertEqual(project_transfers_response, mock_requests_response)
def testGetPprojectTransfer403Exception(self, mockRemoteStore): transfer_id = 'abvcca-123' get_project_transfer = mockRemoteStore.return_value.data_service.get_project_transfer get_project_transfer.side_effect = DataServiceError( response=Mock(status_code=403), url_suffix="", request_data=Mock()) ddsutil = DDSUtil(self.user) with self.assertRaises(DDSNotRecipientException): ddsutil.get_project_transfer(transfer_id)
def test_auth_provider_add_user(self): mock_dds_user = Mock() dds_util = DDSUtil(user=Mock()) mock_remote_store = Mock() mock_remote_store.data_service.auth_provider_add_user.return_value.json.return_value = mock_dds_user dds_util._remote_store = mock_remote_store dds_user = dds_util.auth_provider_add_user(auth_provider_id='provider1', username='******') self.assertEqual(dds_user, mock_dds_user) mock_remote_store.data_service.auth_provider_add_user.assert_called_with('provider1', 'user1')
def create(self, request, *args, **kwargs): if request.data.get('transfer_id'): raise ValidationError('Deliveries may not be created with a transfer_id, ' 'these are generated by Duke Data Service') dds_util = DDSUtil(request.user) project_transfer = dds_util.create_project_transfer(request.data['project_id'], request.data['to_user_id']) request.data['transfer_id'] = project_transfer['id'] return super(DeliveryViewSet, self).create(request, args, kwargs)
def test_get_users_with_filters(self): mock_user = Mock(name='joe') dds_util = DDSUtil(user=Mock()) mock_remote_store = Mock() mock_remote_store.data_service.get_users.return_value = [mock_user] dds_util._remote_store = mock_remote_store users = dds_util.get_users(full_name_contains='Joe', email='*****@*****.**', username='******') self.assertEqual(users, [mock_user]) mock_remote_store.data_service.get_users.assert_called_with('Joe', '*****@*****.**', 'joe')
def test_get_users_no_filter(self): mock_user = Mock(name='joe') dds_util = DDSUtil(user=Mock()) mock_remote_store = Mock() mock_remote_store.data_service.get_users.return_value = [mock_user] dds_util._remote_store = mock_remote_store users = dds_util.get_users() self.assertEqual(users, [mock_user]) mock_remote_store.data_service.get_users.assert_called_with(None, None, None)
def test_get_auth_provider(self): mock_provider = Mock(name='provider1') dds_util = DDSUtil(user=Mock()) mock_remote_store = Mock() mock_remote_store.data_service.get_auth_provider.return_value.json.return_value = mock_provider dds_util._remote_store = mock_remote_store provider = dds_util.get_auth_provider('provider1') self.assertEqual(provider, mock_provider) mock_remote_store.data_service.get_auth_provider.assert_called_with('provider1')
def test_get_auth_provider_affiliates(self): mock_affiliate = Mock(id='affiliate1') dds_util = DDSUtil(user=Mock()) mock_remote_store = Mock() mock_remote_store.data_service.get_auth_provider_affiliates.return_value.json.return_value = [mock_affiliate] dds_util._remote_store = mock_remote_store affiliates = dds_util.get_auth_provider_affiliates('provider1', full_name_contains='Joe') self.assertEqual(affiliates, [mock_affiliate]) mock_remote_store.data_service.get_auth_provider_affiliates.assert_called_with('provider1', 'Joe', None, None)
def testGetProjectTransfer(self, mockRemoteStore): mock_requests_response = MagicMock() transfer_id = 'abvcca-123' get_project_transfer = mockRemoteStore.return_value.data_service.get_project_transfer get_project_transfer.return_value = mock_requests_response ddsutil = DDSUtil(self.user) project_transfer_response = ddsutil.get_project_transfer(transfer_id) self.assertTrue(get_project_transfer.called_with(transfer_id)) self.assertEqual(project_transfer_response, mock_requests_response)
def testGetEmail(self, mockRemoteStore): email = '*****@*****.**' # Mock a remote user object, and bind it to fetch_user remote_user = Mock() remote_user.email = email instance = mockRemoteStore.return_value instance.fetch_user.return_value = remote_user ddsutil = DDSUtil(self.user) self.assertEqual(email, ddsutil.get_remote_user(self.user_id).email) self.assertTrue(instance.fetch_user.called)
def test_get_auth_provider(self): mock_provider = Mock(name='provider1') dds_util = DDSUtil(user=Mock()) mock_remote_store = Mock() mock_remote_store.data_service.get_auth_provider.return_value.json.return_value = mock_provider dds_util._remote_store = mock_remote_store provider = dds_util.get_auth_provider('provider1') self.assertEqual(provider, mock_provider) mock_remote_store.data_service.get_auth_provider.assert_called_with( 'provider1')
def create(self, request, *args, **kwargs): if request.data.get('transfer_id'): raise ValidationError( 'Deliveries may not be created with a transfer_id, ' 'these are generated by Duke Data Service') dds_util = DDSUtil(request.user) project_transfer = dds_util.create_project_transfer( request.data['project_id'], request.data['to_user_id']) request.data['transfer_id'] = project_transfer['id'] return super(DeliveryViewSet, self).create(request, args, kwargs)
def test_get_users_no_filter(self): mock_user = Mock(name='joe') dds_util = DDSUtil(user=Mock()) mock_remote_store = Mock() mock_remote_store.data_service.get_users.return_value = [mock_user] dds_util._remote_store = mock_remote_store users = dds_util.get_users() self.assertEqual(users, [mock_user]) mock_remote_store.data_service.get_users.assert_called_with( None, None, None)
def testGetProject(self, mockRemoteStore): project_id = '8677-11231-44414-4442' project_name = 'Project ABC' remote_project = Mock() remote_project.name = project_name instance = mockRemoteStore.return_value instance.fetch_remote_project_by_id.return_value = remote_project ddsutil = DDSUtil(self.user) self.assertEqual(ddsutil.get_remote_project(project_id).name, project_name) self.assertTrue(instance.fetch_remote_project_by_id.called)
def test_auth_provider_add_user(self): mock_dds_user = Mock() dds_util = DDSUtil(user=Mock()) mock_remote_store = Mock() mock_remote_store.data_service.auth_provider_add_user.return_value.json.return_value = mock_dds_user dds_util._remote_store = mock_remote_store dds_user = dds_util.auth_provider_add_user( auth_provider_id='provider1', username='******') self.assertEqual(dds_user, mock_dds_user) mock_remote_store.data_service.auth_provider_add_user.assert_called_with( 'provider1', 'user1')
def testGetProject(self, mockRemoteStore): project_id = '8677-11231-44414-4442' project_name = 'Project ABC' remote_project = Mock() remote_project.name = project_name instance = mockRemoteStore.return_value instance.fetch_remote_project_by_id.return_value = remote_project ddsutil = DDSUtil(self.user) self.assertEqual( ddsutil.get_remote_project(project_id).name, project_name) self.assertTrue(instance.fetch_remote_project_by_id.called)
def test_get_project_children(self): dds_util = DDSUtil(user=Mock()) mock_remote_store = Mock() dds_util._remote_store = mock_remote_store mock_children = [Mock()] mock_remote_store.data_service.get_project_children.return_value = mock_children children = dds_util.get_project_children('123') self.assertEqual(children, mock_children) self.assertEqual( mock_remote_store.data_service.get_project_children.call_args, call('123', ''))
def test_get_users_with_filters(self): mock_user = Mock(name='joe') dds_util = DDSUtil(user=Mock()) mock_remote_store = Mock() mock_remote_store.data_service.get_users.return_value = [mock_user] dds_util._remote_store = mock_remote_store users = dds_util.get_users(full_name_contains='Joe', email='*****@*****.**', username='******') self.assertEqual(users, [mock_user]) mock_remote_store.data_service.get_users.assert_called_with( 'Joe', '*****@*****.**', 'joe')
def test_get_user_project_permission(self): dds_util = DDSUtil(user=Mock()) mock_remote_store = Mock() mock_remote_store.data_service.get_user_project_permission.return_value.json.return_value = { 'auth_role': { 'id': PROJECT_ADMIN_ID } } dds_util._remote_store = mock_remote_store resp = dds_util.get_user_project_permission(project_id='123', user_id='456') self.assertEqual(resp['auth_role']['id'], PROJECT_ADMIN_ID) mock_remote_store.data_service.get_user_project_permission.assert_called_with('123', '456')
def cancel(self, request, pk=None): delivery = self.get_object() self.prevent_null_email_template_set() if delivery.state != State.NEW and delivery.state != State.NOTIFIED: raise ValidationError('Only deliveries in new and notified state can be canceled.') dds_util = DDSUtil(request.user) dds_util.cancel_project_transfer(delivery.transfer_id) message_factory = DDSMessageFactory(delivery, request.user) message = message_factory.make_canceled_message() message.send() delivery.mark_canceled() return self.retrieve(request)
def test_get_auth_provider_affiliates(self): mock_affiliate = Mock(id='affiliate1') dds_util = DDSUtil(user=Mock()) mock_remote_store = Mock() mock_remote_store.data_service.get_auth_provider_affiliates.return_value.json.return_value = [ mock_affiliate ] dds_util._remote_store = mock_remote_store affiliates = dds_util.get_auth_provider_affiliates( 'provider1', full_name_contains='Joe') self.assertEqual(affiliates, [mock_affiliate]) mock_remote_store.data_service.get_auth_provider_affiliates.assert_called_with( 'provider1', 'Joe', None, None)
def test_get_project_permissions(self): dds_util = DDSUtil(user=Mock()) mock_remote_store = Mock() mock_remote_store.data_service.get_project_permissions.return_value.json.return_value = { 'auth_role': { 'id': PROJECT_ADMIN_ID } } dds_util._remote_store = mock_remote_store resp = dds_util.get_project_permissions(project_id='123') self.assertEqual(resp['auth_role']['id'], PROJECT_ADMIN_ID) mock_remote_store.data_service.get_project_permissions.assert_called_with( '123')
def cancel(self, request, pk=None): delivery = self.get_object() self.prevent_null_email_template_set() if delivery.state != State.NEW and delivery.state != State.NOTIFIED: raise ValidationError( 'Only deliveries in new and notified state can be canceled.') dds_util = DDSUtil(request.user) dds_util.cancel_project_transfer(delivery.transfer_id) message_factory = DDSMessageFactory(delivery, request.user) message = message_factory.make_canceled_message() message.send() delivery.mark_canceled() return self.retrieve(request)
def get_or_register_user(self, request, pk): dds_util = DDSUtil(self.request.user) auth_provider_id = self._get_auth_provider_id() dds_user = self._ds_operation(DDSUser.get_or_register_user, dds_util, auth_provider_id, pk) serializer = DDSUserSerializer(dds_user) return Response(serializer.data, status=status.HTTP_201_CREATED)
def permissions(self, request, pk=None): dds_util = DDSUtil(request.user) user_id = request.query_params.get('user') project_permissions = self._ds_operation( DDSProjectPermissions.fetch_list, dds_util, pk, user_id) serializer = DDSProjectPermissionSerializer(project_permissions, many=True) return Response(serializer.data, status=status.HTTP_200_OK)
def get_queryset(self): dds_util = DDSUtil(self.request.user) auth_provider_id = self._get_auth_provider_id() full_name_contains = self.request.query_params.get( 'full_name_contains') email = self.request.query_params.get('email', None) username = self.request.query_params.get('username', None) return self._ds_operation(DDSAffiliate.fetch_list, dds_util, auth_provider_id, full_name_contains, email, username)
def get_queryset(self): full_name_contains = self.request.query_params.get( 'full_name_contains', None) email = self.request.query_params.get('email', None) username = self.request.query_params.get('username', None) recent = self.request.query_params.get('recent', None) dds_util = DDSUtil(self.request.user) if recent: if full_name_contains: msg = "Query parameter 'full_name_contains' not allowed when specifying the 'recent' query parameter." raise BadRequestException(msg) return self._get_recent_delivery_users(dds_util) else: return self._ds_operation(DDSUser.fetch_list, dds_util, full_name_contains, email, username)
def get_object(self): dds_util = DDSUtil(self.request.user) auth_provider_id = self._get_auth_provider_id() uid = self.kwargs.get('pk') return self._ds_operation(DDSAffiliate.fetch_one, dds_util, auth_provider_id, uid)
def _get_auth_provider_id(self): default_auth_provider_id = DDSUtil.get_openid_auth_provider_id() auth_provider_id = self.request.query_params.get( 'auth_provider_id', default_auth_provider_id) return auth_provider_id
def testAddUser(self, mockRemoteStore): instance = mockRemoteStore.return_value instance.set_user_project_permission = Mock() ddsutil = DDSUtil(self.user) ddsutil.add_user('userid','projectid','auth_role') self.assertTrue(instance.set_user_project_permission.called)
def get_queryset(self): dds_util = DDSUtil(self.request.user) return self._ds_operation(DDSAuthProvider.fetch_list, dds_util)
def get_object(self): provider_id = self.kwargs.get('pk') dds_util = DDSUtil(self.request.user) return self._ds_operation(DDSAuthProvider.fetch_one, dds_util, provider_id)
def testAddUser(self, mockRemoteStore): instance = mockRemoteStore.return_value instance.set_user_project_permission = Mock() ddsutil = DDSUtil(self.user) ddsutil.add_user('userid', 'projectid', 'auth_role') self.assertTrue(instance.set_user_project_permission.called)
def get_object(self): dds_project_transfer_id = self.kwargs.get('pk') dds_util = DDSUtil(self.request.user) return self._ds_operation(DDSProjectTransfer.fetch_one, dds_util, dds_project_transfer_id)
def testRemoveUser(self, mockRemoteStore): instance = mockRemoteStore.return_value instance.set_user_project_permission = Mock() ddsutil = DDSUtil(self.user) ddsutil.remove_user('userid','projectid') self.assertTrue(instance.revoke_user_project_permission.called)
def test_cancel_project_transfer(self): dds_util = DDSUtil(user=Mock()) mock_remote_store = Mock() dds_util._remote_store = mock_remote_store dds_util.cancel_project_transfer(transfer_id='123')
def current_duke_ds_user(self, request): dds_util = DDSUtil(self.request.user) remote_dds_user = dds_util.get_current_user() serializer = DDSUserSerializer(remote_dds_user) return Response(serializer.data, status=status.HTTP_200_OK)
def test_get_project_url(self): dds_util = DDSUtil(user=Mock()) project_url = dds_util.get_project_url('123') self.assertEqual(project_url, 'https://portal.example.com/#/project/123')
def testRemoveUser(self, mockRemoteStore): instance = mockRemoteStore.return_value instance.set_user_project_permission = Mock() ddsutil = DDSUtil(self.user) ddsutil.remove_user('userid', 'projectid') self.assertTrue(instance.revoke_user_project_permission.called)
def summary(self, request, pk=None): dds_util = DDSUtil(request.user) project_summary = self._ds_operation(DDSProjectSummary.fetch_one, dds_util, pk) serializer = DDSProjectSummarySerializer(project_summary) return Response(serializer.data, status=status.HTTP_200_OK)
def get_queryset(self): dds_util = DDSUtil(self.request.user) return self._ds_operation(DDSProjectTransfer.fetch_list, dds_util)
def testFailsWithoutUser(self): with self.assertRaises(ValueError): ddsutil = DDSUtil('') ddsutil.remote_store
def _get_auth_provider_id(self): default_auth_provider_id = DDSUtil.get_openid_auth_provider_id() auth_provider_id = self.request.query_params.get('auth_provider_id', default_auth_provider_id) return auth_provider_id