summaryrefslogblamecommitdiffhomepage
path: root/test/test_python_basic.py
blob: 155407b704b7c08eaf4aba133d04680e347fc8b4 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12




                                           






                                                                                
                               























































                                                                               
                                                                   

                                                  
                                                                  
                                                 

                                                                         
                                                                
                                                                           

                                            
                               


                               
                                















                                             
                                                                              












                                               
                                                                   
                                                 
                                                                       
 
                                                               


                                                 
                            

                                         
                            












                                                                     
                                  


                               
                                















                                                                 
                                                                   







                                                                   
import unit
import unittest

class TestUnitBasic(unit.TestUnitControl):

    @classmethod
    def setUpClass(cls):
        u = unit.TestUnit()
        module_missed = u.check_modules('python')
        if module_missed:
            raise unittest.SkipTest('Unit has no ' + module_missed + ' module')

    def test_python_get(self):
        resp = self.get()
        self.assertEqual(resp, {'listeners': {}, 'applications': {}}, 'empty')
        self.assertEqual(self.get('/listeners'), {}, 'empty listeners prefix')
        self.assertEqual(self.get('/applications'), {},
            'empty applications prefix')

        self.put('/applications', """
            {
                "app": {
                    "type": "python",
                    "workers": 1,
                    "path": "/app",
                    "module": "wsgi"
                }
            }
            """)

        resp = self.get()

        self.assertEqual(resp['listeners'], {}, 'python empty listeners')
        self.assertEqual(resp['applications'],
            {
                "app": {
                    "type": "python",
                    "workers": 1,
                    "path": "/app",
                    "module": "wsgi"
                }
             },
             'python applications')

        self.assertEqual(self.get('/applications'),
            {
                "app": {
                    "type": "python",
                    "workers": 1,
                    "path": "/app",
                    "module":"wsgi"
                }
            },
            'python applications prefix')

        self.assertEqual(self.get('/applications/app'),
            {
                "type": "python",
                "workers": 1,
                "path": "/app",
                "module": "wsgi"
            },
            'python applications prefix 2')

        self.assertEqual(self.get('/applications/app/type'), 'python',
            'python applications type')
        self.assertEqual(self.get('/applications/app/workers'), 1,
            'python applications workers')

        self.put('/listeners', '{"*:7080":{"application":"app"}}')

        self.assertEqual(self.get()['listeners'],
            {"*:7080":{"application":"app"}}, 'python listeners')
        self.assertEqual(self.get('/listeners'),
            {"*:7080":{"application":"app"}}, 'python listeners prefix')
        self.assertEqual(self.get('/listeners/*:7080'),
            {"application":"app"}, 'python listeners prefix 2')
        self.assertEqual(self.get('/listeners/*:7080/application'), 'app',
            'python listeners application')

    def test_python_put(self):
        self.put('/', """
            {
                "listeners": {
                    "*:7080": {
                        "application": "app"
                    }
                },
                "applications": {
                    "app": {
                        "type": "python",
                        "workers": 1,
                        "path": "/app",
                        "module": "wsgi"
                    }
                }
            }
            """)

        resp = self.get()

        self.assertEqual(resp['listeners'], {"*:7080":{"application":"app"}},
            'put listeners')

        self.assertEqual(resp['applications'],
            {
                "app": {
                    "type": "python",
                    "workers": 1,
                    "path": "/app",
                    "module": "wsgi"
                }
            },
            'put applications')

        self.put('/listeners', '{"*:7081":{"application":"app"}}')
        self.assertEqual(self.get('/listeners'),
            {"*:7081": {"application":"app"}}, 'put listeners prefix')

        self.put('/listeners/*:7082', '{"application":"app"}')

        self.assertEqual(self.get('/listeners'),
            {
                "*:7081": {
                    "application": "app"
                },
                "*:7082": {
                    "application": "app"
                }
            },
            'put listeners prefix 3')

        self.put('/applications/app/workers', '30')
        self.assertEqual(self.get('/applications/app/workers'), 30,
            'put applications workers')

        self.put('/applications/app/path', '"/www"')
        self.assertEqual(self.get('/applications/app/path'), '/www',
            'put applications path')

    def test_python_delete(self):
        self.put('/', """
            {
                "listeners": {
                    "*:7080": {
                        "application": "app"
                    }
                },
                "applications": {
                    "app": {
                        "type": "python",
                        "workers": 1,
                        "path": "/app",
                        "module": "wsgi"
                    }
                }
            }
            """)

        self.assertIn('error', self.delete('/applications/app'),
            'delete app before listener')
        self.assertIn('success', self.delete('/listeners/*:7080'),
            'delete listener')
        self.assertIn('success', self.delete('/applications/app'),
            'delete app after listener')
        self.assertIn('error', self.delete('/applications/app'),
            'delete app again')

if __name__ == '__main__':
    unittest.main()