def test_all(self): router = Router() router.all('/', endware_1) router.all('/', endware_2) self.assertIsNotNone(router._endware_path_match('/', 'GET')) self.assertIsNotNone(router._endware_path_match('/', 'PUT')) self.assertIsNotNone(router._endware_path_match('/', 'POST')) self.assertIsNotNone(router._endware_path_match('/', 'DELETE')) self.assertIsNone(router._endware_path_match('/abc', 'GET')) self.assertEqual( router._endware_path_match('/', 'GET')[2], endware_1) # endware_1 matches method in tuple in endware
def test_use(self): app = App() app.use(middleware_1, path='/') router = Router() router.use('/', middleware_2) app.use(router, path='/abc') self.assertIsNotNone(app._route_path('/', 'GET')[0]) self.assertEqual(len(app._route_path('/', 'GET')[0]), 2) # two elements in the middleware self.assertIsNone(app._route_path('/', 'GET')[1]) # no items in the endware self.assertTrue(middleware_1 in app._route_path( '/', 'GET')[0][0]) # middleware_1 in the first tuple in middleware self.assertTrue(middleware_2 in app._route_path( '/', 'GET')[0][1]) # middleware_2 in the second tuple in middleware
def listening(): print("App is listening at localhost on port 8080") def log_incoming_request(req, res, next): print('[%s] %s' % (req.method, req.originalUrl) ) # print the request type and path next() # make sure the endware is reached def serve_homepage(req, res): homepage = open(os.path.join(os.path.dirname(__file__), 'home.html'), 'r').read() # read the file as a string homepage = homepage.replace('{{names}}', names_to_html()) # replace {{names}} with a list res.status(200).set('Content-Type', 'text/html').send( homepage ) # send it back as html def post_name(req, res): names.append(req.body['name']) # add the name to the list serve_homepage(req, res) # serve the homepage the same app = App() router = Router() # mount the endware router.get('/', serve_homepage) router.post('/', post_name) # mount the middleware app.use(router) app.use(log_incoming_request) # start the server app.listen(port=8080, callback=listening)
def test_put(self): router = Router() router.put('/', endware_1) router.put('/abc', endware_2) router.put('/abc/:val', endware_1) self.assertIsNotNone(router._endware_path_match('/', 'PUT')) self.assertIsNone(router._endware_path_match('/', 'POST')) self.assertIsNone(router._endware_path_match('/', 'GET')) self.assertIsNone(router._endware_path_match('/', 'DELETE')) self.assertIsNotNone(router._endware_path_match('/abc', 'PUT')) self.assertIsNotNone(router._endware_path_match('/abc/123', 'PUT')) self.assertEqual(router._endware_path_match('/', 'PUT')[2], endware_1) self.assertEqual( router._endware_path_match('/abc', 'PUT')[2], endware_2) self.assertEqual( router._endware_path_match('/abc/123', 'PUT')[2], endware_1) self.assertEqual( router._endware_path_match('/abc/123', 'PUT')[0].params['val'], '123') self.assertEqual( router._endware_path_match('/abc/123?val=123', 'PUT')[0].query['val'], '123')
def test_init(self): router = Router() self.assertIsNotNone(router)
def test_use(self): router = Router() router.use('/abc', middleware_1) router.use('/abc/123', middleware_2) self.assertIsNotNone(router._middleware_path_match('/abc')) self.assertIsNotNone(router._middleware_path_match('/abc/123')) self.assertIsNotNone(router._middleware_path_match('/abc/123/def')) self.assertEqual(len(router._middleware_path_match('/abc')), 1) self.assertEqual(len(router._middleware_path_match('/abc/123')), 2) self.assertEqual(len(router._middleware_path_match('/abc/123/def')), 2) self.assertEqual( router._middleware_path_match('/abc')[0][1], middleware_1) self.assertEqual( router._middleware_path_match('/abc/123')[0][1], middleware_1) self.assertEqual( router._middleware_path_match('/abc/123')[1][1], middleware_2) self.assertEqual( router._middleware_path_match('/abc?val=123')[0][0].query['val'], '123')