def setup_integration_env():
    global NUXEO_URL, USER, PASSWORD
    global remote_client, lcclient, TEST_WORKSPACE, LOCAL_TEST_FOLDER
    global LOCAL_NXDRIVE_FOLDER, LOCAL_NXDRIVE_CONF_FOLDER
    global ctl

    # Check the Nuxeo server test environment
    NUXEO_URL = os.environ.get("NXDRIVE_TEST_NUXEO_URL")
    USER = os.environ.get("NXDRIVE_TEST_USER")
    PASSWORD = os.environ.get("NXDRIVE_TEST_PASSWORD")
    if None in (NUXEO_URL, USER, PASSWORD):
        raise SkipTest("No integration server configuration found in " "environment.")

    parent_path = os.path.dirname(TEST_WORKSPACE_PATH)
    workspace_name = os.path.basename(TEST_WORKSPACE_PATH)
    root_remote_client = NuxeoClient(NUXEO_URL, USER, PASSWORD, base_folder="/")
    TEST_WORKSPACE = root_remote_client.create(
        parent_path, "Workspace", name=workspace_name, properties={"dc:title": TEST_WORKSPACE_TITLE}
    )[u"uid"]

    # Client to be use to create remote test documents and folders
    remote_client = NuxeoClient(NUXEO_URL, USER, PASSWORD, base_folder=TEST_WORKSPACE)

    # Check the local filesystem test environment
    LOCAL_TEST_FOLDER = tempfile.mkdtemp("-nuxeo-drive-tests")

    LOCAL_NXDRIVE_FOLDER = os.path.join(LOCAL_TEST_FOLDER, "Nuxeo Drive")
    os.mkdir(LOCAL_NXDRIVE_FOLDER)

    LOCAL_NXDRIVE_CONF_FOLDER = os.path.join(LOCAL_TEST_FOLDER, "nuxeo-drive-conf")
    os.mkdir(LOCAL_NXDRIVE_CONF_FOLDER)

    ctl = Controller(LOCAL_NXDRIVE_CONF_FOLDER)
    def test_make_token(self):
        remote_client = self.remote_document_client_1
        token = remote_client.request_token()
        if token is None:
            raise SkipTest('nuxeo-platform-login-token is not deployed')
        self.assertTrue(len(token) > 5)
        self.assertEquals(remote_client.auth[0], 'X-Authentication-Token')
        self.assertEquals(remote_client.auth[1], token)

        # Requesting token is an idempotent operation
        token2 = remote_client.request_token()
        self.assertEquals(token, token2)

        # It's possible to create a new client using the same token
        remote_client2 = NuxeoClient(
            remote_client.server_url, remote_client.user_id,
            remote_client.device_id, remote_client.client_version,
            token=token, base_folder=self.workspace)

        token3 = remote_client.request_token()
        self.assertEquals(token, token3)

        # Register a root with client 2 and see it with client one
        folder_1 = remote_client2.make_folder('/', 'Folder 1')
        remote_client2.register_as_root(folder_1)

        roots = remote_client.get_roots()
        self.assertEquals(len(roots), 1)
        self.assertEquals(roots[0].name, 'Folder 1')

        # The root can also been seen with a new client connected using
        # password based auth
        remote_client3 = NuxeoClient(
            remote_client.server_url, remote_client.user_id,
            remote_client.device_id, remote_client.client_version,
            password=self.password_1, base_folder=None)
        roots = remote_client3.get_roots()
        self.assertEquals(len(roots), 1)
        self.assertEquals(roots[0].name, 'Folder 1')

        # Another device using the same user credentials will get a different
        # token
        remote_client4 = NuxeoClient(
            remote_client.server_url, remote_client.user_id,
            'other-test-device', remote_client.client_version,
            password=self.password_1, base_folder=None)
        token4 = remote_client4.request_token()
        self.assertNotEquals(token, token4)

        # A client can revoke a token explicitly and thus loose credentials
        remote_client4.revoke_token()
        self.assertRaises(IOError, remote_client4.get_roots)
def setup_integration_server():
    global nxclient, TEST_WORKSPACE
    NUXEO_URL = os.environ.get('NXDRIVE_TEST_NUXEO_URL')
    USER = os.environ.get('NXDRIVE_TEST_USER')
    PASSWORD = os.environ.get('NXDRIVE_TEST_PASSWORD')
    if None in (NUXEO_URL, USER, PASSWORD):
        raise SkipTest("No integration server configuration found in "
                       "environment.")
    nxclient = NuxeoClient(NUXEO_URL, USER, PASSWORD, base_folder='/')

    parent_path = os.path.dirname(TEST_WORKSPACE_PATH)
    workspace_name = os.path.basename(TEST_WORKSPACE_PATH)
    TEST_WORKSPACE = nxclient.create(
        parent_path, 'Workspace', name=workspace_name,
        properties={'dc:title': 'Nuxeo Drive Tests'})[u'uid']
Exemple #4
0
    def test_make_token(self):
        remote_client = self.remote_document_client_1
        token = remote_client.request_token()
        if token is None:
            raise SkipTest('nuxeo-platform-login-token is not deployed')
        self.assertTrue(len(token) > 5)
        self.assertEquals(remote_client.auth[0], 'X-Authentication-Token')
        self.assertEquals(remote_client.auth[1], token)

        # Requesting token is an idempotent operation
        token2 = remote_client.request_token()
        self.assertEquals(token, token2)

        # It's possible to create a new client using the same token
        remote_client2 = NuxeoClient(remote_client.server_url,
                                     remote_client.user_id,
                                     remote_client.device_id,
                                     remote_client.client_version,
                                     token=token,
                                     base_folder=self.workspace)

        token3 = remote_client.request_token()
        self.assertEquals(token, token3)

        # Register a root with client 2 and see it with client one
        folder_1 = remote_client2.make_folder('/', 'Folder 1')
        remote_client2.register_as_root(folder_1)

        roots = remote_client.get_roots()
        self.assertEquals(len(roots), 1)
        self.assertEquals(roots[0].name, 'Folder 1')

        # The root can also been seen with a new client connected using
        # password based auth
        remote_client3 = NuxeoClient(remote_client.server_url,
                                     remote_client.user_id,
                                     remote_client.device_id,
                                     remote_client.client_version,
                                     password=self.password_1,
                                     base_folder=None)
        roots = remote_client3.get_roots()
        self.assertEquals(len(roots), 1)
        self.assertEquals(roots[0].name, 'Folder 1')

        # Another device using the same user credentials will get a different
        # token
        remote_client4 = NuxeoClient(remote_client.server_url,
                                     remote_client.user_id,
                                     'other-test-device',
                                     remote_client.client_version,
                                     password=self.password_1,
                                     base_folder=None)
        token4 = remote_client4.request_token()
        self.assertNotEquals(token, token4)

        # A client can revoke a token explicitly and thus lose credentials
        remote_client4.revoke_token()
        self.assertRaises(IOError, remote_client4.get_roots)