unit/test/test_configuration.py

137 lines
4.4 KiB
Python
Raw Normal View History

2017-11-21 17:51:21 +00:00
import unit
import unittest
class TestUnitConfiguration(unit.TestUnitControl):
def test_json_applications(self):
self.assertIn('error', self.put('/applications', '"{}"'),
'applications string')
self.assertIn('error', self.put('/applications', '{'),
'applications miss brace')
self.assertIn('error', self.put('/applications', """
{
app": {
"type": "python",
"workers": 1,
"path": "/app",
"module": "wsgi"
}
}
"""), 'applications miss quote')
self.assertIn('error', self.put('/applications', """
{
"app" {
"type": "python",
"workers": 1,
"path": "/app",
"module": "wsgi"
}
}
"""), 'applications miss colon')
self.assertIn('error', self.put('/applications', """
{
"app": {
"type": "python"
"workers": 1,
"path": "/app",
"module": "wsgi"
}
}
"""), 'applications miss comma')
self.assertIn('success', self.put('/applications', b'{ \n\r\t}'),
'skip space')
self.assertIn('success', self.put('/applications', """
{
"app": {
"type": "python",
"workers": 1,
"path": "../app",
"module": "wsgi"
}
}
"""), 'relative path')
self.assertIn('success', self.put('/applications', b"""
{
"ap\u0070": {
"type": "\u0070ython",
"workers": 1,
"path": "\u002Fapp",
"module": "wsgi"
}
}
"""), 'unicode')
self.assertIn('success', self.put('/applications', """
{
"приложение": {
"type": "python",
"workers": 1,
"path": "/app",
"module": "wsgi"
}
}
"""), 'unicode 2')
self.assertIn('error', self.put('/applications', b"""
{
"app": {
"type": "python",
"workers": \u0031,
"path": "/app",
"module": "wsgi"
}
}
"""), 'unicode number')
def test_json_listeners(self):
self.assertIn('error', self.put('/listeners',
2017-12-06 12:34:58 +00:00
'{"*:7080":{"application":"app"}}'), 'listeners no app')
2017-11-21 17:51:21 +00:00
self.put('/applications', """
{
"app": {
"type": "python",
"workers": 1,
"path": "/app",
"module": "wsgi"
}
}
""")
self.assertIn('success', self.put('/listeners',
2017-12-06 12:34:58 +00:00
'{"*:7080":{"application":"app"}}'), 'listeners wildcard')
2017-11-21 17:51:21 +00:00
self.assertIn('success', self.put('/listeners',
2017-12-06 12:34:58 +00:00
'{"127.0.0.1:7081":{"application":"app"}}'), 'listeners explicit')
2017-11-21 17:51:21 +00:00
self.assertIn('success', self.put('/listeners',
2017-12-06 12:34:58 +00:00
'{"[::1]:7082":{"application":"app"}}'), 'listeners explicit ipv6')
2017-11-21 17:51:21 +00:00
self.assertIn('error', self.put('/listeners',
'{"127.0.0.1":{"application":"app"}}'), 'listeners no port')
@unittest.skip("TODO")
def test_broken(self):
self.assertIn('error', self.put('/', '00'), 'leading zero')
2017-12-06 12:34:58 +00:00
self.assertIn('error', self.put('/listeners', '{"*:7080":{}}'),
2017-11-21 17:51:21 +00:00
'listener empty')
self.assertIn('error', self.put('/applications', '"type":"python"'),
'application type only')
self.assertIn('error', self.put('/applications', """
{
"app": {
"type": "python",
"workers": 1,
"path": "/app",
"module": "wsgi"
}
}
"""), 'negative workers')
if __name__ == '__main__':
unittest.main()