import unittest
import unit
class TestUnitConfiguration(unit.TestUnitControl):
def setUpClass():
unit.TestUnit().check_modules('python')
def test_json_leading_zero(self):
self.assertIn('error', self.put('/', '00'), 'leading zero')
def test_json_unicode(self):
self.assertIn('success', self.put('/applications', b"""
{
"ap\u0070": {
"type": "\u0070ython",
"workers": 1,
"path": "\u002Fapp",
"module": "wsgi"
}
}
"""), 'unicode')
def test_json_unicode_2(self):
self.assertIn('success', self.put('/applications', """
{
"приложение": {
"type": "python",
"workers": 1,
"path": "/app",
"module": "wsgi"
}
}
"""), 'unicode 2')
def test_json_unicode_number(self):
self.assertIn('error', self.put('/applications', b"""
{
"app": {
"type": "python",
"workers": \u0031,
"path": "/app",
"module": "wsgi"
}
}
"""), 'unicode number')
def test_applications_open_brace(self):
self.assertIn('error', self.put('/applications', '{'), 'open brace')
def test_applications_string(self):
self.assertIn('error', self.put('/applications', '"{}"'), 'string')
@unittest.expectedFailure
def test_negative_workers(self):
self.assertIn('error', self.put('/applications', """
{
"app": {
"type": "python",
"workers": -1,
"path": "/app",
"module": "wsgi"
}
}
"""), 'negative workers')
@unittest.expectedFailure
def test_applications_type_only(self):
self.assertIn('error', self.put('/applications', """
{
"app": {
"type": "python"
}
}
"""), 'type only')
def test_applications_miss_quote(self):
self.assertIn('error', self.put('/applications', """
{
app": {
"type": "python",
"workers": 1,
"path": "/app",
"module": "wsgi"
}
}
"""), 'miss quote')
def test_applications_miss_colon(self):
self.assertIn('error', self.put('/applications', """
{
"app" {
"type": "python",
"workers": 1,
"path": "/app",
"module": "wsgi"
}
}
"""), 'miss colon')
def test_applications_miss_comma(self):
self.assertIn('error', self.put('/applications', """
{
"app": {
"type": "python"
"workers": 1,
"path": "/app",
"module": "wsgi"
}
}
"""), 'miss comma')
def test_applications_skip_spaces(self):
self.assertIn('success', self.put('/applications', b'{ \n\r\t}'),
'skip spaces')
def test_applications_relative_path(self):
self.assertIn('success', self.put('/applications', """
{
"app": {
"type": "python",
"workers": 1,
"path": "../app",
"module": "wsgi"
}
}
"""), 'relative path')
@unittest.expectedFailure
def test_listeners_empty(self):
self.assertIn('error', self.put('/listeners', '{"*:7080":{}}'),
'listener empty')
def test_listeners_no_app(self):
self.assertIn('error', self.put('/listeners',
'{"*:7080":{"application":"app"}}'), 'listeners no app')
def test_listeners_wildcard(self):
self.assertIn('success', self.put('/', """
{
"listeners": {
"*:7080": {
"application":"app"
}
},
"applications": {
"app": {
"type": "python",
"workers": 1,
"path": "/app",
"module": "wsgi"
}
}
}
"""), 'listeners wildcard')
def test_listeners_explicit(self):
self.assertIn('success', self.put('/', """
{
"listeners": {
"127.0.0.1:7080": {
"application":"app"
}
},
"applications": {
"app": {
"type": "python",
"workers": 1,
"path": "/app",
"module": "wsgi"
}
}
}
"""), 'explicit')
def test_listeners_explicit_ipv6(self):
self.assertIn('success', self.put('/', """
{
"listeners": {
"[::1]:7080": {
"application":"app"
}
},
"applications": {
"app": {
"type": "python",
"workers": 1,
"path": "/app",
"module": "wsgi"
}
}
}
"""), 'explicit ipv6')
def test_listeners_no_port(self):
self.assertIn('error', self.put('/', """
{
"listeners": {
"127.0.0.1": {
"application":"app"
}
},
"applications": {
"app": {
"type": "python",
"workers": 1,
"path": "/app",
"module": "wsgi"
}
}
}
"""), 'no port')
if __name__ == '__main__':
unittest.main()