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)