def test_binary_file(self):
        save_new_url = reverse('model_files:book.add')
        download_url = reverse('db_file_storage.download_file')

        # Save book
        form_data = {'name': 'Book With Cover',
                     'cover': open(get_file_path('book.png'), 'rb')}
        self.client.post(save_new_url, form_data, follow=True)
        book = Book.objects.get(name='Book With Cover')

        # Verify book's cover
        url = download_url + '?' + urlencode({'name': book.cover.name})
        self.verify_file(url, 'book.png')
Exemple #2
0
    def test_binary_file(self):
        save_new_url = reverse('model_files:book.add')
        download_url = reverse('db_file_storage.download_file')

        # Save book
        form_data = {
            'name': 'Book With Cover',
            'cover': open(get_file_path('book.png'), 'rb')
        }
        self.client.post(save_new_url, form_data, follow=True)
        book = Book.objects.get(name='Book With Cover')

        # Verify book's cover
        url = download_url + '?' + urlencode({'name': book.cover.name})
        self.verify_file(url, 'book.png')
Exemple #3
0
    def test_download_with_extra_headers(self):
        # Create book
        save_url = reverse('model_files:book.add')
        cover_file = open(get_file_path('book.png'), 'rb')
        form_data = {'name': 'Inferno', 'cover': cover_file}
        self.client.post(save_url, form_data, follow=True)
        cover_file.close()
        book = Book.objects.get(name='Inferno')

        # Valid name
        download_url = reverse('model_files:book.download_cover')
        download_url += '?' + urlencode({'name': str(book.cover)})
        response = self.client.get(download_url)
        self.assertEqual(response.status_code, 200)
        print(dir(response))
        self.assertEqual(response['Content-Language'], 'en')
Exemple #4
0
    def test_file_with_no_extension(self):
        url = reverse('model_files:book.add')

        with open(get_file_path('file_without_extension')) as pages_file:
            form_data = {'name': 'A Random Book', 'pages': pages_file}
            self.client.post(url, form_data)

        book = Book.objects.get(name='A Random Book')
        self.assertTrue(book.pages.name.endswith('/file_without_extension'))
Exemple #5
0
    def test_download(self):
        # Create book
        save_url = reverse('model_files:book.add')
        index_file = open(get_file_path('inferno_index.txt'))
        form_data = {'name': 'Inferno', 'index': index_file}
        self.client.post(save_url, form_data, follow=True)
        index_file.close()
        book = Book.objects.get(name='Inferno')

        # Valid name
        download_url = reverse('db_file_storage.download_file')
        download_url += '?' + urlencode({'name': str(book.index)})
        response = self.client.get(download_url)
        self.assertEqual(response.status_code, 200)

        # Invalid name
        download_url = reverse('db_file_storage.download_file')
        download_url += '?' + urlencode({'name': 'invalid_name'})
        response = self.client.get(download_url)
        self.assertEqual(response.status_code, 400)
    def test_download_with_invalid_name(self):
        # Create book
        save_url = reverse('model_files:book.add')
        index_file = open(get_file_path('inferno_index.txt'))
        form_data = {'name': 'Inferno',
                     'index': index_file}
        self.client.post(save_url, form_data, follow=True)
        index_file.close()
        book = Book.objects.get(name='Inferno')

        # Valid name
        download_url = reverse('db_file_storage.download_file')
        download_url += '?' + urlencode({'name': str(book.index)})
        response = self.client.get(download_url)
        self.assertEqual(response.status_code, 200)

        # Invalid name
        download_url = reverse('db_file_storage.download_file')
        download_url += '?' + urlencode({'name': 'invalid_name'})
        response = self.client.get(download_url)
        self.assertEqual(response.status_code, 400)
    def test_file_with_no_extension(self):
        url = reverse('model_files:book.add')

        with open(get_file_path('file_without_extension')) as pages_file:
            form_data = {
                'name': 'A Random Book',
                'pages': pages_file
            }
            self.client.post(url, form_data)

        book = Book.objects.get(name='A Random Book')
        self.assertTrue(book.pages.name.endswith('/file_without_extension'))
Exemple #8
0
    def test_admin_form_widget_shows_proper_filename(self):
        # Create book
        save_url = reverse('model_files:book.add')
        index_file = open(get_file_path('inferno_index.txt'))
        form_data = {'name': 'Inferno', 'index': index_file}
        self.client.post(save_url, form_data, follow=True)
        index_file.close()
        book = Book.objects.get(name='Inferno')

        # Check widget download text
        form = BookAdminForm(instance=book)
        self.assertIn('>inferno_index.txt</a>', form['index'].as_widget())
    def test_admin_form_widget_shows_proper_filename(self):
        # Create book
        save_url = reverse('model_files:book.add')
        index_file = open(get_file_path('inferno_index.txt'))
        form_data = {'name': 'Inferno',
                     'index': index_file}
        self.client.post(save_url, form_data, follow=True)
        index_file.close()
        book = Book.objects.get(name='Inferno')

        # Check widget download text
        form = BookAdminForm(instance=book)
        self.assertIn('>inferno_index.txt</a>', form['index'].as_widget())
