%s'''
- def __init__(self, database, parent):
+ def __init__(self, database, parent=None):
super(FreeswitchConfigServer, self).__init__(parent)
self.host = None
self.connection_id = None
self.is_running = False
self.generators = [
- GenClass(database, self) for GenClass in (
+ GenClass(database) for GenClass in (
SofiaConfGenerator,)]
self.httpRequestParser = HttpRequestParser()
self.port = port
if connection_id:
self.connection_id = connection_id
+ for generator in self.generators:
+ generator.connection_id = connection_id
# Restart server if necessary.
if needs_restart:
param_match = {}
- def __init__(self, database, parent):
+ def __init__(self, database=None, connection_id=None):
self.database = database
- self.parent = parent
-
-# def database(self):
-# """
-# Return database instance.
-# """
-# return self.model.controllers['connection'].model.database()
+ self.connection_id = connection_id
def canHandle(self, params):
"""
"""
Create params element based on data passed in a list.
"""
+ # Create params element.
+ params_elt = etree.SubElement(parent_elt, 'params')
+
+ # Add param elements to params element.
for name, value in params:
etree.SubElement(
- parent_elt, 'param', name=name, value=str(value))
+ params_elt, 'param', name=name, value=str(value))
+
+ return parent_elt
class SofiaConfGenerator(FreeswitchConfigGenerator):
import unittest
from ipypbx import http
from ipypbx.tests import support
+from xml.etree import ElementTree as etree
class TestHttpRequestParser(unittest.TestCase):
self.request.handle(line)
def test_handle_body(self):
+ """
+ HttpRequestParse.handleBody should parse variables from POST request.
+ """
self._run_lines(
'POST / HTTP/1.1',
'',
self.assertEqual(self.request.data, {'foo': 'bar', 'qwe': 'asd'})
def test_handle_body_with_missing_values(self):
+ """
+ Missing values should give empty results.
+ """
self._run_lines(
'POST / HTTP/1.1',
'',
'foo=bar&qwe=')
self.assertEqual(self.request.data, {'foo': 'bar', 'qwe': ''})
-
def test_non_post_fails(self):
+ """
+ We expect only POST requests from Freeswitch, for anything else we
+ get an error.
+ """
self.request.handle('GET / HTTP/1.1')
self.request.handle('')
self.assertRaises(
'Only post requests work')
-class TestFreeswitchConfigGenerator(support.InitDatabase, unittest.TestCase):
- def test_foo(self):
- print self.db
+class TestFreeswitchConfigGenerator(unittest.TestCase):
+ def setUp(self):
+ self.generator = http.FreeswitchConfigGenerator()
+
+ def test_can_handle(self):
+ self.generator.param_match = {'foo': 'bar'}
+ self.assertEqual(self.generator.canHandle({'foo': 'bar'}), True)
+ self.assertEqual(self.generator.canHandle({'foo': 'xxx'}), False)
+ self.assertEqual(self.generator.canHandle({'xxx': 'bar'}), False)
+ self.assertEqual(
+ self.generator.canHandle({'foo': 'bar', 'qwe': 'asd'}), True)
+ self.assertEqual(self.generator.canHandle({'qwe': 'asd'}), False)
+
+ self.generator.param_match = {'foo': 'bar', 'baz': '123'}
+ self.assertEqual(self.generator.canHandle({'foo': 'bar'}), False)
+ self.assertEqual(
+ self.generator.canHandle({'foo': 'bar', 'baz': '123'}), True)
+ self.assertEqual(
+ self.generator.canHandle({'foo': 'bar', 'qwe': 'asd'}), False)
+
+ def test_base_elements(self):
+ self.generator.param_match = {'section': 'foo'}
+ root_elt, section_elt = self.generator.baseElements
+ self.assertEqual(
+ etree.tostring(root_elt),
+ '<document type="freeswitch/xml"><section name="foo" />'
+ '</document>')
+ self.assertEqual(
+ etree.tostring(section_elt), '<section name="foo" />')
+
+ def test_add_params(self):
+ foo_elt = etree.Element('foo')
+ self.assertEqual(
+ etree.tostring(self.generator.addParams(foo_elt, (('qwe', 'asd'),))),
+ '<foo><params><param name="qwe" value="asd" /></params></foo>')
+
+
+ bar_elt = etree.Element('bar')
+ self.assertEqual(
+ etree.tostring(
+ self.generator.addParams(bar_elt,
+ (('qwe', 'asd'), ('zxc', '123')))),
+ '<bar><params><param name="qwe" value="asd" />'
+ '<param name="zxc" value="123" /></params></bar>')