def test_retrieve_missing_password_raises_not_found(self): item = ItemFactory(user=self.user) response = self._request(url=f'{self.url}{item.uuid}/') json_response = json.loads(response.content) item.refresh_from_db() self.assertEqual(item.visit_count, 0) self.assertEqual(response.status_code, HTTP_404_NOT_FOUND) self.assertEqual(json_response, {'detail': 'Not found.'})
def test_retrieve_correct_password_redirects_to_url(self): password = '******' item = ItemFactory( user=self.user, url='http://kodziek.pl', password=make_password(password), ) self.assertEqual(item.visit_count, 0) response = self._request( url=f'{self.url}{item.uuid}/?password={password}', ) item.refresh_from_db() self.assertEqual(item.visit_count, 1) self.assertEqual(response.status_code, HTTP_302_FOUND) self.assertEqual(response.url, item.url)
def setUp(self): self.url_item = ItemFactory( user=self.user, url=reverse('login'), password=self.password_encrypted, ) self.file_item = ItemFactory( user=self.user, file=SimpleUploadedFile('file', self.file_content), password=self.password_encrypted, ) self.url_item_url = reverse( 'items:get', kwargs={'uuid': self.url_item.uuid}, ) self.file_item_url = reverse( 'items:get', kwargs={'uuid': self.file_item.uuid}, )
def test_retrieve_item_older_than_one_day_returns_not_found(self): password = '******' past_date = ( datetime.now() - settings.ITEMS_LIFETIME - relativedelta(seconds=5) ) with freeze_time(past_date): item = ItemFactory( user=self.user, url='http://kodziek.pl', password=make_password(password), ) response = self._request( url=f'{self.url}{item.uuid}/?password={password}', ) item.refresh_from_db() json_response = json.loads(response.content) self.assertEqual(item.visit_count, 0) self.assertEqual(response.status_code, HTTP_404_NOT_FOUND) self.assertEqual(json_response, {'detail': 'Not found.'})
def test_get_returns_proper_stats(self): date1 = '2017-10-25' date2 = '2017-10-26' url = 'http://kodziek.pl' file = SimpleUploadedFile('file', b'content') expected_response = { date1: { 'files': 2, 'links': 1, }, date2: { 'files': 1, 'links': 0, }, } with freeze_time(date1): ItemFactory(user=self.user, file=file, visit_count=1) ItemFactory(user=self.user, file=file, visit_count=5) ItemFactory(user=self.user, url=url, visit_count=2) with freeze_time(date2): ItemFactory(user=self.user, file=file, visit_count=2) ItemFactory(user=self.user, file=file) ItemFactory(user=self.user, url=url) response = self._request() json_response = json.loads(response.content) self.assertEqual(response.status_code, HTTP_200_OK) self.assertEqual(json_response, expected_response)
def test_retrieve_correct_password_returns_file(self): password = '******' content = b'content' item = ItemFactory( user=self.user, file=SimpleUploadedFile('file', content), password=make_password(password), ) self.assertEqual(item.visit_count, 0) response = self._request( url=f'{self.url}{item.uuid}/?password={password}', ) item.refresh_from_db() self.assertEqual(item.visit_count, 1) self.assertEqual(response.status_code, HTTP_200_OK) response_content = b'' for line in response.streaming_content: response_content += line self.assertEqual(response_content, content)
def setUpTestData(cls): cls.user = UserFactory() cls.file_content = b'content' cls.password = '******' cls.password_encrypted = make_password(cls.password) with freeze_time(datetime.now() - settings.ITEMS_LIFETIME): cls.old_item = ItemFactory( user=cls.user, url=reverse('login'), password=cls.password_encrypted, ) cls.old_item_url = reverse( 'items:get', kwargs={'uuid': cls.old_item.uuid}, )
def setUpClass(cls): cls.password = '******' cls.item = ItemFactory.build(password=make_password(cls.password))
def _create_item(cls, user, **kwargs): return ItemFactory(password='******', user=user, **kwargs)
class GetItemViewTestCase(TestCase): @classmethod def setUpTestData(cls): cls.user = UserFactory() cls.file_content = b'content' cls.password = '******' cls.password_encrypted = make_password(cls.password) with freeze_time(datetime.now() - settings.ITEMS_LIFETIME): cls.old_item = ItemFactory( user=cls.user, url=reverse('login'), password=cls.password_encrypted, ) cls.old_item_url = reverse( 'items:get', kwargs={'uuid': cls.old_item.uuid}, ) def setUp(self): self.url_item = ItemFactory( user=self.user, url=reverse('login'), password=self.password_encrypted, ) self.file_item = ItemFactory( user=self.user, file=SimpleUploadedFile('file', self.file_content), password=self.password_encrypted, ) self.url_item_url = reverse( 'items:get', kwargs={'uuid': self.url_item.uuid}, ) self.file_item_url = reverse( 'items:get', kwargs={'uuid': self.file_item.uuid}, ) def test_get_renders_password_form(self): response = self.client.get(self.url_item_url) self.assertEqual(response.status_code, 200) def test_get_old_file_raises_404_not_found(self): response = self.client.get(self.old_item_url) self.assertEqual(response.status_code, 404) def test_post_missing_data_raises_error(self): response = self.client.post(self.url_item_url, {}) self.assertEqual(response.status_code, 200) self.assertFormError( response, 'form', 'password', ['This field is required.'], ) def test_post_incorrect_password_raises_error(self): data = { 'password': '******', } response = self.client.post(self.url_item_url, data) self.assertEqual(response.status_code, 200) self.assertFormError( response, 'form', 'password', ['Incorrect password.'], ) def test_post_redirect_to_item_url(self): data = { 'password': self.password, } response = self.client.post(self.url_item_url, data) self.url_item.refresh_from_db() self.assertRedirects(response, self.url_item.url) self.assertEqual(self.url_item.visit_count, 1) def test_post_returns_file(self): data = { 'password': self.password, } response = self.client.post(self.file_item_url, data) self.file_item.refresh_from_db() response_content = b'' for line in response.streaming_content: response_content += line self.assertEqual(response.status_code, 200) self.assertEqual(response_content, self.file_content) self.assertEqual(self.file_item.visit_count, 1) def test_post_to_old_file_raises_404_not_found(self): data = { 'password': self.password, } response = self.client.post(self.old_item_url, data) self.old_item.refresh_from_db() self.assertEqual(response.status_code, 404) self.assertEqual(self.url_item.visit_count, 0)