Exemple #1
0
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
Exemple #2
0
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)
Exemple #3
0
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."
Exemple #4
0
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."
Exemple #5
0
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
Exemple #6
0
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)
Exemple #7
0
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():
Exemple #9
0
        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()
Exemple #10
0
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