hacking-jack's picture
Upload 1579 files
8070315 verified
# -*- coding: utf-8 -*-
import unittest, re
from nose.tools import *
import panda
class PropertiesTest(unittest.TestCase):
def setUp(self):
self.i = _panda_instance()
def test_cloud_id(self):
eq_(self.i.cloud_id, 'my-cloud-id')
def test_access_key(self):
eq_(self.i.access_key, 'my-access-key')
def test_secret_key(self):
eq_(self.i.secret_key, 'my-secret-key')
def test_api_host(self):
eq_(self.i.api_host, 'api.pandastream.com')
def test_api_port(self):
eq_(self.i.api_port, 443)
class UtilsTest(unittest.TestCase):
def setUp(self):
self.i = _panda_instance()
def test_api_url(self):
eq_(self.i.api_url(), 'https://api.pandastream.com:443/v2')
def test_https_api_url(self):
self.i.api_port = 443
eq_(self.i.api_url(), 'https://api.pandastream.com:443/v2')
class SignatureTest(unittest.TestCase):
def setUp(self):
self.i = panda.Panda(access_key='my_access_key', secret_key='my_secret_key', api_host='myapihost', api_port=85, cloud_id='my_cloud_id')
def test_simple_signed_params(self):
result = self.i.signed_params('POST', '/videos.json', {}, '2009-11-04T17:54:11+00:00')
expectation = {
'access_key': "my_access_key",
'timestamp': "2009-11-04T17:54:11+00:00",
'cloud_id': 'my_cloud_id',
'signature': 'TI2n/dsSllxFhxcEShRGKWtDSqxu+kuJUPs335NavMo=',
}
eq_(result, expectation)
def test_signed_params_with_arguments(self):
result = self.i.signed_params('POST', '/videos.json', {'param1': 'one', 'param2': 'two'}, '2009-11-04T17:54:11+00:00')
expectation = {
'access_key': "my_access_key",
'timestamp': "2009-11-04T17:54:11+00:00",
'cloud_id': 'my_cloud_id',
'signature': 'w66goW6Ve5CT9Ibbx3ryvq4XM8OfIfSZe5oapgZBaUs=',
'param1': 'one',
'param2': 'two',
}
eq_(result, expectation)
def test_signed_params_with_file_argument(self):
result = self.i.signed_params('POST', '/videos.json', {'param1': 'one', 'param2': 'two',
'file': 'file data'}, '2009-11-04T17:54:11+00:00')
expectation = {
'access_key': "my_access_key",
'timestamp': "2009-11-04T17:54:11+00:00",
'cloud_id': 'my_cloud_id',
'signature': 'w66goW6Ve5CT9Ibbx3ryvq4XM8OfIfSZe5oapgZBaUs=',
'param1': 'one',
'param2': 'two',
'file': 'file data'
}
eq_(result, expectation)
def test_signed_params_with_non_string_arguments(self):
result = self.i.signed_params('POST', '/videos.json', {1: 'one', 'param2': 2}, '2009-11-04T17:54:11+00:00')
expectation = {
'access_key': "my_access_key",
'timestamp': "2009-11-04T17:54:11+00:00",
'cloud_id': 'my_cloud_id',
'signature': 'n/tGZ9Pt70k+pprejGf8Khzxw9R1cAfrklh8lcjn+W0=',
1: 'one',
'param2': 2,
}
eq_(result, expectation)
def test_signed_params_with_difficult_characters(self):
result = self.i.signed_params('POST', '/videos.json', {'tilde': '~', 'space': ' ', 'slash': '/'}, '2009-11-04T17:54:11+00:00')
expectation = {
'access_key': "my_access_key",
'timestamp': "2009-11-04T17:54:11+00:00",
'cloud_id': 'my_cloud_id',
'signature': 'DHf9ERJmKQbcu8MCLP1Evv3BV2yIQo15MoTe9YV/rs8=',
'tilde': '~',
'space': ' ',
'slash': '/',
}
eq_(result, expectation)
def test_signed_params_with_unicode_characters(self):
result = self.i.signed_params(
'POST',
'/videos/upload.json',
{'file_name': u'original♥.mp4'},
'2014-12-22T17:54:11+00:00')
expectation = {
'access_key': "my_access_key",
'timestamp': "2014-12-22T17:54:11+00:00",
'cloud_id': 'my_cloud_id',
'signature': 'NBK3+4HtaolBLi0I1Ai9MEXQvCG+T96E7PEIKf4CMwM=',
'file_name': u'original♥.mp4'
}
eq_(result, expectation)
class TimestampTest(unittest.TestCase):
def test_timestamp_includes_timezone(self):
ok_(re.search(':\d\d(\.\d+)?(\+|-)\d\d:\d\d$', panda.generate_timestamp()))
def _panda_instance():
return panda.Panda(cloud_id='my-cloud-id', access_key='my-access-key', secret_key='my-secret-key')