def test_cant_create_document_for_inexistent_corpus(self): self.client.login(username="******", password="******") corpus_url = rest_framework_reverse('corpus-detail', kwargs={'pk': 9999}) data = {"corpus": corpus_url, "blob": self.fp} response = self.client.post(reverse('document-list'), data) self.assertEqual(response.status_code, 400)
def reverse(viewname, args=None, kwargs=None, request=None, format=None, **extra): """ Same as `rest_framework.reverse.reverse`, but wraps the returned url in the DocJSON link format. """ return { "_type": "link", "url": rest_framework_reverse(viewname, args=args, kwargs=kwargs, request=request, format=format, **extra), }
def test_serialized_data_should_include_file_size(self): document = Document.objects.all()[0] factory = APIRequestFactory() request = factory.get( rest_framework_reverse('document-detail', kwargs={'pk': document.id})) request.user = document.owner serializer = DocumentSerializer(document, context={'request': request}) self.assertIn("size", serializer.data) self.assertEqual(serializer.data["size"], document.blob.size)
def test_cant_create_document_in_another_users_corpus(self, create_pipelines): self.client.login(username="******", password="******") # We'll try to associate this document to a corpus that belongs to # 'admin' corpus = Corpus.objects.filter(owner__username="******")[0] corpus_url = rest_framework_reverse('corpus-detail', kwargs={'pk': corpus.id}) data = {"corpus": corpus_url, "blob": self.fp} response = self.client.post(reverse('document-list'), data) self.assertEqual(response.status_code, 400)
def test_cant_create_document_for_another_user(self, create_pipeline): self.client.login(username="******", password="******") corpus = self.user.corpus_set.all()[0] corpus_url = rest_framework_reverse('corpus-detail', kwargs={'pk': corpus.id}) data = {"corpus": corpus_url, "blob": self.fp, "owner": 1} response = self.client.post(reverse('document-list'), data) self.assertEqual(response.status_code, 201) document = self.user.document_set.all()[1] self.assertEqual(document.owner, self.user)
def test_create_new_document(self, create_pipelines): self.assertEqual(len(self.user.document_set.all()), 1) self.client.login(username="******", password="******") corpus = self.user.corpus_set.all()[0] data = {"corpus": rest_framework_reverse('corpus-detail', kwargs={'pk': corpus.id}), "blob": self.fp} response = self.client.post(reverse('document-list'), data) self.assertEqual(response.status_code, 201) self.assertEqual(len(self.user.document_set.all()), 2)
def test_cant_create_document_for_inexistent_corpus(self): self.client.login(username="******", password="******") corpus_url = rest_framework_reverse('corpus-detail', kwargs={'pk': 9999}) data = { "corpus": corpus_url, "blob": self.fp, "index_name": "test_pypln", "doc_type": "article" } response = self.client.post(reverse('index-document'), data) self.assertEqual(response.status_code, 400)
def test_creating_a_document_should_create_a_pipeline_for_it(self, call_default_pipeline): self.assertEqual(len(self.user.document_set.all()), 1) self.client.login(username="******", password="******") corpus = self.user.corpus_set.all()[0] data = {"corpus": rest_framework_reverse('corpus-detail', kwargs={'pk': corpus.id}), "blob": self.fp} response = self.client.post(reverse('document-list'), data) self.assertEqual(response.status_code, 201) self.assertTrue(call_default_pipeline.called) doc_id = int(response.data['url'].split('/')[-2]) document = Document.objects.get(pk=doc_id) call_default_pipeline.assert_called_with(ObjectId(document.blob.name))
def test_cant_create_document_without_index_name( self, create_indexing_pipelines): self.assertEqual(len(self.user.document_set.all()), 1) self.client.login(username="******", password="******") corpus = self.user.corpus_set.all()[0] data = { "corpus": rest_framework_reverse('corpus-detail', kwargs={'pk': corpus.id}), "blob": self.fp } response = self.client.post(reverse('index-document'), data) self.assertEqual(response.status_code, 400) self.assertIn("index_name", response.data) self.assertEqual(len(self.user.document_set.all()), 1)
def test_creating_a_document_should_create_a_pipeline_for_it( self, create_pipeline): self.assertEqual(len(self.user.document_set.all()), 1) self.client.login(username="******", password="******") corpus = self.user.corpus_set.all()[0] data = { "corpus": rest_framework_reverse('corpus-detail', kwargs={'pk': corpus.id}), "blob": self.fp } response = self.client.post(reverse('document-list'), data) self.assertEqual(response.status_code, 201) self.assertTrue(create_pipeline.called) document = response.renderer_context['view'].object pipeline_data = {"_id": str(document.blob.file._id), "id": document.id} create_pipeline.assert_called_with(pipeline_data)
def test_create_new_document(self, create_indexing_pipelines): self.assertEqual(len(self.user.document_set.all()), 1) self.client.login(username="******", password="******") corpus = self.user.corpus_set.all()[0] data = { "corpus": rest_framework_reverse('corpus-detail', kwargs={'pk': corpus.id}), "blob": self.fp, "index_name": "test_pypln", "doc_type": "article" } response = self.client.post(reverse('index-document'), data) self.assertEqual(response.status_code, 201) self.assertEqual(len(self.user.document_set.all()), 2)
def test_shows_document_correctly(self): self.client.login(username="******", password="******") response = self.client.get( reverse('property-list', kwargs={'pk': self.document.id})) self.assertEqual(response.status_code, 200) self.assertEqual(response.renderer_context['view'].get_object(), self.document) fake_request = RequestFactory().get( reverse('property-list', kwargs={'pk': self.document.id})) expected_urls = [ rest_framework_reverse('property-detail', kwargs={ 'pk': self.document.id, 'property': prop }, request=fake_request) for prop in self.document.properties.keys() ] self.assertEqual(response.data['properties'], expected_urls)
def test_index_name_should_be_prefixed_with_username_if_its_not_already( self, create_indexing_pipelines): self.assertEqual(len(self.user.document_set.all()), 1) self.client.login(username="******", password="******") corpus = self.user.corpus_set.all()[0] data = { "corpus": rest_framework_reverse('corpus-detail', kwargs={'pk': corpus.id}), "blob": self.fp, "index_name": "test_pypln", "doc_type": "article" } response = self.client.post(reverse('index-document'), data) self.assertEqual(response.status_code, 201) doc_id = int(response.data['url'].rsplit('/')[-2]) created_document = IndexedDocument.objects.get(pk=doc_id) self.assertEqual(created_document.index_name, "user_test_pypln")
def test_creating_a_document_should_create_a_pipeline_for_it( self, create_indexing_pipeline): self.assertEqual(len(self.user.document_set.all()), 1) self.client.login(username="******", password="******") corpus = self.user.corpus_set.all()[0] data = { "corpus": rest_framework_reverse('corpus-detail', kwargs={'pk': corpus.id}), "blob": self.fp, "index_name": "test_pypln", "doc_type": "article" } response = self.client.post(reverse('index-document'), data) self.assertEqual(response.status_code, 201) self.assertTrue(create_indexing_pipeline.called) doc_id = int(response.data['url'].split('/')[-2]) document = IndexedDocument.objects.get(pk=doc_id) create_indexing_pipeline.assert_called_with(document)
def _get_corpus_url(self, corpus_id): return rest_framework_reverse('corpus-detail', kwargs={'pk': corpus_id})