def test_loadToken(ch=None): if ch is None: ch = confighandler = ExpConfigHandler(pathscheme='default1') ch.setkey('wiki_url', 'http://10.14.40.245:8090/rpc/xmlrpc') print "confighandler wiki_url: {}".format(ch.get('wiki_url')) # Deactivating autologin... server = ConfluenceXmlRpcServer(confighandler=ch, autologin=False) token = server.find_and_test_tokens() print "\nFound token: {}".format(token) print "server.Logintoken: {}".format(token) return server
def test_loginAndSetToken(ch=None, persist=False): if ch is None: ch = confighandler = ExpConfigHandler(pathscheme='default1') ch.setkey('wiki_url', 'http://10.14.40.245:8090/rpc/xmlrpc') # ch.setkey('wiki_password', 'http://10.14.40.245:8090/rpc/xmlrpc') print "confighandler wiki_url: {}".format(ch.get('wiki_url')) server = ConfluenceXmlRpcServer(confighandler=ch, autologin=False) token = server.Logintoken print "\ntoken (before forced login):\t{}".format(token) token = server.login(dopersist=persist, prompt=True) print "token (after login):\t\t{}".format(token) if token: token_crypt, crypt_iv, crypt_key = server.saveToken(token, persist=persist) print "token_crypt, iv, key:\t{}".format((token_crypt, crypt_iv, crypt_key)) token_decrypt = server.getToken(token_crypt) print "token_decrypt:\t\t\t{}".format(token_decrypt)
def test_getPageByName(ch=None, server=None): if ch is None: ch = confighandler = ExpConfigHandler(pathscheme='default1') if server is None: server = ConfluenceXmlRpcServer(confighandler=ch) spaceKey = "~scholer" title = "RS001 First test page CzkTW" title_err = "RS001 First test page CzTW" page_struct1 = server.getPage(spaceKey=spaceKey, pageTitle=title) print "\npage_struct1:" print page_struct1 try: page_struct_err = server.getPage(spaceKey=spaceKey, pageTitle=title_err) print "\npage_struct_err:" print page_struct_err except xmlrpclib.Fault as e: print "Retrival of on-existing pages by id raises error as expected."
def test_getPageById(ch=None, server=None): if ch is None: ch = confighandler = ExpConfigHandler(pathscheme='default1') if server is None: server = ConfluenceXmlRpcServer(confighandler=ch) spaceKey = "~scholer" pageId = 524310 pageId_erroneous = '504310' page_struct1 = server.getPage(pageId=pageId) print "\npage_struct1:" print page_struct1 try: page_struct_err = server.getPage(pageId=pageId_erroneous) print "\npage_struct_err:" print page_struct_err except xmlrpclib.Fault as e: print "Retrival of on-existing pages by id raises error as expected."
def server_fake_ch_and_proxy(): """ Creates a testable server object that uses: - Fake ServerProxy from xmlrpclib - Fake confighandler. """ ch = FakeConfighandler() ch.setkey('wiki_url', 'http://10.14.40.245:8090/rpc/xmlrpc') #monkeypatch.setattr(model.server, 'login_prompt', lambda **x: ('fakeusername', 'fakepassword')) server = ConfluenceXmlRpcServer(autologin=False, confighandler=ch) def prompt_mock(**kwargs): logger.info("Call to promptForUserPass with kwargs %s intercepted by monkeypatched attribute, returning 'fakeuser', 'fakepassword'", kwargs) return 'fakeuser', 'fakepassword' # No reason to use monkeypatch on the test object, should be a permanent change: server.promptForUserPass = prompt_mock fake_proxy = FakeXmlRpcServerProxy('https://some.url') server.RpcServer = fake_proxy #monkeypatch.setattr(server, 'Logintoken', lambda x: 'avalidtoken23456') return server
def test_movePage1(ch=None, server=None): if ch is None: ch = confighandler = ExpConfigHandler(pathscheme='default1') if server is None: server = ConfluenceXmlRpcServer(confighandler=ch) spaceKey = "~scholer" title = "RS001 First test page CzkTW" page = server.getPage(spaceKey=spaceKey, pageTitle=title) pageId = page['id'] #pageId = 524310 # edit, testing getPage as well... rootPageTitle = "RS Experiments" rootPage = server.getPage(spaceKey=spaceKey, pageTitle=rootPageTitle) print "\nrootPage:" print rootPage targetPageId = rootPage['id'] # Remember, 'id' and not 'pageId' ! server.movePage(pageId, targetPageId=targetPageId)
def test_getServerInfo(ch=None): if ch is None: ch = confighandler = ExpConfigHandler(pathscheme='default1') ch.setkey('wiki_url', 'http://10.14.40.245:8090/rpc/xmlrpc') print "confighandler wiki_url: {}".format(ch.get('wiki_url')) # Deactivating autologin... server = ConfluenceXmlRpcServer(confighandler=ch, autologin=False) token = server.find_and_test_tokens() print "\nFound token: {}".format(token) print "server.Logintoken: {}".format(token) if token is None: token = server.login(prompt=True) ret = server._testConnection() print "\n_testConnection returned:\n{}".format(ret) serverinfo = server.getServerInfo() print "\nServer info:" print serverinfo
import argparse parser = argparse.ArgumentParser(description="Script for persisting server data.") parser.add_argument('--outputfn', help="Start labfluence in testing environment.") argsns = parser.parse_args() outputfn = argsns.outputfn or "fakeserver_testdata_large.yml" outputfn = os.path.join(os.path.dirname(__file__), outputfn) logfmt = "%(levelname)s:%(name)s:%(lineno)s %(funcName)s():\n%(message)s\n" logfmt = "%(levelname)s:%(name)s:%(lineno)s %(funcName)s(): %(message)s\n" logging.basicConfig(level=logging.INFO, format=logfmt) logging.getLogger("__main__").setLevel(logging.DEBUG) ch = ExpConfigHandler(pathscheme='test1') server = ConfluenceXmlRpcServer(confighandler=ch) ### IMPORT PAGES and attachment (info) ### pagesummaries = server.getPages('~scholer') pages, comments, attachments = dict(), dict(), dict() for i, summary in enumerate(pagesummaries): print("Retrieving page {} of {}".format(i, len(pagesummaries))) pid = summary['id'] if pid in pages: logger.warning("Duplicate pageId! - This is already in the pages dict: '%s'", pid) p = server.getPage(pid) if p: # Manual conversion is no longer required, I use custom xmlrpclib.DateTime class # and have registrered this with custom yaml representer: #for k, v in p.items():
pathscheme = argsns.pathscheme or 'test1' logger.info( "Enabling testing environment..." ) confighandler = FakeConfighandler(pathscheme=pathscheme) # set basedir for exp: confighandler.ConfigPaths['exp'] = os.path.join('tests', 'test_data', 'test_filestructure', 'labfluence_data_testsetup', '.labfluence.yml') server = FakeConfluenceServer(confighandler=confighandler) else: logger.debug(" >>>>>> Initiating real confighandler and server... >>>>>>") pathscheme = argsns.pathscheme or 'default1' confighandler = ExpConfigHandler(pathscheme='default1') try: logger.debug("Confighandler instantiated, Initiating server... >>>>>>") # setting autologin=False during init should defer login attempt... server = ConfluenceXmlRpcServer(autologin=False, confighandler=confighandler) server._autologin = True except socket.error as e: logger.error( "Socket error during server init ('%s'). This should not happen; autologin is shielded by try-clause.", e) server = None confighandler.Singletons['server'] = server logger.debug(" >>>>>> Server instantiated, initiating ExperimentManager... >>>>>> ") manager = ExperimentManager(confighandler=confighandler, autoinit=('localexps', )) confighandler.Singletons['experimentmanager'] = manager logger.debug(" >>>>>> ExperimentManager instantiated, starting LabfluenceApp... >>>>>>") app = LabfluenceApp(confighandler=confighandler) logger.debug(" >>>>>> LabfluenceApp instantiated, connecting with server >>>>>>") server.autologin()
def main(): ############################## ###### Parse arguments: ###### ############################## #argsns = parser.parse_args() # produces a namespace, not a dict. argsns = parse_args() ####################################### ### Set up standard logging system #### ####################################### loghandlers = init_logging(argsns, prefix="labfluence_cmd") ############################ #### Set up logging: #### ############################ #logfmt = "%(levelname)s %(name)s:%(lineno)s %(funcName)s() > %(message)s" #try: # loglevel = int(argsns.loglevel) #except ValueError: # loglevel = argsns.loglevel.upper() ##logfmt = "%(levelname)s:%(name)s: %(funcName)s() :: %(message)s" #if argsns.debug is None: # #and 'all' in argsns.debug: # logging.basicConfig(level=loglevel, format=logfmt) ## argsns.debug is a list (possibly empty) #elif argsns.debug: ## argsns.debug is a non-empty list # logging.basicConfig(level=loglevel, format=logfmt) # for mod in argsns.debug: # logger.info("Enabling logging debug messages for module: %s", mod) # logging.getLogger(mod).setLevel(logging.DEBUG) #else: # # argsns.debug is an empty list # logging.basicConfig(level=min(logging.DEBUG, loglevel), format=logfmt) #logging.getLogger("__main__").setLevel(logging.DEBUG) # #if argsns.logtofile or True: # always log for now... # # based on http://docs.python.org/2/howto/logging-cookbook.html # if not os.path.exists('logs'): # os.mkdir('logs') # if argsns.testing: # fh = logging.FileHandler('logs/labfluence_cmd_testing.log') # else: # fh = logging.FileHandler('logs/labfluence_cmd_debug.log') # fh.setLevel(logging.DEBUG) # formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # fh.setFormatter(formatter) # logging.getLogger('').addHandler(fh) # logging.root == logging.getLogger('') #################################################################################### # Set up confighandler, etc (depending on whether testing mode is requested...) #### #################################################################################### if argsns.testing: logging.getLogger( "model.model_testdoubles.fake_confighandler").setLevel( logging.DEBUG) logging.getLogger("model.model_testdoubles.fake_server").setLevel( logging.DEBUG) logging.getLogger(__name__).setLevel(logging.DEBUG) pathscheme = argsns.pathscheme or 'test1' logger.info("Enabling testing environment...:") confighandler = FakeConfighandler(pathscheme=pathscheme) # set basedir for exp: confighandler.ConfigPaths['exp'] = os.path.join( 'tests', 'test_data', 'test_filestructure', 'labfluence_data_testsetup', '.labfluence.yml') confserver = FakeConfluenceServer(confighandler=confighandler) else: pathscheme = argsns.pathscheme or 'default1' confighandler = ExpConfigHandler(pathscheme=pathscheme) try: confserver = ConfluenceXmlRpcServer(autologin=True, confighandler=confighandler) except socket.error: print "This should not happen; autologin is shielded by try-clause. Perhaps network issues?" exit(1) confighandler.Singletons['server'] = confserver # Test if default func is defined after parsing: func = getattr(argsns, 'func', None) if func: logger.debug("Executing function %s with argsns %s", func, argsns) ret = func(argsns) else: logger.error("No func specified...?")
parser = argparse.ArgumentParser( description="Script for persisting server data.") parser.add_argument('--outputfn', help="Start labfluence in testing environment.") argsns = parser.parse_args() outputfn = argsns.outputfn or "fakeserver_testdata_large.yml" outputfn = os.path.join(os.path.dirname(__file__), outputfn) logfmt = "%(levelname)s:%(name)s:%(lineno)s %(funcName)s():\n%(message)s\n" logfmt = "%(levelname)s:%(name)s:%(lineno)s %(funcName)s(): %(message)s\n" logging.basicConfig(level=logging.INFO, format=logfmt) logging.getLogger("__main__").setLevel(logging.DEBUG) ch = ExpConfigHandler(pathscheme='test1') server = ConfluenceXmlRpcServer(confighandler=ch) ### IMPORT PAGES and attachment (info) ### pagesummaries = server.getPages('~scholer') pages, comments, attachments = dict(), dict(), dict() for i, summary in enumerate(pagesummaries): print("Retrieving page {} of {}".format(i, len(pagesummaries))) pid = summary['id'] if pid in pages: logger.warning( "Duplicate pageId! - This is already in the pages dict: '%s'", pid) p = server.getPage(pid) if p: # Manual conversion is no longer required, I use custom xmlrpclib.DateTime class