HTTP: New RPC CORS tests and fixed existing.
This commit is contained in:
parent
ecb5a7038a
commit
1b863b417b
@ -20,6 +20,7 @@ class HttpServerTest(tornado.testing.AsyncHTTPTestCase):
|
|||||||
'port': 6680,
|
'port': 6680,
|
||||||
'static_dir': None,
|
'static_dir': None,
|
||||||
'zeroconf': '',
|
'zeroconf': '',
|
||||||
|
'allowed_origins': [],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,7 +129,8 @@ class MopidyRPCHandlerTest(HttpServerTest):
|
|||||||
def test_should_return_rpc_error(self):
|
def test_should_return_rpc_error(self):
|
||||||
cmd = tornado.escape.json_encode({'action': 'get_version'})
|
cmd = tornado.escape.json_encode({'action': 'get_version'})
|
||||||
|
|
||||||
response = self.fetch('/mopidy/rpc', method='POST', body=cmd)
|
response = self.fetch('/mopidy/rpc', method='POST', body=cmd, headers={
|
||||||
|
'Content-Type': 'application/json'})
|
||||||
|
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
{'jsonrpc': '2.0', 'id': None, 'error':
|
{'jsonrpc': '2.0', 'id': None, 'error':
|
||||||
@ -139,7 +141,8 @@ class MopidyRPCHandlerTest(HttpServerTest):
|
|||||||
def test_should_return_parse_error(self):
|
def test_should_return_parse_error(self):
|
||||||
cmd = '{[[[]}'
|
cmd = '{[[[]}'
|
||||||
|
|
||||||
response = self.fetch('/mopidy/rpc', method='POST', body=cmd)
|
response = self.fetch('/mopidy/rpc', method='POST', body=cmd, headers={
|
||||||
|
'Content-Type': 'application/json'})
|
||||||
|
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
{'jsonrpc': '2.0', 'id': None, 'error':
|
{'jsonrpc': '2.0', 'id': None, 'error':
|
||||||
@ -154,7 +157,8 @@ class MopidyRPCHandlerTest(HttpServerTest):
|
|||||||
'id': 1,
|
'id': 1,
|
||||||
})
|
})
|
||||||
|
|
||||||
response = self.fetch('/mopidy/rpc', method='POST', body=cmd)
|
response = self.fetch('/mopidy/rpc', method='POST', body=cmd, headers={
|
||||||
|
'Content-Type': 'application/json'})
|
||||||
|
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
{'jsonrpc': '2.0', 'id': 1, 'result': mopidy.__version__},
|
{'jsonrpc': '2.0', 'id': 1, 'result': mopidy.__version__},
|
||||||
@ -168,6 +172,38 @@ class MopidyRPCHandlerTest(HttpServerTest):
|
|||||||
self.assertIn('Cache-Control', response.headers)
|
self.assertIn('Cache-Control', response.headers)
|
||||||
self.assertIn('Content-Type', response.headers)
|
self.assertIn('Content-Type', response.headers)
|
||||||
|
|
||||||
|
def test_should_require_correct_content_type(self):
|
||||||
|
cmd = tornado.escape.json_encode({
|
||||||
|
'method': 'core.get_version',
|
||||||
|
'params': [],
|
||||||
|
'jsonrpc': '2.0',
|
||||||
|
'id': 1,
|
||||||
|
})
|
||||||
|
|
||||||
|
response = self.fetch('/mopidy/rpc', method='POST', body=cmd, headers={
|
||||||
|
'Content-Type': 'text/plain'})
|
||||||
|
|
||||||
|
self.assertEqual(response.code, 415)
|
||||||
|
self.assertEqual(
|
||||||
|
response.reason, 'Content-Type must be application/json')
|
||||||
|
|
||||||
|
def test_different_origin_returns_access_denied(self):
|
||||||
|
response = self.fetch('/mopidy/rpc', method='OPTIONS', headers={
|
||||||
|
'Host': 'me:6680', 'Origin': 'http://evil:666'})
|
||||||
|
|
||||||
|
self.assertEqual(response.code, 403)
|
||||||
|
self.assertEqual(
|
||||||
|
response.reason, 'Access denied for origin http://evil:666')
|
||||||
|
|
||||||
|
def test_same_origin_returns_cors_headers(self):
|
||||||
|
response = self.fetch('/mopidy/rpc', method='OPTIONS', headers={
|
||||||
|
'Host': 'me:6680', 'Origin': 'http://me:6680'})
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
response.headers['Access-Control-Allow-Origin'], 'http://me:6680')
|
||||||
|
self.assertEqual(
|
||||||
|
response.headers['Access-Control-Allow-Headers'], 'Content-Type')
|
||||||
|
|
||||||
|
|
||||||
class HttpServerWithStaticFilesTest(tornado.testing.AsyncHTTPTestCase):
|
class HttpServerWithStaticFilesTest(tornado.testing.AsyncHTTPTestCase):
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user