|
12 | 12 | from django.test import override_settings
|
13 | 13 |
|
14 | 14 | from storages.backends import sftpstorage
|
| 15 | +from tests.utils import NonSeekableContentFile |
15 | 16 |
|
16 | 17 |
|
17 | 18 | class SFTPStorageTest(TestCase):
|
@@ -69,15 +70,20 @@ def test_mkdir_parent(self, mock_sftp):
|
69 | 70 | @patch('storages.backends.sftpstorage.SFTPStorage.sftp')
|
70 | 71 | def test_save(self, mock_sftp):
|
71 | 72 | self.storage._save('foo', File(io.BytesIO(b'foo'), 'foo'))
|
72 |
| - self.assertTrue(mock_sftp.open.return_value.write.called) |
| 73 | + self.assertTrue(mock_sftp.putfo.called) |
| 74 | + |
| 75 | + @patch('storages.backends.sftpstorage.SFTPStorage.sftp') |
| 76 | + def test_save_non_seekable(self, mock_sftp): |
| 77 | + self.storage._save('foo', NonSeekableContentFile('foo')) |
| 78 | + self.assertTrue(mock_sftp.putfo.called) |
73 | 79 |
|
74 | 80 | @patch('storages.backends.sftpstorage.SFTPStorage.sftp', **{
|
75 | 81 | 'stat.side_effect': (FileNotFoundError(), True)
|
76 | 82 | })
|
77 | 83 | def test_save_in_subdir(self, mock_sftp):
|
78 | 84 | self.storage._save('bar/foo', File(io.BytesIO(b'foo'), 'foo'))
|
79 | 85 | self.assertEqual(mock_sftp.mkdir.call_args_list[0][0], ('bar',))
|
80 |
| - self.assertTrue(mock_sftp.open.return_value.write.called) |
| 86 | + self.assertTrue(mock_sftp.putfo.called) |
81 | 87 |
|
82 | 88 | @patch('storages.backends.sftpstorage.SFTPStorage.sftp')
|
83 | 89 | def test_delete(self, mock_sftp):
|
@@ -212,4 +218,4 @@ def test_write(self):
|
212 | 218 | def test_close(self, mock_sftp):
|
213 | 219 | self.file.write(b'foo')
|
214 | 220 | self.file.close()
|
215 |
| - self.assertTrue(mock_sftp.open.return_value.write.called) |
| 221 | + self.assertTrue(mock_sftp.putfo.called) |
0 commit comments