Exemple #10
0
    def test_send_same_file_for_different_rows(self):
        url = reverse('model_files:book.add')

        index_file = open(get_file_path('inferno_index.txt'))
        form_data = {'name': 'Inferno 1', 'index': index_file}
        self.client.post(url, form_data)
        index_file.seek(0)
        form_data = {'name': 'Inferno 2', 'index': index_file}
        self.client.post(url, form_data)
        index_file.close()

        self.assertEqual(BookIndex.objects.count(), 2)

        inferno_1 = Book.objects.get(name='Inferno 1')
        inferno_2 = Book.objects.get(name='Inferno 2')
        self.assertNotEqual(inferno_1.index.name, inferno_2.index.name)
Exemple #11
0
    def test_same_file_with_no_extension_for_different_rows(self):
        url = reverse('model_files:book.add')

        index_file = open(get_file_path('file_without_extension'))
        form_data = {'name': 'Book ABC', 'index': index_file}
        self.client.post(url, form_data)
        index_file.seek(0)
        form_data = {'name': 'Book XYZ', 'index': index_file}
        self.client.post(url, form_data)
        index_file.close()

        self.assertEqual(BookIndex.objects.count(), 2)

        abc = Book.objects.get(name='Book ABC')
        xyz = Book.objects.get(name='Book XYZ')
        self.assertNotEqual(abc.index.name, xyz.index.name)
    def test_same_file_with_no_extension_for_different_rows(self):
        url = reverse('model_files:book.add')

        index_file = open(get_file_path('file_without_extension'))
        form_data = {'name': 'Book ABC',
                     'index': index_file}
        self.client.post(url, form_data)
        index_file.seek(0)
        form_data = {'name': 'Book XYZ',
                     'index': index_file}
        self.client.post(url, form_data)
        index_file.close()

        self.assertEqual(BookIndex.objects.count(), 2)

        abc = Book.objects.get(name='Book ABC')
        xyz = Book.objects.get(name='Book XYZ')
        self.assertNotEqual(abc.index.name, xyz.index.name)
    def test_send_same_file_for_different_rows(self):
        url = reverse('model_files:book.add')

        index_file = open(get_file_path('inferno_index.txt'))
        form_data = {'name': 'Inferno 1',
                     'index': index_file}
        self.client.post(url, form_data)
        index_file.seek(0)
        form_data = {'name': 'Inferno 2',
                     'index': index_file}
        self.client.post(url, form_data)
        index_file.close()

        self.assertEqual(BookIndex.objects.count(), 2)

        inferno_1 = Book.objects.get(name='Inferno 1')
        inferno_2 = Book.objects.get(name='Inferno 2')
        self.assertNotEqual(inferno_1.index.name, inferno_2.index.name)
Exemple #14
0
 def get_absolute_url_delete(self):
     return reverse('documentapp:singledoc.delete', kwargs={'pk': self.pk})
