[X2Go-Commits] [x2gobroker] 01/01: improvements for last commit, add unittests for the uppercase desktop session cmd checks

git-admin at x2go.org git-admin at x2go.org
Tue May 19 09:58:52 CEST 2015


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository x2gobroker.

commit 9fcb404070c352dd34f09f5e078c8970c3b236b8
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date:   Tue May 19 09:58:43 2015 +0200

    improvements for last commit, add unittests for the uppercase desktop session cmd checks
---
 x2gobroker/brokers/base_broker.py          |    3 ++
 x2gobroker/brokers/zeroconf_broker.py      |    2 +-
 x2gobroker/tests/test_broker_inifile.py    |   21 ++++++++++++++
 x2gobroker/tests/test_broker_zeroconf.py   |   18 ++++++++++++
 x2gobroker/tests/test_web_uccs_zeroconf.py |   42 ++++++++++++++++++++++++++++
 x2gobroker/web/uccs.py                     |    5 +++-
 6 files changed, 89 insertions(+), 2 deletions(-)

diff --git a/x2gobroker/brokers/base_broker.py b/x2gobroker/brokers/base_broker.py
index a618c24..6c16a34 100644
--- a/x2gobroker/brokers/base_broker.py
+++ b/x2gobroker/brokers/base_broker.py
@@ -1249,8 +1249,11 @@ class X2GoBroker(object):
                 profile['key'] = u'<will-be-exchanged-during-session-selection>'
 
             # make sure that desktop sessions (that we know by name) do run with rootless=false
+            # and that the command string is always upper case (otherwise x2goruncommand might
+            # stumble over it...)
             if profile['command'].upper() in x2gobroker.defaults.X2GO_DESKTOP_SESSIONS:
                 profile['rootless'] = False
+                profile['command'] = profile['command'].upper()
 
             remote_agent = self.get_remote_agent(profile_id)
             if self.check_for_sessions(profile_id):
diff --git a/x2gobroker/brokers/zeroconf_broker.py b/x2gobroker/brokers/zeroconf_broker.py
index a71fca9..b2179ab 100644
--- a/x2gobroker/brokers/zeroconf_broker.py
+++ b/x2gobroker/brokers/zeroconf_broker.py
@@ -66,7 +66,7 @@ class X2GoBroker(base.X2GoBroker):
                 u'name': u'LOCALHOST',
                 u'iconvto': u'UTF-8',
                 u'soundtunnel': True,
-                u'command': self.get_backend_value('broker_{backend}'.format(backend=self.backend_name), u'desktop-shell'),
+                u'command': self.get_backend_value('broker_{backend}'.format(backend=self.backend_name), u'desktop-shell').upper(),
                 u'dpi': 96,
                 u'sshport': 22,
                 u'setdpi': 0,
diff --git a/x2gobroker/tests/test_broker_inifile.py b/x2gobroker/tests/test_broker_inifile.py
index 6cdff67..7f08129 100644
--- a/x2gobroker/tests/test_broker_inifile.py
+++ b/x2gobroker/tests/test_broker_inifile.py
@@ -132,6 +132,10 @@ fullscreen = true
 acl-users-deny = ALL
 acl-users-allow = foo,bar
 acl-users-order = deny-allow
+
+[testprofile4]
+user = bar
+command = gnomE
 """
         tf = tempfile.NamedTemporaryFile()
         print >> tf, _session_profiles
@@ -165,6 +169,11 @@ acl-users-order = deny-allow
             u'command': 'KDE',
             u'fullscreen': True,
         })
+        _expected_profile4 = copy.deepcopy(_expected_defaults)
+        _expected_profile4.update({
+            u'user': 'bar',
+            u'command': 'gnomE', # mixture of lower and uppercase in get_profile()
+        })
         _profile1 = inifile_backend.get_profile('testprofile1')
         for key in _expected_profile1.keys():
             self.assertTrue( ( key in _profile1.keys() ) )
@@ -183,6 +192,12 @@ acl-users-order = deny-allow
         for key in _profile3.keys():
             self.assertTrue( ( key in _expected_profile3.keys() ) and ( _profile3[key] == _expected_profile3[key] ) )
 
+        _profile4 = inifile_backend.get_profile('testprofile4')
+        for key in _expected_profile4.keys():
+            self.assertTrue( ( key in _profile4.keys() ) )
+        for key in _profile4.keys():
+            self.assertTrue( ( key in _expected_profile4.keys() ) and ( _profile4[key] == _expected_profile4[key] ) )
+
     ### TEST SESSION PROFILES: get_profile_acls(profile_id)
 
     def test_getprofileacls(self):
@@ -308,6 +323,10 @@ command = XFCE
 user =
 command = KDE
 rootless = false
+
+[testprofile4]
+user =
+command = gnomE
 """
         tf = tempfile.NamedTemporaryFile()
         print >> tf, _session_profiles
