class TestRouter(unittest.TestCase): def setUp(self): self._resource_manager = MockResourceManager() self._template_builder = TemplateBuilder(self._resource_manager) self._template_builder.start() self._router = Router(resource_manager=self._resource_manager, template_builder=self._template_builder, login_manager=Mock(), database=Mock(), platform=Mock()) self._router.start() self._app = self._router.get_wsgi_app() install_opener() add_wsgi_intercept("localhost", 8080, lambda: self._app) def tearDown(self): remove_wsgi_intercept("localhost", 8080) self._router = None self._template_builder = None self._resource_manager = None self._app = None #=========================================================================== # Helpers #=========================================================================== def _route_index(self): return urllib2.urlopen("http://localhost:8080/").read() def _route_login(self, post_data): return urllib2.urlopen("http://localhost:8080/login", post_data).read() def _route_logout(self): return urllib2.urlopen("http://localhost:8080/logout").read() def _route_static(self, asset): return urllib2.urlopen("http://localhost:8080/static").read() def _assert_json_response(self, expected_json, resp): """ `expected_json` in object form, unencoded """ self.assertEqual(json.loads(expected_json), resp.body.read()) #=========================================================================== # Tests #=========================================================================== def test_index(self): resp = self._route_index() self.assertNotEqual(resp, None) def test_login_without_state(self): try: self._route_login(JSON({"auth_code": "1234"})) except Exception, e: self.assertEqual(e.code, 401)