diff options
author | mnandri <mnandri@eunglick.corporate.thoughtworks.com> | 2015-12-16 16:35:33 +0100 |
---|---|---|
committer | mnandri <mnandri@eunglick.corporate.thoughtworks.com> | 2015-12-18 11:22:34 +0100 |
commit | 338498cef1cd4f2b9ae49bc54bd496de0e5472a0 (patch) | |
tree | c64272dc1f7bb8502974f6993cda33b157f31cf2 /service/test | |
parent | f8ac23150f5f840eaa4ef920b003966f911de8fa (diff) |
WIP: rename me later
Diffstat (limited to 'service/test')
-rw-r--r-- | service/test/integration/test_retrieve_attachment.py | 17 | ||||
-rw-r--r-- | service/test/support/integration/app_test_client.py | 11 | ||||
-rw-r--r-- | service/test/support/test_helper.py | 4 |
3 files changed, 28 insertions, 4 deletions
diff --git a/service/test/integration/test_retrieve_attachment.py b/service/test/integration/test_retrieve_attachment.py index bc7f8a0d..ca11a14d 100644 --- a/service/test/integration/test_retrieve_attachment.py +++ b/service/test/integration/test_retrieve_attachment.py @@ -13,10 +13,13 @@ # # You should have received a copy of the GNU Affero General Public License # along with Pixelated. If not, see <http://www.gnu.org/licenses/>. +import base64 +from email import encoders from email.mime.application import MIMEApplication from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText +from poster.encode import multipart_encode, MultipartParam from twisted.internet import defer from test.support.integration.soledad_test_base import SoledadTestBase @@ -49,3 +52,17 @@ class RetrieveAttachmentTest(SoledadTestBase): self.assertEqual(404, req.code) self.assertIsNone(attachment) + + @defer.inlineCallbacks + def test_post_new_attachment(self): + content_type = 'text/plain' + filename = 'filename.txt' + data = 'pretend to be binary attachment data' + file = MultipartParam('attachment', value=data, filename=filename, filetype=content_type) + datagen, headers = multipart_encode([file]) + post_data = "".join(datagen) + + _, req = yield self.post_attachment(post_data, headers) + + self.assertEqual(201, req.code) + self.assertEqual('/attachment/B5B4ED80AC3B894523D72E375DACAA2FC6606C18EDF680FE95903086C8B5E14A', req.headers['Location']) diff --git a/service/test/support/integration/app_test_client.py b/service/test/support/integration/app_test_client.py index 484bea6e..5f7eb90a 100644 --- a/service/test/support/integration/app_test_client.py +++ b/service/test/support/integration/app_test_client.py @@ -123,8 +123,9 @@ class AppTestClient(object): request.args = get_args return self._render(request, as_json) - def post(self, path, body=''): - request = request_mock(path=path, method="POST", body=body, headers={'Content-Type': ['application/json']}) + def post(self, path, body='', headers=None): + headers = headers or {'Content-Type': 'application/json'} + request = request_mock(path=path, method="POST", body=body, headers=headers) return self._render(request) def put(self, path, body): @@ -198,6 +199,12 @@ class AppTestClient(object): res = yield deferred_result defer.returnValue((res, req)) + @defer.inlineCallbacks + def post_attachment(self, data, headers): + deferred_result, req = self.post('/attachment', body=data, headers=headers) + res = yield deferred_result + defer.returnValue((res, req)) + def put_mail(self, data): res, req = self.put('/mails', data) return res, req diff --git a/service/test/support/test_helper.py b/service/test/support/test_helper.py index 21f59d8f..703b62fa 100644 --- a/service/test/support/test_helper.py +++ b/service/test/support/test_helper.py @@ -96,8 +96,8 @@ class PixRequestMock(DummyRequest): def request_mock(path='', method='GET', body='', headers={}): dummy = PixRequestMock(path.split('/')) - for name, value in headers.iteritems(): - dummy.setHeader(name, value) + for name, val in headers.iteritems(): + dummy.headers[name.lower()] = val dummy.method = method dummy.content = io.BytesIO(body) return dummy |