Exemple #15
0
    def test_files_operations(self):
        save_new_url = reverse('model_files:book.add')
        download_url = reverse('db_file_storage.download_file')

        #
        # Add "Inferno" book without index or pages.
        #
        form_data = {'name': 'Inferno'}
        self.client.post(save_new_url, form_data, follow=True)
        inferno = Book.objects.get(name='Inferno')
        edit_inferno_url = reverse('model_files:book.edit',
                                   kwargs={'pk': inferno.pk})
        # Assert book file fields are empty
        self.assertEqual(inferno.index.name, '')
        self.assertEqual(inferno.pages.name, '')
        # Assert no BookIndex and no BookPages were created
        self.assertEqual(BookIndex.objects.count(), 0)
        self.assertEqual(BookPages.objects.count(), 0)

        #
        # Edit Inferno: add index file
        #
        form_data = {
            'name': 'Inferno',
            'index': open(get_file_path('inferno_index.txt'))
        }
        self.client.post(edit_inferno_url, form_data, follow=True)
        inferno = Book.objects.get(name='Inferno')
        # Assert that only a BookIndex was created
        self.assertEqual(BookIndex.objects.count(), 1)
        self.assertEqual(BookPages.objects.count(), 0)
        # Verify Inferno's new index
        url = download_url + '?' + urlencode({'name': inferno.index.name})
        self.verify_file(url, 'inferno_index.txt')
        # Assert Inferno's pages field is still empty
        self.assertEqual(inferno.pages.name, '')

        #
        # Edit Inferno: add pages file
        #
        form_data = {
            'name': 'Inferno',
            'pages': open(get_file_path('inferno_pages_v1.txt'))
        }
        self.client.post(edit_inferno_url, form_data, follow=True)
        inferno = Book.objects.get(name='Inferno')
        # Assert that only a BookPages was created
        self.assertEqual(BookIndex.objects.count(), 1)
        self.assertEqual(BookPages.objects.count(), 1)
        # Verify Inferno's index file is still correct
        url = download_url + '?' + urlencode({'name': inferno.index.name})
        self.verify_file(url, 'inferno_index.txt')
        # Verify Inferno's new pages
        url = download_url + '?' + urlencode({'name': inferno.pages.name})
        self.verify_file(url, 'inferno_pages_v1.txt')

        #
        # Edit Inferno: change pages file
        #
        form_data = {
            'name': 'Inferno',
            'pages': open(get_file_path('inferno_pages_v2.txt'))
        }
        self.client.post(edit_inferno_url, form_data, follow=True)
        inferno = Book.objects.get(name='Inferno')
        # Assert that old BookPages was deleted and new one was created
        self.assertEqual(BookIndex.objects.count(), 1)
        self.assertEqual(BookPages.objects.count(), 1)
        # Verify Inferno's index file is still correct
        url = download_url + '?' + urlencode({'name': inferno.index.name})
        self.verify_file(url, 'inferno_index.txt')
        # Verify Inferno's new pages
        url = download_url + '?' + urlencode({'name': inferno.pages.name})
        self.verify_file(url, 'inferno_pages_v2.txt')

        #
        # Edit Inferno: clear pages file
        #
        form_data = {'name': 'Inferno', 'pages-clear': 'on'}
        self.client.post(edit_inferno_url, form_data, follow=True)
        inferno = Book.objects.get(name='Inferno')
        # Assert that the BookPages was deleted
        self.assertEqual(BookIndex.objects.count(), 1)
        self.assertEqual(BookPages.objects.count(), 0)
        # Assert that Inferno's pages field is empty now
        self.assertEqual(inferno.pages.name, '')
        # Assert that the contents of old Inferno's index are still correct
        url = download_url + '?' + urlencode({'name': inferno.index.name})
        self.verify_file(url, 'inferno_index.txt')

        #
        # Add "Lost Symbol" book with index and pages.
        #
        form_data = {
            'name': 'Lost Symbol',
            'index': open(get_file_path('lost_symbol_index.txt')),
            'pages': open(get_file_path('lost_symbol_pages_v1.txt'))
        }
        self.client.post(save_new_url, form_data, follow=True)
        lost_symbol = Book.objects.get(name='Lost Symbol')
        inferno = Book.objects.get(name='Inferno')
        edit_lost_symbol_url = reverse('model_files:book.edit',
                                       kwargs={'pk': lost_symbol.pk})
        # Assert that one BookIndex and one BookPages were created
        self.assertEqual(BookIndex.objects.count(), 2)
        self.assertEqual(BookPages.objects.count(), 1)

        # From now on, after each change in any of the Books,
        # we check if the files are correct for both of them,
        # to ensure that saving/deleting files of a Book doesn't
        # interfere with the files of the other one.

        # Assert Infernos's page field is still empty
        self.assertEqual(inferno.pages.name, '')
        # Assert that the contents of Inferno's index are still correct
        url = download_url + '?' + urlencode({'name': inferno.index.name})
        self.verify_file(url, 'inferno_index.txt')
        # Assert that the contents of Lost Symbol's index are correct
        url = download_url + '?' + urlencode({'name': lost_symbol.index.name})
        self.verify_file(url, 'lost_symbol_index.txt')
        # Assert that the contents of Lost Symbol's pages are correct
        url = download_url + '?' + urlencode({'name': lost_symbol.pages.name})
        self.verify_file(url, 'lost_symbol_pages_v1.txt')

        #
        # Edit Lost Symbol: clear index file
        #
        form_data = {'name': 'Lost Symbol', 'index-clear': 'on'}
        self.client.post(edit_lost_symbol_url, form_data, follow=True)
        lost_symbol = Book.objects.get(name='Lost Symbol')
        inferno = Book.objects.get(name='Inferno')
        # Assert one BookIndex was deleted
        self.assertEqual(BookIndex.objects.count(), 1)
        self.assertEqual(BookPages.objects.count(), 1)
        # Assert that the contents of Lost Symbol's pages are still correct
        url = download_url + '?' + urlencode({'name': lost_symbol.pages.name})
        self.verify_file(url, 'lost_symbol_pages_v1.txt')
        # Assert that the contents of Inferno's index are still correct
        url = download_url + '?' + urlencode({'name': inferno.index.name})
        self.verify_file(url, 'inferno_index.txt')
        # Assert that Inferno's pages are still empty
        self.assertEqual(inferno.pages.name, '')
        # Assert that Lost Symbol's index is empty now
        self.assertEqual(lost_symbol.index.name, '')

        #
        # Delete Inferno
        #
        inferno.delete()
        lost_symbol = Book.objects.get(name='Lost Symbol')
        # Assert one BookIndex was deleted
        self.assertEqual(BookIndex.objects.count(), 0)
        self.assertEqual(BookPages.objects.count(), 1)
        # Assert that the contents Lost Symbol's pages are still correct
        url = download_url + '?' + urlencode({'name': lost_symbol.pages.name})
        self.verify_file(url, 'lost_symbol_pages_v1.txt')
        # Assert that Lost Symbol's index is still empty
        self.assertEqual(lost_symbol.index.name, '')
        return

        #
        # Delete Lost Symbol
        #
        lost_symbol.delete()
        # Assert that there are no BookIndex or BookPages left
        self.assertEqual(BookIndex.objects.count(), 0)
        self.assertEqual(BookPages.objects.count(), 0)
