class TestFTP(unittest.TestCase): def setUp(self): self.port = random.choice(range(9000, 11000)) self.server = FTPStubServer(self.port) self.server.run() def tearDown(self): self.server.stop() def test_ftp(self): babe = Babe() a = babe.pull('tests/test.csv', name='Test') a.push(filename='test.csv', protocol='ftp', host='localhost', port=self.port) def test_ftpzip(self): babe = Babe() a = babe.pull('tests/test.csv', name='Test') a.push(filename='test.csv', compress='test.zip', protocol='ftp', host='localhost', port=self.port)
def testImportFtpFile(self): file = {'name':'foo', 'content':'foo bar baz qux'} ftp = FTPStubServer(0) ftp.run() try: ftp.add_file(**file) assignedPort = ftp.server.server_address[1] url = 'ftp://*****:*****@localhost:%d/%s' % (assignedPort, file['name']) with self.master.readFileStream(self.master.importFile(url)) as readable: self.assertEqual(readable.read(), file['content']) finally: ftp.stop()
class FTPTest(TestCase): def setUp(self): self.random_port = 0 self.server = FTPStubServer(self.random_port) self.server.run() self.port = self.server.server.server_address[1] def tearDown(self): self.server.stop() def test_put_test_file(self): self.assertFalse(self.server.files("foo.txt")) ftp = FTP() ftp.set_debuglevel(0) ftp.connect('localhost', self.port) ftp.login('user1', 'passwd') ftp.storlines('STOR foo.txt', StringIO('cant believe its not bitter')) ftp.quit() ftp.close() self.assertTrue(self.server.files("foo.txt")) def test_put_2_files_associates_the_correct_content_with_the_correct_filename(self): ftp = FTP() ftp.connect('localhost', self.port) ftp.set_debuglevel(0) ftp.login('user2','other_pass') ftp.storlines('STOR robot.txt', StringIO("\n".join(["file1 content" for i in range(1024)]))) ftp.storlines('STOR monster.txt', StringIO("file2 content")) ftp.quit() ftp.close() self.assertEquals("\r\n".join(["file1 content" for i in range(1024)]), self.server.files("robot.txt").strip()) self.assertEquals("file2 content", self.server.files("monster.txt").strip()) def test_retrieve_expected_file_returns_file(self): expected_content = 'content of my file\nis a complete mystery to me.' self.server.add_file('foo.txt', expected_content) ftp = FTP() ftp.set_debuglevel(2) ftp.connect('localhost', self.port) ftp.login('chris', 'tarttelin') directory_content = [] ftp.retrlines('LIST', lambda x: directory_content.append(x)) file_content = [] ftp.retrlines('RETR foo.txt', lambda x: file_content.append(x)) ftp.quit() ftp.close() self.assertTrue('foo.txt' in '\n'.join(directory_content)) self.assertEquals(expected_content, '\n'.join(file_content))
class FTPTest(TestCase): def setUp(self): self.port = 6666 self.server = FTPStubServer(self.port) self.server.run() def tearDown(self): self.server.stop() def test_put_test_file(self): self.assertFalse(self.server.files("foo.txt")) ftp = FTP() ftp.set_debuglevel(0) ftp.connect('localhost', self.port) ftp.login('user1', 'passwd') ftp.storlines('STOR foo.txt', StringIO('cant believe its not bitter')) ftp.quit() ftp.close() self.assertTrue(self.server.files("foo.txt")) def test_put_2_files_associates_the_correct_content_with_the_correct_filename(self): ftp = FTP() ftp.connect('localhost', self.port) ftp.set_debuglevel(0) ftp.login('user2','other_pass') ftp.storlines('STOR robot.txt', StringIO("file1 content"*1024)) ftp.storlines('STOR monster.txt', StringIO("file2 content")) ftp.quit() ftp.close() self.assertEquals("file1 content"*1024, self.server.files("robot.txt").strip()) self.assertEquals("file2 content", self.server.files("monster.txt").strip()) def test_retrieve_expected_file_returns_file(self): expected_content = 'content of my file\nis a complete mystery to me.' self.server.add_file('foo.txt', expected_content) ftp = FTP() ftp.set_debuglevel(2) ftp.connect('localhost', self.port) ftp.login('chris', 'tarttelin') directory_content = [] ftp.retrlines('LIST', lambda x: directory_content.append(x)) file_content = [] ftp.retrlines('RETR foo.txt', lambda x: file_content.append(x)) ftp.quit() ftp.close() self.assertTrue('foo.txt' in '\n'.join(directory_content)) self.assertEquals(expected_content, '\n'.join(file_content))
class FTPTests(unittest.TestCase): def setUp(self): self.server = FTPStubServer(0) self.server.run() self.port = self.server.server.server_address[1] self.ftp = ftp.ftp() self.ftp.connect('127.0.0.1', self.port) def tearDown(self): self.ftp.close() self.server.stop() def test_connection(self): serv_ans = self.ftp.ftp_ans() self.assertEqual(serv_ans, "220 (FtpStubServer 0.1a)\r\n") def test_login(self): self.ftp.ftp_ans() serv_ans = self.ftp.login() self.assertEqual( serv_ans, "331 Please specify password.\r\n230 You are now logged in.\r\n") def test_list(self): self.ftp.ftp_ans() self.server.add_file("1.txt", "abracarabra") serv_ans = self.ftp.ls() self.assertEqual(serv_ans, "1.txt") def test_download(self): self.ftp.ftp_ans() self.server.add_file("1.txt", "abracarabra") with unittest.mock.patch.object(self.ftp, 'size', return_value=100): self.ftp.download_file("1.txt") with open("1.txt", "r") as file: ans = file.read() self.assertEqual(ans, "abracarabra") def test_pasv(self): reply = self.ftp.ftp_ans() reply = self.ftp.pasv() self.assertTrue(reply.startswith("227 Entering Passive Mode.")) def test_cd(self): dir_name = "new_dir" self.ftp.cd(dir_name) self.assertEqual(self.ftp.send_comand("PWD"), '250 OK. Current directory is "' + dir_name + '"\r\n')
class TestFTP(unittest.TestCase): def setUp(self): self.port = random.choice(range(9000, 11000)) self.server = FTPStubServer(self.port) self.server.run() def tearDown(self): self.server.stop() def test_ftp(self): babe = Babe() a = babe.pull("tests/test.csv", name="Test") a.push(filename="test.csv", protocol="ftp", host="localhost", port=self.port) def test_ftpzip(self): babe = Babe() a = babe.pull("tests/test.csv", name="Test") a.push(filename="test.csv", compress="test.zip", protocol="ftp", host="localhost", port=self.port)
class FTPTest(TestCase): def setUp(self): self.server = FTPStubServer(0) self.server.run() self.port = self.server.server.server_address[1] self.ftp = FTP() self.ftp.set_debuglevel(0) self.ftp.connect('localhost', self.port) self.ftp.login('user1', 'passwd') def tearDown(self): self.ftp.quit() self.ftp.close() self.server.stop() def test_change_directory(self): self.ftp.cwd('newdir') self.assertEqual(self.ftp.pwd(), 'newdir') def test_make_directory(self): prev_dir = self.ftp.pwd() self.ftp.mkd('newdir/newdir') self.assertEqual(self.ftp.pwd(), prev_dir) def test_put_test_file(self): self.assertFalse(self.server.files("foo.txt")) self.ftp.storlines('STOR foo.txt', BytesIO(b'cant believe its not bitter')) self.assertTrue(self.server.files("foo.txt")) def test_put_2_files_associates_the_correct_content_with_the_correct_filename(self): data = "\n".join(["file1 content" for i in range(1024)]) self.ftp.storlines('STOR robot.txt', BytesIO(data.encode('utf-8'))) self.ftp.storlines('STOR monster.txt', BytesIO(b'file2 content')) self.assertEqual("\r\n".join(["file1 content" for i in range(1024)]), self.server.files("robot.txt").strip()) self.assertEqual("file2 content", self.server.files("monster.txt").strip()) def test_list_2_files(self): self.lines = [] def accumulate(line): self.lines.append(line) self.ftp.storlines('STOR palladium.csv', BytesIO(b'data')) self.ftp.storlines('STOR vanadiyam.pdf', BytesIO(b'more data')) self.ftp.retrlines('LIST', accumulate) self.assertEqual(sorted(self.lines), sorted(['vanadiyam.pdf', 'palladium.csv'])) def test_nlst_2_files(self): self.lines = [] def accumulate(line): self.lines.append(line) self.ftp.storlines('STOR palladium.csv', BytesIO(b'data')) self.ftp.storlines('STOR vanadiyam.pdf', BytesIO(b'more data')) self.ftp.retrlines('NLST', accumulate) self.assertEqual(sorted(self.lines), sorted(['vanadiyam.pdf', 'palladium.csv'])) def test_retrieve_expected_file_returns_file(self): expected_content = 'content of my file\nis a complete mystery to me.' self.server.add_file('foo.txt', expected_content) directory_content = [] self.ftp.retrlines('LIST', lambda x: directory_content.append(x)) file_content = [] self.ftp.retrlines('RETR foo.txt', lambda x: file_content.append(x)) self.assertTrue('foo.txt' in '\n'.join(directory_content)) self.assertEqual(expected_content, '\n'.join(file_content))
class FTPTest(TestCase): def setUp(self): self.server = FTPStubServer(0) self.server.run() self.port = self.server.server.server_address[1] self.ftp = FTP() self.ftp.set_debuglevel(0) self.ftp.connect('localhost', self.port) self.ftp.login('user1', 'passwd') def tearDown(self): self.ftp.quit() self.ftp.close() self.server.stop() def test_change_directory(self): self.ftp.cwd('newdir') self.assertEqual(self.ftp.pwd(), 'newdir') def test_make_directory(self): prev_dir = self.ftp.pwd() self.ftp.mkd('newdir/newdir') self.assertEqual(self.ftp.pwd(), prev_dir) def test_put_test_file(self): self.assertFalse(self.server.files("foo.txt")) self.ftp.storlines('STOR foo.txt', BytesIO(b'cant believe its not bitter')) self.assertTrue(self.server.files("foo.txt")) def test_put_2_files_associates_the_correct_content_with_the_correct_filename( self): data = "\n".join(["file1 content" for i in range(1024)]) self.ftp.storlines('STOR robot.txt', BytesIO(data.encode('utf-8'))) self.ftp.storlines('STOR monster.txt', BytesIO(b'file2 content')) self.assertEqual("\r\n".join(["file1 content" for i in range(1024)]), self.server.files("robot.txt").strip()) self.assertEqual("file2 content", self.server.files("monster.txt").strip()) def test_list_2_files(self): self.lines = [] def accumulate(line): self.lines.append(line) self.ftp.storlines('STOR palladium.csv', BytesIO(b'data')) self.ftp.storlines('STOR vanadiyam.pdf', BytesIO(b'more data')) self.ftp.retrlines('LIST', accumulate) self.assertEqual(sorted(self.lines), sorted(['vanadiyam.pdf', 'palladium.csv'])) def test_nlst_2_files(self): self.lines = [] def accumulate(line): self.lines.append(line) self.ftp.storlines('STOR palladium.csv', BytesIO(b'data')) self.ftp.storlines('STOR vanadiyam.pdf', BytesIO(b'more data')) self.ftp.retrlines('NLST', accumulate) self.assertEqual(sorted(self.lines), sorted(['vanadiyam.pdf', 'palladium.csv'])) def test_retrieve_expected_file_returns_file(self): expected_content = 'content of my file\nis a complete mystery to me.' self.server.add_file('foo.txt', expected_content) directory_content = [] self.ftp.retrlines('LIST', lambda x: directory_content.append(x)) file_content = [] self.ftp.retrlines('RETR foo.txt', lambda x: file_content.append(x)) self.assertTrue('foo.txt' in '\n'.join(directory_content)) self.assertEqual(expected_content, '\n'.join(file_content))
class TestWithStubServer(unittest.TestCase): def setUp(self): self.server = FTPStubServer(0) self.server.run() self.port = self.server.server.server_address[1] self.ftp = FTP() self.ftp.connect('localhost', self.port) def tearDown(self): self.ftp.ftp_quit() self.server.stop() def test_list(self): fileA = "A.png" fileB = "B.png" self.server.add_file(fileA, "") self.server.add_file(fileB, "asd") listing = self.ftp.ftp_list() self.assertEqual(listing, fileA + '\n' + fileB) # Sockets unclosed def test_retr(self): fileB = "B.png" self.server.add_file(fileB, "asd") temp = tempfile.NamedTemporaryFile(delete=False) with mock.patch.object(self.ftp, 'ftp_size', return_value=12345): self.ftp.ftp_retr(fileB, temp.name, download_func=download_batch) with open(temp.name, 'r') as file: data = file.read() self.assertEqual(data, "asd") temp.close() def test_pasv(self): reply = self.ftp.ftp_pasv() self.assertEqual(reply.startswith('227 Entering Passive Mode'), True) def test_cwd_pwd(self): dir_name = "new_dir" expected = '257 "' + dir_name + '" is your current location' + '\r\n' self.ftp.ftp_cwd(dir_name) self.assertEqual(self.ftp.ftp_pwd(), expected) def test_welcome(self): value = '220 (FtpStubServer 0.1a)\r\n' self.assertEqual(self.ftp.welcome, value) # def test_error(self): # text = '530 Please login with USER and PASS' # with mock.patch.object(self.ftp, '_FTP__get_full_reply', # return_value=text): # with self.assertRaises(PermanentError): # self.ftp.ftp_list() def test_extract_file_name(self): fn = self.ftp._FTP__get_filename(os.path.join("C", "test.txt")) self.assertEqual("test.txt", fn) with self.assertRaises(Exception): path = self.ftp._FTP__get_filename(os.getcwd()) def test_size(self): size = "123" response = "213 " + size with mock.patch.object(self.ftp, 'send', return_value=response): self.assertEqual(size, self.ftp.ftp_size("asd")) def test_type(self): self.ftp.ftp_type("A") self.assertFalse(self.ftp.binary) self.ftp.ftp_type("I") self.assertTrue(self.ftp.binary) with self.assertRaises(Exception): self.ftp.ftp_type("E")
class FTPTest(TestCase): def setUp(self): self.server = FTPStubServer(0) self.server.run() self.port = self.server.server.server_address[1] self.ftp = FTP() self.ftp.set_debuglevel(0) self.ftp.connect("localhost", self.port) self.ftp.login("user1", "passwd") def tearDown(self): self.ftp.quit() self.ftp.close() self.server.stop() def test_change_directory(self): self.ftp.cwd("newdir") self.assertEqual(self.ftp.pwd(), "newdir") def test_put_test_file(self): self.assertFalse(self.server.files("foo.txt")) self.ftp.storlines("STOR foo.txt", BytesIO(b"cant believe its not bitter")) self.assertTrue(self.server.files("foo.txt")) def test_put_2_files_associates_the_correct_content_with_the_correct_filename(self): data = "\n".join(["file1 content" for i in range(1024)]) self.ftp.storlines("STOR robot.txt", BytesIO(data.encode("utf-8"))) self.ftp.storlines("STOR monster.txt", BytesIO(b"file2 content")) self.assertEqual("\r\n".join(["file1 content" for i in range(1024)]), self.server.files("robot.txt").strip()) self.assertEqual("file2 content", self.server.files("monster.txt").strip()) def test_list_2_files(self): self.lines = [] def accumulate(line): self.lines.append(line) self.ftp.storlines("STOR palladium.csv", BytesIO(b"data")) self.ftp.storlines("STOR vanadiyam.pdf", BytesIO(b"more data")) self.ftp.retrlines("LIST", accumulate) self.assertEqual(sorted(self.lines), sorted(["vanadiyam.pdf", "palladium.csv"])) def test_nlst_2_files(self): self.lines = [] def accumulate(line): self.lines.append(line) self.ftp.storlines("STOR palladium.csv", BytesIO(b"data")) self.ftp.storlines("STOR vanadiyam.pdf", BytesIO(b"more data")) self.ftp.retrlines("NLST", accumulate) self.assertEqual(sorted(self.lines), sorted(["vanadiyam.pdf", "palladium.csv"])) def test_retrieve_expected_file_returns_file(self): expected_content = "content of my file\nis a complete mystery to me." self.server.add_file("foo.txt", expected_content) directory_content = [] self.ftp.retrlines("LIST", lambda x: directory_content.append(x)) file_content = [] self.ftp.retrlines("RETR foo.txt", lambda x: file_content.append(x)) self.assertTrue("foo.txt" in "\n".join(directory_content)) self.assertEqual(expected_content, "\n".join(file_content))