Browse Source

DIV-986: Add unit tests.

pull/163/head
Steven Ly 5 years ago
parent
commit
2f2ebde220
3 changed files with 61 additions and 0 deletions
  1. +0
    -0
      edivorce/apps/core/tests/__init__.py
  2. +61
    -0
      edivorce/apps/core/tests/test_upload.py
  3. +0
    -0
      edivorce/apps/core/tests/test_users.py

+ 0
- 0
edivorce/apps/core/tests/__init__.py View File


+ 61
- 0
edivorce/apps/core/tests/test_upload.py View File

@ -0,0 +1,61 @@
import clamd
from clamd import BufferTooLongError
from unittest import mock
from django import forms
from django.test import TestCase
from django.core.files.uploadedfile import SimpleUploadedFile
from ..validators import file_scan_validation
class TestUploadForm(forms.Form):
upload = forms.FileField(validators=[file_scan_validation])
class UploadScanTests(TestCase):
def test_validation_disabled(self):
with self.settings(CLAMAV_ENABLED=False):
infected = SimpleUploadedFile('infected.txt', clamd.EICAR)
form = TestUploadForm(files={'upload': infected})
self.assertTrue(form.is_valid(), form.errors)
def test_validation_invalid_network_connection(self):
with self.settings(CLAMAV_TCP_PORT=9999):
infected = SimpleUploadedFile('infected.txt', clamd.EICAR)
form = TestUploadForm(files={'upload': infected})
self.assertFalse(form.is_valid())
self.assertEqual(form.errors['upload'][0], 'Unable to scan file.')
@mock.patch('clamd.ClamdNetworkSocket.instream')
def test_validation_buffer_overflow(self, mock_clam):
mock_clam.side_effect = BufferTooLongError()
# by default clamav has a 10mb limit for instream
clean = SimpleUploadedFile('clean.txt', b'clean file')
form = TestUploadForm(files={'upload': clean})
self.assertFalse(form.is_valid())
self.assertEqual(form.errors['upload'][0], 'Unable to scan file.')
@mock.patch('clamd.ClamdNetworkSocket.instream')
def test_validation_virus_found(self, mock_clam):
mock_clam.return_value = {'stream': ('FOUND', 'Eicar-Test-Signature')}
infected = SimpleUploadedFile('infected.txt', clamd.EICAR)
form = TestUploadForm(files={'upload': infected})
self.assertFalse(form.is_valid())
self.assertEqual(form.errors['upload'][0], 'Infected file found.')
@mock.patch('clamd.ClamdNetworkSocket.instream')
def test_validation_no_virus_found(self, mock_clam):
mock_clam.return_value = {'stream': ('OK', None)}
clean = SimpleUploadedFile('clean.txt', b'clean file')
form = TestUploadForm(files={'upload': clean})
self.assertTrue(form.is_valid())

edivorce/apps/core/tests.py → edivorce/apps/core/tests/test_users.py View File


Loading…
Cancel
Save