base64-decoding endpoint + test

This commit is contained in:
Ori Livneh
2011-12-20 00:26:14 -05:00
parent 90ea7bee0b
commit 52871e8301
2 changed files with 37 additions and 0 deletions
+7
View File
@@ -7,6 +7,7 @@ httpbin.core
This module provides the core HttpBin experience.
"""
import base64
import json
import os
import time
@@ -241,6 +242,12 @@ def digest_auth(qop=None, user='user', passwd='passwd'):
return dict(authenticated=True, user=user)
@app.route('/base64/<value>')
def decode_base64(value):
"""Decodes base64url-encoded string"""
encoded = value.encode('utf-8')
return base64.urlsafe_b64decode(encoded).decode('utf-8')
if __name__ == '__main__':
app.run()
+30
View File
@@ -0,0 +1,30 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import httpbin
import unittest
import base64
def _string_to_base64(string):
"""Encodes string to utf-8 and then base64"""
utf8_encoded = string.encode('utf-8')
return base64.urlsafe_b64encode(utf8_encoded)
class HttpbinTestCase(unittest.TestCase):
"""Httpbin tests"""
def setUp(self):
self.app = httpbin.app.test_client()
def test_base64(self):
greeting = u'Здравствуй, мир!'
b64_encoded = _string_to_base64(greeting)
response = self.app.get('/base64/{}'.format(b64_encoded))
content = response.data.decode('utf-8')
self.assertEquals(greeting, content)
if __name__ == '__main__':
unittest.main()