def test_encrypt_text_not_normalized_ignore_encoding(self): self.content_type = 'text/plain;charset=utf-8' unenc, content = em.normalize_before_encryption( self.unencrypted, self.content_type, self.content_encoding, self.enforce_text_only) self.assertEqual(mt.normalize_content_type(self.content_type), content) self.assertEqual(self.unencrypted.encode('utf-8'), unenc)
def normalize_before_encryption(unencrypted, content_type, content_encoding, enforce_text_only=False): """Normalize unencrypted prior to plugin encryption processing.""" if not unencrypted: raise CryptoNoPayloadProvidedException() # Validate and normalize content-type. normalized_mime = mime_types.normalize_content_type(content_type) if not mime_types.is_supported(normalized_mime): raise CryptoContentTypeNotSupportedException(content_type) # Process plain-text type. if normalized_mime in mime_types.PLAIN_TEXT: # normalize text to binary string unencrypted = unencrypted.encode('utf-8') # Process binary type. else: # payload has to be decoded if mime_types.is_base64_processing_needed(content_type, content_encoding): try: unencrypted = base64.b64decode(unencrypted) except TypeError: raise CryptoPayloadDecodingError() elif enforce_text_only: # For text-based protocols (such as the one-step secret POST), # only 'base64' encoding is possible/supported. raise CryptoContentEncodingMustBeBase64() elif content_encoding: # Unsupported content-encoding request. raise CryptoContentEncodingNotSupportedException(content_encoding) return unencrypted, normalized_mime
def test_encrypt_text_not_normalized_ignore_encoding(self): self.content_type = 'text/plain;charset=utf-8' unenc, content = em.normalize_before_encryption(self.unencrypted, self.content_type, self.content_encoding, self.enforce_text_only) self.assertEqual(mt.normalize_content_type(self.content_type), content) self.assertEqual(self.unencrypted.encode('utf-8'), unenc)
def test_bogus_mime_normalization(self): mime = 'something/bogus' r = mime_types.normalize_content_type(mime) self.assertEqual(r, 'something/bogus')
def test_binary_normalization(self): mime = 'application/octet-stream' r = mime_types.normalize_content_type(mime) self.assertEqual(r, 'application/octet-stream')
def test_malformed_charset_in_plain_text_mime(self): mime = 'text/plain; charset is ISO-8859-1' r = mime_types.normalize_content_type(mime) self.assertEqual(r, mime)
def _test_plain_text_mime_type(self, mime): r = mime_types.normalize_content_type(mime) self.assertEqual(r, 'text/plain')
def test_unsupported_charset_in_plain_text_mime(self): mime = 'text/plain; charset=ISO-8859-1' r = mime_types.normalize_content_type(mime) self.assertEqual(r, mime)