def make_headers(self, headers): headers = CaselessDict(headers) if 'user-agent' in headers: self.user_agent = headers.pop('user-agent') self.cookies = self.make_cookies(headers.pop('cookie', {})) self.headers = headers
def test_caseless(self): d = CaselessDict() d['key_Lower'] = 1 self.assertEqual(d['KEy_loWer'], 1) self.assertEqual(d.get('KEy_loWer'), 1) d['KEY_LOWER'] = 3 self.assertEqual(d['key_Lower'], 3) self.assertEqual(d.get('key_Lower'), 3)
def test_caseless(self): d = CaselessDict() d["key_Lower"] = 1 self.assertEqual(d["KEy_loWer"], 1) self.assertEqual(d.get("KEy_loWer"), 1) d["KEY_LOWER"] = 3 self.assertEqual(d["key_Lower"], 3) self.assertEqual(d.get("key_Lower"), 3)
def test_setdefault(self): d = CaselessDict({'a': 1, 'b': 2}) r = d.setdefault('A', 5) self.assertEqual(r, 1) self.assertEqual(d['A'], 1) r = d.setdefault('c', 5) self.assertEqual(r, 5) self.assertEqual(d['C'], 5)
def test_setdefault(self): d = CaselessDict({"a": 1, "b": 2}) r = d.setdefault("A", 5) self.assertEqual(r, 1) self.assertEqual(d["A"], 1) r = d.setdefault("c", 5) self.assertEqual(r, 5) self.assertEqual(d["C"], 5)
def test_fromkeys(self): keys = ("a", "b") d = CaselessDict.fromkeys(keys) self.assertEqual(d["A"], None) self.assertEqual(d["B"], None) d = CaselessDict.fromkeys(keys, 1) self.assertEqual(d["A"], 1) self.assertEqual(d["B"], 1) instance = CaselessDict() d = instance.fromkeys(keys) self.assertEqual(d["A"], None) self.assertEqual(d["B"], None) d = instance.fromkeys(keys, 1) self.assertEqual(d["A"], 1) self.assertEqual(d["B"], 1)
def test_fromkeys(self): keys = ('a', 'b') d = CaselessDict.fromkeys(keys) self.assertEqual(d['A'], None) self.assertEqual(d['B'], None) d = CaselessDict.fromkeys(keys, 1) self.assertEqual(d['A'], 1) self.assertEqual(d['B'], 1) instance = CaselessDict() d = instance.fromkeys(keys) self.assertEqual(d['A'], None) self.assertEqual(d['B'], None) d = instance.fromkeys(keys, 1) self.assertEqual(d['A'], 1) self.assertEqual(d['B'], 1)
def test_pop(self): d = CaselessDict() d['a'] = 1 self.assertEqual(d.pop('A'), 1) self.assertRaises(KeyError, d.pop, 'A')
def test_getdefault(self): d = CaselessDict() self.assertEqual(d.get('c', 5), 5) d['c'] = 10 self.assertEqual(d.get('c', 5), 10)
def test_contains(self): d = CaselessDict() d["a"] = 1 assert "a" in d assert d.has_key("a")
def test_copy(self): h1 = CaselessDict({'header1': 'value'}) h2 = copy.copy(h1) self.assertEqual(h1, h2) self.assertEqual(h1.get('header1'), h2.get('header1')) assert isinstance(h2, CaselessDict)
def test_pop(self): d = CaselessDict() d["a"] = 1 self.assertEqual(d.pop("A"), 1) self.assertRaises(KeyError, d.pop, "A")
def test_delete(self): d = CaselessDict({'key_lower': 1}) del d['key_LOWER'] self.assertRaises(KeyError, d.__getitem__, 'key_LOWER') self.assertRaises(KeyError, d.__getitem__, 'key_lower')
def test_contains(self): d = CaselessDict() d['a'] = 1 assert 'a' in d assert d.has_key('a')
def test_getdefault(self): d = CaselessDict() self.assertEqual(d.get("c", 5), 5) d["c"] = 10 self.assertEqual(d.get("c", 5), 10)
def test_contains(self): d = CaselessDict() d['a'] = 1 assert 'a' in d
def test_init_dict(self): seq = {'red': 1, 'black': 3} d = CaselessDict(seq) self.assertEqual(d['red'], 1) self.assertEqual(d['black'], 3)
def test_copy(self): h1 = CaselessDict({"header1": "value"}) h2 = copy.copy(h1) self.assertEqual(h1, h2) self.assertEqual(h1.get("header1"), h2.get("header1")) assert isinstance(h2, CaselessDict)
def test_init_pair_sequence(self): seq = (('red', 1), ('black', 3)) d = CaselessDict(seq) self.assertEqual(d['red'], 1) self.assertEqual(d['black'], 3)
def _headers_to_botocore_kwargs(self, headers): """ Convert headers to botocore keyword agruments. """ # This is required while we need to support both boto and botocore. mapping = CaselessDict({ 'Content-Type': 'ContentType', 'Cache-Control': 'CacheControl', 'Content-Disposition': 'ContentDisposition', 'Content-Encoding': 'ContentEncoding', 'Content-Language': 'ContentLanguage', 'Content-Length': 'ContentLength', 'Content-MD5': 'ContentMD5', 'Expires': 'Expires', 'X-Amz-Grant-Full-Control': 'GrantFullControl', 'X-Amz-Grant-Read': 'GrantRead', 'X-Amz-Grant-Read-ACP': 'GrantReadACP', 'X-Amz-Grant-Write-ACP': 'GrantWriteACP', 'X-Amz-Object-Lock-Legal-Hold': 'ObjectLockLegalHoldStatus', 'X-Amz-Object-Lock-Mode': 'ObjectLockMode', 'X-Amz-Object-Lock-Retain-Until-Date': 'ObjectLockRetainUntilDate', 'X-Amz-Request-Payer': 'RequestPayer', 'X-Amz-Server-Side-Encryption': 'ServerSideEncryption', 'X-Amz-Server-Side-Encryption-Aws-Kms-Key-Id': 'SSEKMSKeyId', 'X-Amz-Server-Side-Encryption-Context': 'SSEKMSEncryptionContext', 'X-Amz-Server-Side-Encryption-Customer-Algorithm': 'SSECustomerAlgorithm', 'X-Amz-Server-Side-Encryption-Customer-Key': 'SSECustomerKey', 'X-Amz-Server-Side-Encryption-Customer-Key-Md5': 'SSECustomerKeyMD5', 'X-Amz-Storage-Class': 'StorageClass', 'X-Amz-Tagging': 'Tagging', 'X-Amz-Website-Redirect-Location': 'WebsiteRedirectLocation', }) extra = {} for key, value in headers.items(): try: kwarg = mapping[key] except KeyError: raise TypeError(f'Header "{key}" is not supported by botocore') else: extra[kwarg] = value return extra