Monotone-Parent: 7ee997ad520d61e48d2f051e02d433791c47fd08

Monotone-Revision: c37895534ea03712cf65f5760bc535177a041d99

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2011-04-01T19:43:11
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Wolfgang Sourdeau 2011-04-01 19:43:11 +00:00
parent 87f516c874
commit 4e13c0b73c
4 changed files with 57 additions and 17 deletions

View File

@ -1,5 +1,14 @@
2011-04-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* 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.

View File

@ -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)

View File

@ -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"))

View File

@ -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()