Exemple #16
0
 def get_absolute_url_edit(self):
     return reverse('documentapp:singledoc.edit', kwargs={'pk': self.pk})
Exemple #17
0
 def get_absolute_url(self):
     return reverse('model_files:book.edit', kwargs={'pk': self.pk})
    def test_files_operations(self):
        save_new_url = reverse('model_files:book.add')
        download_url = reverse('db_file_storage.download_file')

        #
        # Add "Inferno" book without index or pages.
        #
        form_data = {'name': 'Inferno'}
        self.client.post(save_new_url, form_data, follow=True)
        inferno = Book.objects.get(name='Inferno')
        edit_inferno_url = reverse('model_files:book.edit',
                                   kwargs={'pk': inferno.pk})
        # Assert book file fields are empty
        self.assertEqual(inferno.index.name, '')
        self.assertEqual(inferno.pages.name, '')
        # Assert no BookIndex and no BookPages were created
        self.assertEqual(BookIndex.objects.count(), 0)
        self.assertEqual(BookPages.objects.count(), 0)

        #
        # Edit Inferno: add index file
        #
        form_data = {'name': 'Inferno',
                     'index': open(get_file_path('inferno_index.txt'))}
        self.client.post(edit_inferno_url, form_data, follow=True)
        inferno = Book.objects.get(name='Inferno')
        # Assert that only a BookIndex was created
        self.assertEqual(BookIndex.objects.count(), 1)
        self.assertEqual(BookPages.objects.count(), 0)
        # Verify Inferno's new index
        url = download_url + '?' + urlencode({'name': inferno.index.name})
        self.verify_file(url, 'inferno_index.txt')
        # Assert Inferno's pages field is still empty
        self.assertEqual(inferno.pages.name, '')

        #
        # Edit Inferno: add pages file
        #
        form_data = {'name': 'Inferno',
                     'pages': open(get_file_path('inferno_pages_v1.txt'))}
        self.client.post(edit_inferno_url, form_data, follow=True)
        inferno = Book.objects.get(name='Inferno')
        # Assert that only a BookPages was created
        self.assertEqual(BookIndex.objects.count(), 1)
        self.assertEqual(BookPages.objects.count(), 1)
        # Verify Inferno's index file is still correct
        url = download_url + '?' + urlencode({'name': inferno.index.name})
        self.verify_file(url, 'inferno_index.txt')
        # Verify Inferno's new pages
        url = download_url + '?' + urlencode({'name': inferno.pages.name})
        self.verify_file(url, 'inferno_pages_v1.txt')

        #
        # Edit Inferno: change pages file
        #
        form_data = {'name': 'Inferno',
                     'pages': open(get_file_path('inferno_pages_v2.txt'))}
        self.client.post(edit_inferno_url, form_data, follow=True)
        inferno = Book.objects.get(name='Inferno')
        # Assert that old BookPages was deleted and new one was created
        self.assertEqual(BookIndex.objects.count(), 1)
        self.assertEqual(BookPages.objects.count(), 1)
        # Verify Inferno's index file is still correct
        url = download_url + '?' + urlencode({'name': inferno.index.name})
        self.verify_file(url, 'inferno_index.txt')
        # Verify Inferno's new pages
        url = download_url + '?' + urlencode({'name': inferno.pages.name})
        self.verify_file(url, 'inferno_pages_v2.txt')

        #
        # Edit Inferno: clear pages file
        #
        form_data = {'name': 'Inferno',
                     'pages-clear': 'on'}
        self.client.post(edit_inferno_url, form_data, follow=True)
        inferno = Book.objects.get(name='Inferno')
        # Assert that the BookPages was deleted
        self.assertEqual(BookIndex.objects.count(), 1)
        self.assertEqual(BookPages.objects.count(), 0)
        # Assert that Inferno's pages field is empty now
        self.assertEqual(inferno.pages.name, '')
        # Assert that the contents of old Inferno's index are still correct
        url = download_url + '?' + urlencode({'name': inferno.index.name})
        self.verify_file(url, 'inferno_index.txt')

        #
        # Add "Lost Symbol" book with index and pages.
        #
        form_data = {'name': 'Lost Symbol',
                     'index': open(get_file_path('lost_symbol_index.txt')),
                     'pages': open(get_file_path('lost_symbol_pages_v1.txt'))}
        self.client.post(save_new_url, form_data, follow=True)
        lost_symbol = Book.objects.get(name='Lost Symbol')
        inferno = Book.objects.get(name='Inferno')
        edit_lost_symbol_url = reverse('model_files:book.edit',
                                       kwargs={'pk': lost_symbol.pk})
        # Assert that one BookIndex and one BookPages were created
        self.assertEqual(BookIndex.objects.count(), 2)
        self.assertEqual(BookPages.objects.count(), 1)

        # From now on, after each change in any of the Books,
        # we check if the files are correct for both of them,
        # to ensure that saving/deleting files of a Book doesn't
        # interfere with the files of the other one.

        # Assert Infernos's page field is still empty
        self.assertEqual(inferno.pages.name, '')
        # Assert that the contents of Inferno's index are still correct
        url = download_url + '?' + urlencode({'name': inferno.index.name})
        self.verify_file(url, 'inferno_index.txt')
        # Assert that the contents of Lost Symbol's index are correct
        url = download_url + '?' + urlencode({'name': lost_symbol.index.name})
        self.verify_file(url, 'lost_symbol_index.txt')
        # Assert that the contents of Lost Symbol's pages are correct
        url = download_url + '?' + urlencode({'name': lost_symbol.pages.name})
        self.verify_file(url, 'lost_symbol_pages_v1.txt')

        #
        # Edit Lost Symbol: clear index file
        #
        form_data = {'name': 'Lost Symbol',
                     'index-clear': 'on'}
        self.client.post(edit_lost_symbol_url, form_data, follow=True)
        lost_symbol = Book.objects.get(name='Lost Symbol')
        inferno = Book.objects.get(name='Inferno')
        # Assert one BookIndex was deleted
        self.assertEqual(BookIndex.objects.count(), 1)
        self.assertEqual(BookPages.objects.count(), 1)
        # Assert that the contents of Lost Symbol's pages are still correct
        url = download_url + '?' + urlencode({'name': lost_symbol.pages.name})
        self.verify_file(url, 'lost_symbol_pages_v1.txt')
        # Assert that the contents of Inferno's index are still correct
        url = download_url + '?' + urlencode({'name': inferno.index.name})
        self.verify_file(url, 'inferno_index.txt')
        # Assert that Inferno's pages are still empty
        self.assertEqual(inferno.pages.name, '')
        # Assert that Lost Symbol's index is empty now
        self.assertEqual(lost_symbol.index.name, '')

        #
        # Delete Inferno
        #
        inferno.delete()
        lost_symbol = Book.objects.get(name='Lost Symbol')
        # Assert one BookIndex was deleted
        self.assertEqual(BookIndex.objects.count(), 0)
        self.assertEqual(BookPages.objects.count(), 1)
        # Assert that the contents Lost Symbol's pages are still correct
        url = download_url + '?' + urlencode({'name': lost_symbol.pages.name})
        self.verify_file(url, 'lost_symbol_pages_v1.txt')
        # Assert that Lost Symbol's index is still empty
        self.assertEqual(lost_symbol.index.name, '')
        return

        #
        # Delete Lost Symbol
        #
        lost_symbol.delete()
        # Assert that there are no BookIndex or BookPages left
        self.assertEqual(BookIndex.objects.count(), 0)
        self.assertEqual(BookPages.objects.count(), 0)
 def get_absolute_url(self):
     return reverse('model_files:book.edit', kwargs={'pk': self.pk})