From 4c66ba3a8d65d0c46e361472bac51ff005db454b Mon Sep 17 00:00:00 2001 From: Jasmin Bom Date: Sun, 30 Sep 2018 12:07:17 +0200 Subject: [PATCH] Allow filenames without dots in them when sending files (#1228) * Fix issue 1227 by allowing filenames without dots in them * Touch new test data file * Satisfy flake8 --- telegram/files/inputfile.py | 2 +- tests/data/telegram | 0 tests/test_inputfile.py | 31 +++++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 tests/data/telegram diff --git a/telegram/files/inputfile.py b/telegram/files/inputfile.py index 0d614db34..977c325c5 100644 --- a/telegram/files/inputfile.py +++ b/telegram/files/inputfile.py @@ -70,7 +70,7 @@ class InputFile(object): self.filename)[0] or DEFAULT_MIME_TYPE else: self.mimetype = DEFAULT_MIME_TYPE - if not self.filename or '.' not in self.filename: + if not self.filename: self.filename = self.mimetype.replace('/', '.') @property diff --git a/tests/data/telegram b/tests/data/telegram new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test_inputfile.py b/tests/test_inputfile.py index fd34c841b..1c667d3df 100644 --- a/tests/test_inputfile.py +++ b/tests/test_inputfile.py @@ -63,3 +63,34 @@ class TestInputFile(object): assert (InputFile(BytesIO(b'blah'), filename='tg.notaproperext').mimetype == 'application/octet-stream') assert InputFile(BytesIO(b'blah')).mimetype == 'application/octet-stream' + + def test_filenames(self): + assert InputFile(open('tests/data/telegram.jpg', 'rb')).filename == 'telegram.jpg' + assert InputFile(open('tests/data/telegram.jpg', 'rb'), + filename='blah').filename == 'blah' + assert InputFile(open('tests/data/telegram.jpg', 'rb'), + filename='blah.jpg').filename == 'blah.jpg' + assert InputFile(open('tests/data/telegram', 'rb')).filename == 'telegram' + assert InputFile(open('tests/data/telegram', 'rb'), + filename='blah').filename == 'blah' + assert InputFile(open('tests/data/telegram', 'rb'), + filename='blah.jpg').filename == 'blah.jpg' + + class MockedFileobject(object): + # A open(?, 'rb') without a .name + def __init__(self, f): + self.f = open(f, 'rb') + + def read(self): + return self.f.read() + + assert InputFile(MockedFileobject('tests/data/telegram.jpg')).filename == 'image.jpeg' + assert InputFile(MockedFileobject('tests/data/telegram.jpg'), + filename='blah').filename == 'blah' + assert InputFile(MockedFileobject('tests/data/telegram.jpg'), + filename='blah.jpg').filename == 'blah.jpg' + assert InputFile(MockedFileobject('tests/data/telegram')).filename == 'application.octet-stream' # flake8: noqa + assert InputFile(MockedFileobject('tests/data/telegram'), + filename='blah').filename == 'blah' + assert InputFile(MockedFileobject('tests/data/telegram'), + filename='blah.jpg').filename == 'blah.jpg'