~tribaal/txaws/xss-hardening

« back to all changes in this revision

Viewing changes to txaws/storage/test/test_client.py

  • Committer: Tristan Seligmann
  • Date: 2009-04-27 23:53:32 UTC
  • mfrom: (3.1.5 client)
  • Revision ID: mithrandi@mithrandi.net-20090427235332-l8azkl1kvn5pjtay
mergeĀ lp:~lifeless/txaws/client

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 
3
3
from epsilon.extime import Time
4
4
 
5
 
from twisted.trial.unittest import TestCase
6
5
from twisted.internet.defer import succeed
7
6
 
8
 
from txaws.storage.client import S3, S3Request, calculateMD5, hmac_sha1
 
7
from txaws.credentials import AWSCredentials
 
8
from txaws.tests import TXAWSTestCase
 
9
from txaws.storage.client import S3, S3Request, calculateMD5
9
10
 
10
11
class StubbedS3Request(S3Request):
11
12
    def getPage(self, url, method, postdata, headers):
13
14
        return succeed('')
14
15
 
15
16
 
16
 
class RequestTests(TestCase):
17
 
    accessKey = '0PN5J17HBGZHT7JJ3X82'
18
 
    secretKey = 'uV3F3YluFJax1cknvbcGwgjvx4QpvB+leU8dUj2o'
 
17
class RequestTests(TXAWSTestCase):
 
18
    creds = AWSCredentials(access_key='0PN5J17HBGZHT7JJ3X82',
 
19
        secret_key='uV3F3YluFJax1cknvbcGwgjvx4QpvB+leU8dUj2o')
19
20
 
20
21
    def test_objectRequest(self):
21
22
        """
69
70
 
70
71
        return request.submit().addCallback(_postCheck)
71
72
 
72
 
    def test_invalidAuthenticatedRequest(self):
73
 
        """
74
 
        An authenticated request must be supplied both private and public keys.
75
 
        """
76
 
        self.assertRaises(ValueError, S3Request, 'GET', accessKey='foo')
77
 
        self.assertRaises(ValueError, S3Request, 'GET', secretKey='foo')
78
 
 
79
73
    def test_authenticationTestCases(self):
80
 
        req = S3Request('GET', accessKey=self.accessKey, secretKey=self.secretKey)
 
74
        req = S3Request('GET', creds=self.creds)
81
75
        req.date = 'Wed, 28 Mar 2007 01:29:59 +0000'
82
76
 
83
77
        headers = req.getHeaders()
142
136
    }
143
137
 
144
138
 
145
 
class WrapperTests(TestCase):
 
139
class WrapperTests(TXAWSTestCase):
 
140
 
146
141
    def setUp(self):
147
 
        self.s3 = TestableS3(accessKey='accessKey', secretKey='secretKey')
 
142
        TXAWSTestCase.setUp(self)
 
143
        self.creds = AWSCredentials(access_key='accessKey', secret_key='secretKey')
 
144
        self.s3 = TestableS3(creds=self.creds)
148
145
 
149
146
    def test_makeRequest(self):
150
147
        """
153
150
        marker = object()
154
151
 
155
152
        def _cb(*a, **kw):
156
 
            self.assertEqual(kw['accessKey'], 'accessKey')
157
 
            self.assertEqual(kw['secretKey'], 'secretKey')
 
153
            self.assertEqual(kw['creds'], self.creds)
158
154
            return marker
159
155
 
160
156
        self.s3.requestFactory = _cb
230
226
        self.assertEqual(req.objectName, 'foo')
231
227
 
232
228
 
233
 
class MiscellaneousTests(TestCase):
 
229
class MiscellaneousTests(TXAWSTestCase):
234
230
    def test_contentMD5(self):
235
231
        self.assertEqual(calculateMD5('somedata'), 'rvr3UC1SmUw7AZV2NqPN0g==')
236
 
 
237
 
    def test_hmac_sha1(self):
238
 
        cases = [
239
 
            ('0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b'.decode('hex'), 'Hi There', 'thcxhlUFcmTii8C2+zeMjvFGvgA='),
240
 
            ('Jefe', 'what do ya want for nothing?', '7/zfauXrL6LSdBbV8YTfnCWafHk='),
241
 
            ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'.decode('hex'), '\xdd' * 50, 'El1zQrmsEc2Ro5r0iqF7T2PxddM='),
242
 
            ]
243
 
 
244
 
        for key, data, expected in cases:
245
 
            self.assertEqual(hmac_sha1(key, data), expected)