diff --git a/ChangeLog b/ChangeLog index 5c01d3c85..95a765a44 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2011-04-01 Wolfgang Sourdeau + * Tests/Integration/all.py: (from Jean Raby) make use of the + "SOGoLanguage" defaults key rather than the old "Language" one. + + * Tests/Integration/sogoLogin.py: (from Jean Raby) new + authentication module, required to the new session-based code. + + * Tests/Integration/preferences.py: (from Jean Raby) derive + authentication cookie from the new sogoLogin module. + * UI/WebServerResources/SchedulerUI.js (initCalendars): initialize "showCompletedTaskls" to 0 when the ShowCompletedTasks settings variable is not available. diff --git a/Tests/Integration/all.py b/Tests/Integration/all.py index 46dd7bcc5..cb818980b 100755 --- a/Tests/Integration/all.py +++ b/Tests/Integration/all.py @@ -12,10 +12,8 @@ if __name__ == "__main__": loader = unittest.TestLoader() modules = [] - # Duplicated from UIxPreferences.m - languages = ["Czech", "Dutch", "English", "French", - "German", "Hungarian", "Italian", "BrazilianPortuguese", "Norwegian", - "Polish", "Russian", "Spanish", "Swedish", "Ukrainian", "Welsh"] + + languages = preferences.SOGoSupportedLanguages # We can disable testing all languages testLanguages = False @@ -39,15 +37,15 @@ if __name__ == "__main__": if testLanguages: prefs = preferences.preferences() # Get the current language - userLanguageString = prefs.get ("Language") + userLanguageString = prefs.get ("SOGoLanguage") if userLanguageString: userLanguage = languages.index (userLanguageString) else: - userLanguage = 2 + userLanguage = languages.index ("English") for i in range (0, len (languages)): try: - prefs.set ("language", i) + prefs.set ("SOGoLanguage", i) except Exception, inst: print '-' * 60 traceback.print_exc () @@ -58,7 +56,7 @@ if __name__ == "__main__": runner.verbosity = 2 runner.run(suite) # Revert to the original language - prefs.set ("language", userLanguage) + prefs.set ("SOGoLanguage", userLanguage) else: runner.run(suite) diff --git a/Tests/Integration/preferences.py b/Tests/Integration/preferences.py index f7e693fd9..aa64875b9 100644 --- a/Tests/Integration/preferences.py +++ b/Tests/Integration/preferences.py @@ -4,6 +4,12 @@ import urllib import base64 import simplejson +import sogoLogin + +SOGoSupportedLanguages = [ "Catalan", "Czech", "Welsh", "English", "Spanish", + "French", "German", "Italian", "Hungarian", + "Dutch", "BrazilianPortuguese", "Norwegian", "Polish", + "Russian", "Ukrainian", "Swedish" ] class HTTPPreferencesPOST (webdavlib.HTTPPOST): cookie = None @@ -32,19 +38,17 @@ class preferences: self.login = otherLogin self.passw = otherPassword - self.client = webdavlib.WebDAVClient(hostname, port, - self.login, self.passw) + self.client = webdavlib.WebDAVClient(hostname, port) - authString = \ - base64.urlsafe_b64encode (username+":"+password).replace("=", "%3D") - self.cookie = \ - "0xHIGHFLYxSOGo=basic%%20%s;%%20SOGo=6C0F6C0F014AC60ED5" % authString + authCookie = sogoLogin.getAuthCookie(hostname, port, username, password) + self.cookie = authCookie - self.preferencesMap = {"language": "2.1.0.3.0.1.3.1.1.3.1.2"} + self.preferencesMap = {"SOGoLanguage": "2.1.0.3.0.1.4.3.1.3.1.1.2"} + # Duplicated from SOGoDefaults.plist def set(self, preference, value): formKey = self.preferencesMap[preference] - content = "%s=%s" % (formKey, value) + content = "%s=%s&hasChanged=1" % (formKey, value) url = "/SOGo/so/%s/preferences" % self.login post = HTTPPreferencesPOST (url, content) @@ -74,4 +78,4 @@ class preferences: # Simple main to test this class if __name__ == "__main__": p = preferences () - p.set ("language", 6) + p.set ("SOGoLanguage", SOGoSupportedLanguages.index("French")) diff --git a/Tests/Integration/sogoLogin.py b/Tests/Integration/sogoLogin.py new file mode 100644 index 000000000..7a387f1b1 --- /dev/null +++ b/Tests/Integration/sogoLogin.py @@ -0,0 +1,29 @@ +#!/usr/bin/python + +from config import hostname, port, username, password +import webdavlib +import urllib +import urllib2 +import base64 +import simplejson +import cookielib + +def getAuthCookie(hostname, port, username, password) : + cjar = cookielib.CookieJar(); + opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cjar)) + urllib2.install_opener(opener) + + creds = urllib.urlencode([("userName",username), ("password", password)]) + req = urllib2.Request("http://%s/SOGo/connect" % hostname, creds) + + fd = urllib2.urlopen(req) + #print fd.info() + + for cookie in cjar : + if cookie.name == "0xHIGHFLYxSOGo": + authinfo = cookie.value + break + + return "0xHIGHFLYxSOGo="+authinfo +if __name__ == "__main__" : + getAuthCookie()