try: from io import StringIO from io import BytesIO except ImportError: from StringIO import StringIO as StringIO from StringIO import StringIO as BytesIO import unittest2 import mitogen.core from mitogen.core import b import testlib class BlobTest(testlib.TestCase): klass = mitogen.core.Blob def make(self): return self.klass(b('x') * 128) def test_repr(self): blob = self.make() self.assertEquals('[blob: 128 bytes]', repr(blob)) def test_decays_on_constructor(self): blob = self.make() self.assertEquals(b('x')*128, mitogen.core.BytesType(blob)) def test_decays_on_write(self): blob = self.make() io = BytesIO() io.write(blob) self.assertEquals(128, io.tell()) self.assertEquals(b('x')*128, io.getvalue()) def test_message_roundtrip(self): blob = self.make() msg = mitogen.core.Message.pickled(blob) blob2 = msg.unpickle() self.assertEquals(type(blob), type(blob2)) self.assertEquals(repr(blob), repr(blob2)) self.assertEquals(mitogen.core.BytesType(blob), mitogen.core.BytesType(blob2)) class SecretTest(testlib.TestCase): klass = mitogen.core.Secret def make(self): return self.klass('password') def test_repr(self): secret = self.make() self.assertEquals('[secret]', repr(secret)) def test_decays_on_constructor(self): secret = self.make() self.assertEquals('password', mitogen.core.UnicodeType(secret)) def test_decays_on_write(self): secret = self.make() io = StringIO() io.write(secret) self.assertEquals(8, io.tell()) self.assertEquals('password', io.getvalue()) def test_message_roundtrip(self): secret = self.make() msg = mitogen.core.Message.pickled(secret) secret2 = msg.unpickle() self.assertEquals(type(secret), type(secret2)) self.assertEquals(repr(secret), repr(secret2)) self.assertEquals(mitogen.core.b(secret), mitogen.core.b(secret2)) if __name__ == '__main__': unittest2.main()