Skip to content

Commit 62f2c56

Browse files
authored
Tear down PermissionError bug fix for Windows OS (#218)
Fixed Tear down PermissionError bug fix for Windows OS
1 parent 71900ca commit 62f2c56

File tree

2 files changed

+65
-45
lines changed

2 files changed

+65
-45
lines changed

tests/views/test_receipts.py

+1-45
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
import uuid
2-
31
from django.contrib.messages import get_messages
42
from django.core.files.uploadedfile import SimpleUploadedFile
53
from django.urls import reverse, resolve
64

7-
from backend.models import Receipt, ReceiptDownloadToken
5+
from backend.models import Receipt
86
from tests.handler import ViewTestCase
97

108

@@ -84,45 +82,3 @@ def test_receipt_create_post_with_invalid_image(self):
8482
messages = list(get_messages(response.wsgi_request))
8583
self.assertEqual(len(messages), 1)
8684
self.assertEqual(str(messages[0]), "No image found")
87-
88-
89-
class ReceiptDownloadEndpointsTest(ViewTestCase):
90-
def setUp(self):
91-
super().setUp()
92-
self.receipt = Receipt.objects.create(
93-
user=self.log_in_user, image=SimpleUploadedFile("mock_image.jpg", b"image_content", "image/jpeg")
94-
)
95-
self.token = ReceiptDownloadToken.objects.create(user=self.log_in_user, file=self.receipt)
96-
self.download_receipt_url = reverse("api:receipts:download_receipt", args=[self.token.token])
97-
self.generate_download_link_url = reverse("api:receipts:generate_download_link", args=[self.receipt.id])
98-
99-
def test_download_receipt_valid_token(self):
100-
self.login_user()
101-
response = self.client.get(self.download_receipt_url)
102-
self.assertEqual(response.status_code, 200)
103-
self.assertEqual(response["Content-Type"], "image/jpeg")
104-
105-
def test_download_receipt_invalid_token(self):
106-
self.login_user()
107-
invalid_token = uuid.uuid4() # Generate a valid UUID
108-
invalid_url = reverse("api:receipts:download_receipt", args=[invalid_token])
109-
response = self.client.get(invalid_url)
110-
self.assertEqual(response.status_code, 404) # Update expected status code
111-
112-
def test_download_receipt_used_token(self):
113-
self.login_user()
114-
self.client.get(self.download_receipt_url) # Use the token once
115-
response = self.client.get(self.download_receipt_url) # Try to use the token again
116-
self.assertEqual(response.status_code, 404) # Expect a 404 response
117-
118-
def test_generate_download_link_valid_receipt(self):
119-
self.login_user()
120-
response = self.client.get(self.generate_download_link_url)
121-
self.assertEqual(response.status_code, 200)
122-
self.assertEqual(response["Content-Type"], "application/json")
123-
124-
def test_generate_download_link_invalid_receipt(self):
125-
self.login_user()
126-
invalid_url = reverse("api:receipts:generate_download_link", args=[9999]) # Assuming 9999 is an invalid receipt id
127-
response = self.client.get(invalid_url)
128-
self.assertEqual(response.status_code, 404)

tests/views/test_reciepts_download.py

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import os
2+
import shutil
3+
import uuid
4+
5+
from django.core.files.uploadedfile import SimpleUploadedFile
6+
from django.urls import reverse
7+
from django.test import TestCase
8+
9+
from backend.models import Receipt, ReceiptDownloadToken, User
10+
11+
12+
class ReceiptDownloadEndpointsTest(TestCase):
13+
@classmethod
14+
def tearDownClass(cls):
15+
directory = "media/receipts"
16+
try:
17+
shutil.rmtree(directory)
18+
os.mkdir(directory)
19+
except PermissionError:
20+
print(
21+
'"ReceiptDownloadEndpointsTest" tearDownClass() failed due to random PermissionError '
22+
"(only on Windows). Files in /media/receipts have not been deleted. Run tests again to delete files."
23+
)
24+
super().tearDownClass()
25+
26+
def setUp(self):
27+
super().setUp()
28+
self.log_in_user = User.objects.create_user(username="[email protected]", password="user", email="[email protected]")
29+
self.client.login(username="[email protected]", password="user")
30+
31+
self.receipt = Receipt.objects.create(
32+
user=self.log_in_user, image=SimpleUploadedFile("mock_image.jpg", b"image_content", "image/jpeg")
33+
)
34+
self.token = ReceiptDownloadToken.objects.create(user=self.log_in_user, file=self.receipt)
35+
self.download_receipt_url = reverse("api:receipts:download_receipt", args=[self.token.token])
36+
self.generate_download_link_url = reverse("api:receipts:generate_download_link", args=[self.receipt.id])
37+
38+
def test_download_receipt_valid_token(self):
39+
response = self.client.get(self.download_receipt_url)
40+
self.assertEqual(response.status_code, 200)
41+
self.assertEqual(response["Content-Type"], "image/jpeg")
42+
43+
def test_download_receipt_invalid_token(self):
44+
invalid_token = uuid.uuid4() # Generate a valid UUID
45+
invalid_url = reverse("api:receipts:download_receipt", args=[invalid_token])
46+
response = self.client.get(invalid_url)
47+
self.assertEqual(response.status_code, 404) # Update expected status code
48+
49+
def test_download_receipt_used_token(self):
50+
self.client.get(self.download_receipt_url) # Use the token once
51+
response = self.client.get(self.download_receipt_url) # Try to use the token again
52+
self.assertEqual(response.status_code, 404) # Expect a 404 response
53+
54+
def test_generate_download_link_valid_receipt(self):
55+
response = self.client.get(self.generate_download_link_url)
56+
self.assertEqual(response.status_code, 200)
57+
self.assertEqual(response["Content-Type"], "application/json")
58+
self.client.logout()
59+
60+
def test_generate_download_link_invalid_receipt(self):
61+
invalid_url = reverse("api:receipts:generate_download_link", args=[9999]) # Assuming 9999 is an invalid receipt id
62+
response = self.client.get(invalid_url)
63+
self.assertEqual(response.status_code, 404)
64+
self.client.logout()

0 commit comments

Comments
 (0)