class TestSFTPServer(TestCase): def setUp(self): self.useFixture(NestedTempfile()) self.fs_root = self.useFixture(TempDir()).path self.sftp_server = SFTPServer(None, self.fs_root) super(TestSFTPServer, self).setUp() def assertPermissions(self, expected, file_name): observed = os.stat(file_name).st_mode self.assertEqual( expected, observed, "Expected %07o, got %07o, for %s" % ( expected, observed, file_name)) def test_gotVersion(self): # gotVersion always returns an empty dict, since the server does not # support any extended features. See ISFTPServer. extras = self.sftp_server.gotVersion(None, None) self.assertEquals(extras, {}) def test_mkdir_and_rmdir(self): self.sftp_server.makeDirectory('foo/bar', None) self.assertEqual( os.listdir(os.path.join(self.sftp_server._current_upload))[0], 'foo') dir_name = os.path.join(self.sftp_server._current_upload, 'foo') self.assertEqual(os.listdir(dir_name)[0], 'bar') self.assertPermissions(040775, dir_name) self.sftp_server.removeDirectory('foo/bar') self.assertEqual( os.listdir(os.path.join(self.sftp_server._current_upload, 'foo')), []) self.sftp_server.removeDirectory('foo') self.assertEqual( os.listdir(os.path.join(self.sftp_server._current_upload)), []) def test_file_creation(self): upload_file = self.sftp_server.openFile('foo/bar', None, None) upload_file.writeChunk(0, "This is a test") file_name = os.path.join(self.sftp_server._current_upload, 'foo/bar') test_file = open(file_name, 'r') self.assertEqual(test_file.read(), "This is a test") test_file.close() self.assertPermissions(0100644, file_name) dir_name = os.path.join(self.sftp_server._current_upload, 'bar/foo') os.makedirs(dir_name) upload_file = self.sftp_server.openFile('bar/foo', None, None) self.assertRaisesWithContent( FileIsADirectory, "File is a directory: '%s'" % dir_name, upload_file.writeChunk, 0, "This is a test")
def setUp(self): self.useFixture(NestedTempfile()) self.fs_root = self.useFixture(TempDir()).path self.sftp_server = SFTPServer(None, self.fs_root) super(TestSFTPServer, self).setUp()