Commit afe5abba authored by Ghislain MARY's avatar Ghislain MARY
Browse files

Add some Python setup tests.

parent 98d1d15b
......@@ -2125,7 +2125,7 @@ void linphone_core_set_use_rfc2833_for_dtmf(LinphoneCore *lc,bool_t use_rfc2833)
/**
* Returns the UDP port used by SIP.
*
* Deprecated: use linphone_core_get_sip_transports() instead.
* @deprecated use linphone_core_get_sip_transports() instead.
* @ingroup network_parameters
**/
int linphone_core_get_sip_port(LinphoneCore *lc){
......@@ -2293,7 +2293,7 @@ void linphone_core_get_sip_transports_used(LinphoneCore *lc, LCSipTransports *tr
/**
* Sets the UDP port to be used by SIP.
*
* Deprecated: use linphone_core_set_sip_transports() instead.
* @deprecated use linphone_core_set_sip_transports() instead.
* @ingroup network_parameters
**/
void linphone_core_set_sip_port(LinphoneCore *lc,int port)
......
......@@ -74,6 +74,8 @@ hand_written_functions = [
HandWrittenClassMethod('Buffer', 'new_from_data', 'linphone_buffer_new_from_data', "Create a new LinphoneBuffer object from existing data.\n\n:param data: The initial data to store in the LinphoneBuffer.\n:type data: ByteArray\n:returns: A new LinphoneBuffer object.\n:rtype: linphone.Buffer"),
HandWrittenProperty('Buffer', 'content', 'linphone_buffer_get_content', 'linphone_buffer_set_content', "[ByteArray] Set the content of the data buffer."),
HandWrittenProperty('Content', 'buffer', 'linphone_content_get_buffer', 'linphone_content_set_buffer', "[ByteArray] Set the content data buffer."),
HandWrittenProperty('Core', 'sip_transports', 'linphone_core_get_sip_transports', 'linphone_core_set_sip_transports', "[:py:class:`linphone.SipTransports`] Sets the ports to be used for each transport. A zero value port for a given transport means the transport is not used. A value of LC_SIP_TRANSPORT_RANDOM (-1) means the port is to be chosen randomly by the system."),
HandWrittenProperty('Core', 'sip_transports_used', 'linphone_core_get_sip_transports_used', None, "[:py:class:`linphone.SipTransports`] Retrieves the real port number assigned for each sip transport (udp, tcp, tls). A zero value means that the transport is not activated. If LC_SIP_TRANSPORT_RANDOM was passed to :py:attr:`linphone.Core.sip_transports`, the random port choosed by the system is returned."),
HandWrittenProperty('Core', 'sound_devices', 'linphone_core_get_sound_devices', None, "[list of string] Get the available sound devices."),
HandWrittenProperty('Core', 'video_devices', 'linphone_core_get_video_devices', None, "[list of string] Get the available video capture devices."),
HandWrittenClassMethod('Core', 'new', 'linphone_core_new', "Instantiate a LinphoneCore object.\n\n:param vtable: The callbacks.\n:type vtable: dictionary\n:param configPath: A path to a config file. If it does not exists it will be created. The config file is used to store all settings, call logs, friends, proxies... so that all these settings become persistent over the life of the LinphoneCore object. It is allowed to set to None. In that case LinphoneCore will not store any settings.\n:type configPath: string\n:param factoryConfigPath: A path to a read-only config file that can be used to store hard-coded preference such as proxy settings or internal preferences. The settings in this factory file always override the one in the normal config file. It is OPTIONAL, use None if unneeded.\n:type factoryConfigPath: string\n:rtype: linphone.Core"),
......
static PyObject * pylinphone_Core_get_sip_transports(PyObject *self, void *closure);
static int pylinphone_Core_set_sip_transports(PyObject *self, PyObject *value, void *closure);
static PyObject * pylinphone_Core_get_sip_transports_used(PyObject *self, void *closure);
static PyObject * pylinphone_Core_get_sound_devices(PyObject *self, void *closure);
static PyObject * pylinphone_Core_get_video_devices(PyObject *self, void *closure);
......
......@@ -128,6 +128,75 @@ static PyObject * pylinphone_module_method_set_log_handler(PyObject *self, PyObj
}
static PyObject * pylinphone_Core_get_sip_transports(PyObject *self, void *closure) {
PyObject *pytr;
LCSipTransports tr = { 0 };
LinphoneCore *native_ptr = pylinphone_Core_get_native_ptr(self);
if (native_ptr == NULL) {
PyErr_SetString(PyExc_TypeError, "Invalid linphone.Core instance");
return NULL;
}
pylinphone_trace(1, "[PYLINPHONE] >>> %s(%p [%p])", __FUNCTION__, self, native_ptr);
linphone_core_get_sip_transports(native_ptr, &tr);
pylinphone_dispatch_messages();
pytr = PyLinphoneSipTransports_FromLCSipTransports(tr);
pylinphone_trace(-1, "[PYLINPHONE] <<< %s -> %p", __FUNCTION__, pytr);
return pytr;
}
static int pylinphone_Core_set_sip_transports(PyObject *self, PyObject *value, void *closure) {
LinphoneCore *native_ptr;
PyObject * _tr_config;
const LCSipTransports * _tr_config_native_obj;
native_ptr = pylinphone_Core_get_native_ptr(self);
if (native_ptr == NULL) {
PyErr_SetString(PyExc_TypeError, "Invalid linphone.Core instance");
return -1;
}
if (value == NULL) {
PyErr_SetString(PyExc_TypeError, "Cannot delete the 'sip_transports' attribute.");
return -1;
}
if (!PyLinphoneSipTransports_Check(value)) {
PyErr_SetString(PyExc_TypeError, "The 'sip_transports' attribute value must be a linphone.SipTransports.");
return -1;
}
_tr_config = value;
_tr_config_native_obj = PyLinphoneSipTransports_AsLCSipTransports(value);
pylinphone_trace(1, "[PYLINPHONE] >>> %s(%p [%p], %p [%p])", __FUNCTION__, self, native_ptr, _tr_config, _tr_config_native_obj);
linphone_core_set_sip_transports(native_ptr, _tr_config_native_obj);
pylinphone_dispatch_messages();
pylinphone_trace(-1, "[PYLINPHONE] <<< %s -> 0", __FUNCTION__);
return 0;
}
static PyObject * pylinphone_Core_get_sip_transports_used(PyObject *self, void *closure) {
PyObject *pytr;
LCSipTransports tr = { 0 };
LinphoneCore *native_ptr = pylinphone_Core_get_native_ptr(self);
if (native_ptr == NULL) {
PyErr_SetString(PyExc_TypeError, "Invalid linphone.Core instance");
return NULL;
}
pylinphone_trace(1, "[PYLINPHONE] >>> %s(%p [%p])", __FUNCTION__, self, native_ptr);
linphone_core_get_sip_transports_used(native_ptr, &tr);
pylinphone_dispatch_messages();
pytr = PyLinphoneSipTransports_FromLCSipTransports(tr);
pylinphone_trace(-1, "[PYLINPHONE] <<< %s -> %p", __FUNCTION__, pytr);
return pytr;
}
static PyObject * pylinphone_Core_get_sound_devices(PyObject *self, void *closure) {
PyObject *_list;
const char **_devices;
......
......@@ -5,6 +5,13 @@ import os
class TestSetup:
def test_address(self):
create_address(None)
def test_version(self):
lc = linphone.Core.new({}, None, None)
assert_equals(lc.version.find("unknown"), -1)
def test_address(self):
create_address(None)
......@@ -14,6 +21,23 @@ class TestSetup:
if lc is not None:
lc.verify_server_certificates(False)
def test_random_transport(self):
lc = linphone.Core.new({}, None, None)
assert lc is not None
tr = lc.sip_transports
assert_equals(tr.udp_port, 5060) # default config
assert_equals(tr.tcp_port, 5060) # default config
tr.udp_port = -1
tr.tcp_port = -1
tr.tls_port = -1
lc.sip_transports = tr
tr = lc.sip_transports
assert tr.udp_port != 5060 # default config
assert tr.tcp_port != 5060 # default config
assert_equals(lc.config.get_int('sip', 'sip_port', -2), -1)
assert_equals(lc.config.get_int('sip', 'sip_tcp_port', -2), -1)
assert_equals(lc.config.get_int('sip', 'sip_tls_port', -2), -1)
def test_interpret_url(self):
lc = linphone.Core.new({}, None, None)
assert lc is not None
......@@ -32,6 +56,22 @@ class TestSetup:
conf = linphone.LpConfig.new_from_buffer(buffer_linebreaks)
assert_equals(conf.get_string("buffer_linebreaks", "test", ""), "ok")
def test_lpconfig_zerolen_value_from_buffer(self):
zerolen = "[test]\nzero_len=\nnon_zero_len=test"
conf = linphone.LpConfig.new_from_buffer(zerolen)
assert_equals(conf.get_string("test", "zero_len", "LOL"), "LOL")
assert_equals(conf.get_string("test", "non_zero_len", ""), "test")
conf.set_string("test", "non_zero_len", "") # should remove "non_zero_len"
assert_equals(conf.get_string("test", "non_zero_len", "LOL"), "LOL")
def test_lpconfig_zerolen_value_from_file(self):
conf = linphone.LpConfig.new_with_factory(None, os.path.join(tester_resources_path, 'rcfiles', 'zero_length_params_rc'))
assert_equals(conf.get_string("test", "zero_len", "LOL"), "LOL")
# non_zero_len=test -> should return test
assert_equals(conf.get_string("test", "non_zero_len", ""), "test")
conf.set_string("test", "non_zero_len", "") # should remove "non_zero_len"
assert_equals(conf.get_string("test", "non_zero_len", "LOL"), "LOL")
def test_create_chat_room(self):
lc = linphone.Core.new({}, None, None)
assert lc is not None
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment