class TestMQTTBaseProtocol1(unittest.TestCase): def setUp(self): self.transport = proto_helpers.StringTransportWithDisconnection() self.clock = task.Clock() self.factory = MQTTFactory(MQTTFactory.PUBLISHER) self.protocol = MQTTBaseProtocol(self.factory) self.transport.protocol = self.protocol MQTTBaseProtocol.callLater = self.clock.callLater self.protocol.makeConnection(self.transport) def test_connect(self): self.CONNACK = CONNACK() self.CONNACK.session = False self.CONNACK.resultCode = 0 self.CONNACK.encode() d = self.protocol.connect("TwistedMQTT-pub", keepalive=0, version=v31) self.transport.clear() self.assertEqual(self.protocol.state, MQTTBaseProtocol.CONNECTING) self.protocol.dataReceived(self.CONNACK.encoded) self.assertEqual(self.protocol.state, MQTTBaseProtocol.CONNECTED) self.assertEqual(self.CONNACK.session, self.successResultOf(d)) def test_connect_timeout(self): d = self.protocol.connect("TwistedMQTT-pub", keepalive=0, version=v31) self.transport.clear() self.assertEqual(self.protocol.state, MQTTBaseProtocol.CONNECTING) self.assertNoResult(d) self.clock.advance(11) self.failureResultOf(d).trap(MQTTTimeoutError)
class TestMQTTBaseProtocol1(unittest.TestCase): def setUp(self): self.transport = proto_helpers.StringTransportWithDisconnection() self.clock = task.Clock() self.factory = MQTTFactory(MQTTFactory.PUBLISHER) self.protocol = MQTTBaseProtocol(self.factory) self.transport.protocol = self.protocol MQTTBaseProtocol.callLater = self.clock.callLater self.protocol.makeConnection(self.transport) def test_connect(self): self.CONNACK = CONNACK() self.CONNACK.session = False self.CONNACK.resultCode = 0 self.CONNACK.encode() d = self.protocol.connect("TwistedMQTT-pub", keepalive=0, version=v31) self.transport.clear() self.assertEqual(self.protocol.state, self.protocol.CONNECTING) self.protocol.dataReceived(self.CONNACK.encoded) self.assertEqual(self.protocol.state, self.protocol.CONNECTED) self.assertEqual(self.CONNACK.session, self.successResultOf(d)) def test_connect_timeout(self): d = self.protocol.connect("TwistedMQTT-pub", keepalive=0, version=v31) self.transport.clear() self.assertEqual(self.protocol.state, self.protocol.CONNECTING) self.assertNoResult(d) self.clock.advance(11) self.failureResultOf(d).trap(MQTTTimeoutError)
class TestMQTTBaseExceptions(unittest.TestCase): def setUp(self): self.transport = proto_helpers.StringTransportWithDisconnection() self.clock = task.Clock() self.factory = MQTTFactory(MQTTFactory.PUBLISHER) self.protocol = MQTTBaseProtocol(self.factory) self.transport.protocol = self.protocol MQTTBaseProtocol.callLater = self.clock.callLater self.protocol.makeConnection(self.transport) def test_connect_version(self): clientId="1234567890ABCDEFGHIJ1234567890" d = self.protocol.connect(clientId, keepalive=0, version=0) self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, MQTTBaseProtocol.IDLE) def test_connect_client_id_v31(self): clientId="1234567890ABCDEFGHIJ1234567890" d = self.protocol.connect(clientId, keepalive=0, version=v31) self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, MQTTBaseProtocol.IDLE) def test_connect_client_id_v311(self): clientId="1234567890ABCDEFGHIJ1234567890"*3000 d = self.protocol.connect(clientId, keepalive=0, version=v311) self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, MQTTBaseProtocol.IDLE) def test_connect_keepalive_negative(self): clientId="1234567890A" d = self.protocol.connect(clientId, keepalive=-1, version=v31) self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, MQTTBaseProtocol.IDLE) def test_connect_keepalive_large(self): clientId="1234567890A" d = self.protocol.connect(clientId, keepalive=65537, version=v31) self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, MQTTBaseProtocol.IDLE) def test_connect_will_qos_large(self): clientId="1234567890A" d = self.protocol.connect(clientId, keepalive=0, version=v31, willQoS=5) self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, MQTTBaseProtocol.IDLE) def test_connect_will_qos_negative(self): clientId="1234567890A" d = self.protocol.connect(clientId, keepalive=0, version=v31, willQoS=-1) self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, MQTTBaseProtocol.IDLE) def test_connect_no_username_with_password(self): clientId="1234567890A" d = self.protocol.connect(clientId, keepalive=0, version=v31, password="******") self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, MQTTBaseProtocol.IDLE) def test_connect_will_topic_no_message(self): clientId="1234567890A" d = self.protocol.connect(clientId, keepalive=0, version=v31, willTopic="foo/bar") self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, MQTTBaseProtocol.IDLE) def test_connect_will_message_no_topic(self): clientId="1234567890A" d = self.protocol.connect(clientId, keepalive=0, version=v31, willMessage="Hello") self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, MQTTBaseProtocol.IDLE) def test_window_size_large(self): self.assertRaises(ValueError, self.protocol.setWindowSize, 32) def test_window_size_negative(self): self.assertRaises(ValueError, self.protocol.setWindowSize, -1) def test_timeout_large(self): self.assertRaises(ValueError, self.protocol.setTimeout, 65536) def test_timeout_negative(self): self.assertRaises(ValueError, self.protocol.setTimeout, -1)
class TestMQTTBaseExceptions(unittest.TestCase): def setUp(self): self.transport = proto_helpers.StringTransportWithDisconnection() self.clock = task.Clock() self.factory = MQTTFactory(MQTTFactory.PUBLISHER) self.protocol = MQTTBaseProtocol(self.factory) self.transport.protocol = self.protocol MQTTBaseProtocol.callLater = self.clock.callLater self.protocol.makeConnection(self.transport) def test_connect_version(self): clientId="1234567890ABCDEFGHIJ1234567890" d = self.protocol.connect(clientId, keepalive=0, version=0) self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, self.protocol.IDLE) def test_connect_client_id_v31(self): clientId="1234567890ABCDEFGHIJ1234567890" d = self.protocol.connect(clientId, keepalive=0, version=v31) self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, self.protocol.IDLE) def test_connect_client_id_v311(self): clientId="1234567890ABCDEFGHIJ1234567890"*3000 d = self.protocol.connect(clientId, keepalive=0, version=v311) self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, self.protocol.IDLE) def test_connect_keepalive_negative(self): clientId="1234567890A" d = self.protocol.connect(clientId, keepalive=-1, version=v31) self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, self.protocol.IDLE) def test_connect_keepalive_large(self): clientId="1234567890A" d = self.protocol.connect(clientId, keepalive=65537, version=v31) self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, self.protocol.IDLE) def test_connect_will_qos_large(self): clientId="1234567890A" d = self.protocol.connect(clientId, keepalive=0, version=v31, willQoS=5) self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, self.protocol.IDLE) def test_connect_will_qos_negative(self): clientId="1234567890A" d = self.protocol.connect(clientId, keepalive=0, version=v31, willQoS=-1) self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, self.protocol.IDLE) def test_connect_no_username_with_password(self): clientId="1234567890A" d = self.protocol.connect(clientId, keepalive=0, version=v31, password="******") self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, self.protocol.IDLE) def test_connect_will_topic_no_message(self): clientId="1234567890A" d = self.protocol.connect(clientId, keepalive=0, version=v31, willTopic="foo/bar") self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, self.protocol.IDLE) def test_connect_will_message_no_topic(self): clientId="1234567890A" d = self.protocol.connect(clientId, keepalive=0, version=v31, willMessage="Hello") self.failureResultOf(d).trap(ValueError) self.assertEqual(self.protocol.state, self.protocol.IDLE) def test_window_size_large(self): self.assertRaises(ValueError, self.protocol.setWindowSize, 32) def test_window_size_negative(self): self.assertRaises(ValueError, self.protocol.setWindowSize, -1) def test_timeout_large(self): self.assertRaises(ValueError, self.protocol.setTimeout, 65536) def test_timeout_negative(self): self.assertRaises(ValueError, self.protocol.setTimeout, -1)