def test_start_and_stop(self): r = Router() r.logger = MockLogger() threading.Thread(target=r.start).start() self.assertTrue(r.running) r.stop() self.assertTrue(not r.running) # not waiting for the router to shutdown causes exceptions # on global destruction. (race condition) time.sleep(1.0)
def test_build_component(self): r = Router() r.logger = MockLogger() component = r.build_component("rapidsms.tests.%s.MockApp", { "type": "harness", "title": "test app" }) self.assertEquals(type(component), MockApp, "component has right type") self.assertEquals(component.title, "test app", "component has right title") self.assertRaises( Exception, r.build_component, ("rapidsms.tests.%s.MockApp", { "type": "harness", "title": "test app", "argh": "no config" }), "build_component gracefully handles bad configuration options")
def test_run(self): r = Router() r.logger = MockLogger() app = r.build_component("rapidsms.tests.%s.MockApp", { "type": "harness", "title": "test app" }) r.apps.append(app) r.add_backend({"type": "backend", "title": "test_backend"}) backend = r.get_backend("test-backend") # NOTE the dash; FIXME msg = backend.message("test user", "test message") r.send(msg) r.run() received = app.calls[-1][1] self.assertEquals(msg, received, "message is identical") self.assertEquals(msg.connection, received.connection, "same connection") self.assertEquals(msg.text, received.text, "same text")
def test_log(self): r = Router() r.logger = MockLogger() r.log("debug", "test message %d", 5) self.assertEquals(r.logger[0], (r, "debug", "test message %d", 5), "log() calls self.logger.write()")