@@ -320,6 +339,8 @@ rootless = false
         self.assertEqual(profiles['testprofile2']['rootless'], False)
         self.assertEqual(profiles['testprofile3']['command'], 'KDE')
         self.assertEqual(profiles['testprofile3']['rootless'], False)
+        self.assertEqual(profiles['testprofile4']['command'], 'GNOME') # uppercase!
+        self.assertEqual(profiles['testprofile4']['rootless'], False)
 
     ### TEST: list_profiles() method check acl capability
 
diff --git a/x2gobroker/tests/test_broker_zeroconf.py b/x2gobroker/tests/test_broker_zeroconf.py
index bbdfc34..3ca4934 100644
--- a/x2gobroker/tests/test_broker_zeroconf.py
+++ b/x2gobroker/tests/test_broker_zeroconf.py
@@ -18,6 +18,8 @@
 # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 
 import unittest
+import copy
+import tempfile
 
 # Python X2GoBroker modules
 import x2gobroker.brokers.zeroconf_broker
@@ -82,6 +84,22 @@ class TestX2GoBrokerBackendZeroconf(unittest.TestCase):
 
     ### TEST: select_profile() method
 
+    def test_desktopshell_uppercase(self):
+        _config_defaults = copy.deepcopy(x2gobroker.defaults.X2GOBROKER_CONFIG_DEFAULTS)
+        _config = """
+[broker_zeroconf]
+enable = true
+desktop-shell = kDe
+"""
+        tf = tempfile.NamedTemporaryFile()
+        print >> tf, _config
+        tf.seek(0)
+        zeroconf_backend = x2gobroker.brokers.zeroconf_broker.X2GoBroker(config_file=tf.name, config_defaults=_config_defaults)
+        _profiles = zeroconf_backend.list_profiles('user_foo')
+        self.assertEqual(len(_profiles.keys()), 1)
+        _key = _profiles.keys()[0]
+        self.assertEqual(_profiles[_key]['command'], 'KDE')
+
     def test_sessionselection(self):
         _output = {
             'server': 'localhost',
diff --git a/x2gobroker/tests/test_web_uccs_zeroconf.py b/x2gobroker/tests/test_web_uccs_zeroconf.py
index 5492ef7..23783d2 100644
--- a/x2gobroker/tests/test_web_uccs_zeroconf.py
+++ b/x2gobroker/tests/test_web_uccs_zeroconf.py
@@ -87,6 +87,48 @@ desktop-shell = KDE
         self.assertEqual(_expected_result, result)
         tf.close()
 
+    def test_listsessions_uppercase_desktopcommands(self):
+        _expected_result = {
+            u'URL': u'http://localhost:8080/uccs/zeroconf',
+            u'AdditionalManagementServers': [],
+            u'Name': u'X2Go Session Broker',
+            u'DefaultServer': u'LOCALHOST',
+            u'RemoteDesktopServers': [
+                {
+                    u'Username': u'',
+                    u'Protocol': u'x2go',
+                    u'Name': u'LOCALHOST',
+                    u'URL': u'http://localhost:22/',
+                    u'SessionType': u'KDE',
+                    u'SessionTypeRequired': True,
+                    u'Password': u'',
+                },
+            ],
+            u'URL': u'http://localhost:8080/uccs/zeroconf/',
+        }
+        _config = """
+[global]
+enable-uccs-output=true
+check-credentials=false
+
+[zeroconf]
+enable = true
+auth-mech = testsuite
+desktop-shell = kdE
+"""
+        tf = tempfile.NamedTemporaryFile()
+        print >> tf, _config
+        tf.seek(0)
+        x2gobroker.defaults.X2GOBROKER_CONFIG = tf.name
+        testApp = TestApp(application)
+
+        r = testApp.get('/uccs/zeroconf/api/4', headers=headers, expect_errors=True)
+        assert_equal(r.status, 200)
+        body = r.normal_body
+        result = json.loads(body)
+        self.assertEqual(_expected_result, result)
+        tf.close()
+
 
 def test_suite():
     from unittest import TestSuite#, makeSuite
diff --git a/x2gobroker/web/uccs.py b/x2gobroker/web/uccs.py
index 1b228c5..c1ab032 100644
--- a/x2gobroker/web/uccs.py
+++ b/x2gobroker/web/uccs.py
@@ -171,7 +171,10 @@ class X2GoBrokerWebAPI(tornado.web.RequestHandler):
                         name=profile[u'name'],
                         username=profile[u'user'],
                 )
-                ts.set_session_type(profile['command'])
+                _cmd = profile['command']
+                if _cmd.upper() in x2gobroker.defaults.X2GO_DESKTOP_SESSIONS:
+                    _cmd = _cmd.upper()
+                ts.set_session_type(_cmd)
             ms.add_terminalserver(ts)
             ms.set_default(ts.Name)
 

--
Alioth's /srv/git/code.x2go.org/x2gobroker.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2gobroker.git


More information about the x2go-commits mailing list