Beispiel #1
0
    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),
    }
Beispiel #3
0
 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)
Beispiel #4
0
    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)
Beispiel #5
0
    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)
Beispiel #6
0
    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)
Beispiel #7
0
    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)
Beispiel #8
0
    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))
Beispiel #9
0
    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)
Beispiel #10
0
    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)
Beispiel #11
0
    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)
Beispiel #13
0
    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")
Beispiel #14
0
    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)
Beispiel #15
0
 def _get_corpus_url(self, corpus_id):
     return rest_framework_reverse('corpus-detail',
                                   kwargs={'pk': corpus_id})