esig_enabled) return null; */ class APIElectronicSignaturesTestCase extends KTUnitTestCase { /** * @var object $ktapi The main ktapi object */ var $ktapi; /** * @var object $session The KT session object */ var $session; /** * @var object $root The KT folder object */ var $root; /** * @var bool $esig_enabled True if electronic signatures for api are enabled | False if not enabled */ var $esig_enabled; /** * This method sets up the KT session * */ public function setUp() { $this->ktapi = new KTAPI(); $this->session = $this->ktapi->start_session(KT_TEST_USER, KT_TEST_PASS); $this->root = $this->ktapi->get_root_folder(); $this->assertTrue($this->root instanceof KTAPI_Folder); $this->esig_enabled = $this->ktapi->electronic_sig_enabled(); // if not enabled, do not run remaining tests if (!$this->esig_enabled) return null; $this->assertTrue($this->esig_enabled); // force reset of lockout status just in case :) unset($_SESSION['esignature_attempts']); unset($_SESSION['esignature_lock']); } /** * This method emds the KT session * */ public function tearDown() { $this->session->logout(); } /** * Test lockout on multiple failed authentications */ public function testLockout() { // if not enabled, do not run remaining tests if (!$this->esig_enabled) return null; // doesn't matter what we call here, just need 3 failed attempts // NOTE the number of failed attempts must be changed if there is // a change in the electronic signature definition of the // maximum number of attempts before lockout $result = $this->ktapi->create_folder(1, 'New test api folder'); $this->assertEqual($result['status_code'], 1); $result = $this->ktapi->create_folder(1, 'New test api folder'); $this->assertEqual($result['status_code'], 1); $result = $this->ktapi->create_folder(1, 'New test api folder'); $this->assertEqual($result['status_code'], 1); // fourth attempt to check lockout message returned $result = $this->ktapi->create_folder(1, 'New test api folder'); $this->assertEqual($result['status_code'], 1); $eSignature = new ESignature('api'); $this->assertTrue($result['message'] == $eSignature->getLockMsg()); // force reset of the lockout so that remaining tests can run :) unset($_SESSION['esignature_attempts']); unset($_SESSION['esignature_lock']); } /** * Testing folder creation and deletion, add document, get folder contents, folder detail * Folder shortcuts and actions */ public function testFolderApiFunctions() { // if not enabled, do not run remaining tests if (!$this->esig_enabled) return null; // Create a folder // test without authentication - should fail $result1 = $this->ktapi->create_folder(1, 'New test api folder'); $this->assertEqual($result1['status_code'], 1); // test with authentication $result2 = $this->ktapi->create_folder(1, 'New test api folder', KT_TEST_USER, KT_TEST_PASS, 'Testing API'); $folder_id = $result2['results']['id']; $this->assertEqual($result2['status_code'], 0); $this->assertTrue($result2['results']['parent_id'] == 1); // Create a sub folder // test without authentication - should fail $result3 = $this->ktapi->create_folder($folder_id, 'New test api sub-folder'); $this->assertEqual($result3['status_code'], 1); // test with authentication $result4 = $this->ktapi->create_folder($folder_id, 'New test api sub-folder', KT_TEST_USER, KT_TEST_PASS, 'Testing API'); $folder_id2 = $result4['results']['id']; $this->assertEqual($result4['status_code'], 0); // Add a document global $default; $dir = $default->uploadDirectory; $tempfilename = $this->createRandomFile('some text', $dir); // test without authentication - should fail $doc = $this->ktapi->add_document($folder_id, 'New API test doc', 'testdoc1.txt', 'Default', $tempfilename); $this->assertEqual($doc['status_code'], 1); // test with authentication $doc = $this->ktapi->add_document($folder_id, 'New API test doc', 'testdoc1.txt', 'Default', $tempfilename, KT_TEST_USER, KT_TEST_PASS, 'Testing API'); $this->assertEqual($doc['status_code'], 0); $doc_id = $doc['results']['document_id']; $this->assertEqual($doc['results']['title'], 'New API test doc'); // Rename the folder // test without authentication - should fail $renamed = $this->ktapi->rename_folder($folder_id, 'Renamed test folder'); $this->assertEqual($renamed['status_code'], 1); // test with authentication $renamed = $this->ktapi->rename_folder($folder_id, 'Renamed test folder', KT_TEST_USER, KT_TEST_PASS, 'Testing API'); $this->assertEqual($renamed['status_code'], 0); /** * Copy and move appear to fail in other parts of the code, so only going to test failure here * * Must be VERY careful here with skipping the valid submissions, 3 failed auth attempts in a row locks out the user! */ // Copy folder // test without authentication - should fail $copied = $this->ktapi->copy_folder($source_id, $target_id, $reason); $this->assertEqual($copied['status_code'], 1); // // test with authentication // $copied = $this->ktapi->copy_folder($source_id, $target_id, $reason, KT_TEST_USER, KT_TEST_PASS); // echo $copied['status_code']."sd
"; // $this->assertEqual($copied['status_code'], 0); // Move folder // test without authentication - should fail $moved = $this->ktapi->move_folder($source_id, $target_id, $reason); $this->assertEqual($moved['status_code'], 1); // force reset of the lockout so that remaining tests can run :) unset($_SESSION['esignature_attempts']); unset($_SESSION['esignature_lock']); // // test with authentication // $moved = $this->ktapi->move_folder($source_id, $target_id, $reason, KT_TEST_USER, KT_TEST_PASS); // $this->assertEqual($moved['status_code'], 0); // force reset of the lockout so that remaining tests can run :) unset($_SESSION['esignature_attempts']); unset($_SESSION['esignature_lock']); // Clean up - delete the folder // test without authentication - should fail $deleted = $this->ktapi->delete_folder($folder_id, 'Testing API'); $this->assertEqual($deleted['status_code'], 1); // test with authentication $deleted = $this->ktapi->delete_folder($folder_id, 'Testing API', KT_TEST_USER, KT_TEST_PASS); $this->assertEqual($deleted['status_code'], 0); } /** * Testing document get, update, actions, delete, shortcuts and detail */ public function testDocumentApiFunctions() { // if not enabled, do not run remaining tests if (!$this->esig_enabled) return null; // Create a folder // test without authentication - should fail $result1 = $this->ktapi->create_folder(1, 'New test api folder'); $this->assertEqual($result1['status_code'], 1); // test with authentication $result2 = $this->ktapi->create_folder(1, 'New test api folder', KT_TEST_USER, KT_TEST_PASS, 'Testing API'); $folder_id = $result2['results']['id']; $this->assertEqual($result2['status_code'], 0); // Create a sub folder // test without authentication - should fail $result3 = $this->ktapi->create_folder($folder_id, 'New test api sub-folder'); $this->assertEqual($result3['status_code'], 1); // test with authentication $result4 = $this->ktapi->create_folder($folder_id, 'New test api sub-folder', KT_TEST_USER, KT_TEST_PASS, 'Testing API'); $folder_id2 = $result4['results']['id']; $this->assertEqual($result4['status_code'], 0); // Add a document global $default; $dir = $default->uploadDirectory; $tempfilename = $this->createRandomFile('some text', $dir); // test without authentication - should fail $doc = $this->ktapi->add_document($folder_id, 'New API test doc', 'testdoc1.txt', 'Default', $tempfilename); $this->assertEqual($doc['status_code'], 1); // test with authentication $doc = $this->ktapi->add_document($folder_id, 'New API test doc', 'testdoc1.txt', 'Default', $tempfilename, KT_TEST_USER, KT_TEST_PASS, 'Testing API'); $this->assertEqual($doc['status_code'], 0); $doc_id = $doc['results']['document_id']; // Checkout the document // test without authentication - should fail $result1 = $this->ktapi->checkout_document($doc_id, 'Testing API', true); $this->assertEqual($result1['status_code'], 1); // test with authentication $result2 = $this->ktapi->checkout_document($doc_id, 'Testing API', true, KT_TEST_USER, KT_TEST_PASS); $this->assertEqual($doc['status_code'], 0); $this->assertTrue(!empty($result2['results'])); // Checkin the document $dir = $default->uploadDirectory; $tempfilename = $this->createRandomFile('some text', $dir); // test without authentication - should fail $result3 = $this->ktapi->checkin_document($doc_id, 'testdoc1.txt', 'Testing API', $tempfilename, false); $this->assertEqual($result3['status_code'], 1); // test with authentication $result4 = $this->ktapi->checkin_document($doc_id, 'testdoc1.txt', 'Testing API', $tempfilename, false, KT_TEST_USER, KT_TEST_PASS); $this->assertEqual($result4['status_code'], 0); $this->assertEqual($result4['results']['document_id'], $doc_id); // Delete the document // test without authentication - should fail $result5 = $this->ktapi->delete_document($doc_id, 'Testing API'); $this->assertEqual($result5['status_code'], 1); // test with authentication $result6 = $this->ktapi->delete_document($doc_id, 'Testing API', true, KT_TEST_USER, KT_TEST_PASS); $this->assertEqual($result6['status_code'], 0); // Clean up - delete the folder // test without authentication - should fail $result7 = $this->ktapi->delete_folder($folder_id, 'Testing API'); $this->assertEqual($result7['status_code'], 1); $result8 = $this->ktapi->delete_folder($folder_id, 'Testing API', KT_TEST_USER, KT_TEST_PASS); $this->assertEqual($result8['status_code'], 0); } /** * Test role allocation on folders */ function testAllocatingMembersToRoles() { // if not enabled, do not run remaining tests if (!$this->esig_enabled) return null; $folder = $this->ktapi->get_folder_by_name('test123'); if(!$folder instanceof KTAPI_Folder){ $folder = $this->root->add_folder('test123'); } $folder_id = $folder->get_folderid(); $allocation = $this->ktapi->get_role_allocation_for_folder($folder_id); $this->assertEqual($allocation['status_code'], 0); $this->assertTrue(empty($allocation['results'])); // add a user to a role $role_id = 2; // Publisher $user_id = 1; // Admin // test without authentication - should fail $result = $this->ktapi->add_user_to_role_on_folder($folder_id, $role_id, $user_id); $this->assertEqual($result['status_code'], 1); // test with authentication $result = $this->ktapi->add_user_to_role_on_folder($folder_id, $role_id, $user_id, KT_TEST_USER, KT_TEST_PASS, 'Testing API'); $this->assertEqual($result['status_code'], 0); $allocation = $this->ktapi->get_role_allocation_for_folder($folder_id); $this->assertEqual($allocation['status_code'], 0); $this->assertTrue(isset($allocation['results']['Publisher'])); $this->assertEqual($allocation['results']['Publisher']['user'][1], 'Administrator'); // test check on members in the role $check = $this->ktapi->is_member_in_role_on_folder($folder_id, $role_id, $user_id, 'user'); $this->assertEqual($check['status_code'], 0); $this->assertEqual($check['results'], 'YES'); // remove user from a role // test without authentication - should fail $result = $this->ktapi->remove_user_from_role_on_folder($folder_id, $role_id, $user_id); $this->assertEqual($result['status_code'], 1); // test with authentication $result = $this->ktapi->remove_user_from_role_on_folder($folder_id, $role_id, $user_id, KT_TEST_USER, KT_TEST_PASS, 'Testing API'); $this->assertEqual($result['status_code'], 0); $allocation = $this->ktapi->get_role_allocation_for_folder($folder_id); $this->assertEqual($allocation['status_code'], 0); $this->assertFalse(isset($allocation['results']['Publisher'])); // clean up $folder->delete('Testing API'); } /** * Test inherit and override role allocation and remove all allocations */ function testRoleAllocationInheritance() { // if not enabled, do not run remaining tests if (!$this->esig_enabled) return null; $folder = $this->ktapi->get_folder_by_name('test123'); if(!$folder instanceof KTAPI_Folder){ $folder = $this->root->add_folder('test123'); } $folder_id = $folder->get_folderid(); $allocation = $this->ktapi->get_role_allocation_for_folder($folder_id); $this->assertEqual($allocation['status_code'], 0); // Override // test without authentication - should fail $result = $this->ktapi->override_role_allocation_on_folder($folder_id); $this->assertEqual($result['status_code'], 1); // test with authentication $result = $this->ktapi->override_role_allocation_on_folder($folder_id, KT_TEST_USER, KT_TEST_PASS, 'Testing API'); $this->assertEqual($result['status_code'], 0); $role_id = 2; // Publisher $user_id = 1; // Admin $group_id = 1; // System Administrators $members = array('users' => array($user_id), 'groups' => array($group_id)); // test without authentication - should fail $result = $this->ktapi->add_members_to_role_on_folder($folder_id, $role_id, $members); $this->assertEqual($result['status_code'], 1); // test with authentication $result = $this->ktapi->add_members_to_role_on_folder($folder_id, $role_id, $members, KT_TEST_USER, KT_TEST_PASS, 'Testing API'); $this->assertEqual($result['status_code'], 0); $check = $this->ktapi->is_member_in_role_on_folder($folder_id, $role_id, $user_id, 'user'); $this->assertEqual($check['status_code'], 0); $this->assertEqual($check['results'], 'YES'); // Remove all // test without authentication - should fail $result = $this->ktapi->remove_all_role_allocation_from_folder($folder_id, $role_id); $this->assertEqual($result['status_code'], 1); // test with authentication $result = $this->ktapi->remove_all_role_allocation_from_folder($folder_id, $role_id, KT_TEST_USER, KT_TEST_PASS, 'Testing API'); $this->assertEqual($result['status_code'], 0); $check = $this->ktapi->is_member_in_role_on_folder($folder_id, $role_id, $group_id, 'group'); $this->assertEqual($check['status_code'], 0); $this->assertEqual($check['results'], 'NO'); // Inherit // test without authentication - should fail $result = $this->ktapi->inherit_role_allocation_on_folder($folder_id); $this->assertEqual($result['status_code'], 1); // test with authentication $result = $this->ktapi->inherit_role_allocation_on_folder($folder_id, KT_TEST_USER, KT_TEST_PASS, 'Testing API'); $this->assertEqual($result['status_code'], 0); // clean up $folder->delete('Testing API'); } /** * Testing the bulk actions - copy, move, delete */ public function testApiBulkCopyMoveDelete() { // if not enabled, do not run remaining tests if (!$this->esig_enabled) return null; // Create folder and documents $doc1 = $this->createDocument('Test Doc One', 'testdoc1.txt'); $doc2 = $this->createDocument('Test Doc Two', 'testdoc2.txt'); $folder1 = $this->root->add_folder("New test folder"); $this->assertNotError($newFolder); if(PEAR::isError($newFolder)) return; $doc4 = $this->createDocument('Test Doc Four', 'testdoc4.txt', $folder1); $target_folder = $this->root->add_folder("New target folder"); $this->assertNotError($target_folder); if(PEAR::isError($target_folder)) return; $target_folder_id = $target_folder->get_folderid(); $aItems = array(); $aItems['documents'][] = $doc1->get_documentid(); $aItems['documents'][] = $doc2->get_documentid(); $aItems['folders'][] = $folder1->get_folderid(); // Call bulk action - copy // test without authentication - should fail $response = $this->ktapi->performBulkAction('copy', $aItems, 'Testing API', $target_folder_id); $this->assertEqual($response['status_code'], 1); // test with authentication $response = $this->ktapi->performBulkAction('copy', $aItems, 'Testing API', $target_folder_id, KT_TEST_USER, KT_TEST_PASS); $this->assertEqual($response['status_code'], 0); $this->assertTrue(empty($response['results'])); // Test move action - delete and recreate target folder $target_folder->delete('Testing API'); $target_folder = $this->root->add_folder("New target folder"); $this->assertNotError($target_folder); if(PEAR::isError($target_folder)) return; $target_folder_id = $target_folder->get_folderid(); // test without authentication - should fail $response = $this->ktapi->performBulkAction('move', $aItems, 'Testing API', $target_folder_id); $this->assertEqual($response['status_code'], 1); // test with authentication $response = $this->ktapi->performBulkAction('move', $aItems, 'Testing API', $target_folder_id, KT_TEST_USER, KT_TEST_PASS); $this->assertEqual($response['status_code'], 0); $this->assertTrue(empty($response['results'])); // test without authentication - should fail $response = $this->ktapi->performBulkAction('delete', $aItems, 'Testing API'); $this->assertEqual($response['status_code'], 1); // test with authentication $response = $this->ktapi->performBulkAction('delete', $aItems, 'Testing API', null, KT_TEST_USER, KT_TEST_PASS); $this->assertEqual($response['status_code'], 0); $this->assertTrue(empty($response['results'])); // Delete and expunge documents and folder $target_folder->delete('Testing API'); } /** * Testing the bulk actions - checkout and cancel check out */ public function testApiBulkCheckout() { // if not enabled, do not run remaining tests if (!$this->esig_enabled) return null; // Create folder and documents $doc1 = $this->createDocument('Test Doc One', 'testdoc1.txt'); $doc2 = $this->createDocument('Test Doc Two', 'testdoc2.txt'); $folder1 = $this->root->add_folder("New test folder"); $this->assertNotError($newFolder); if(PEAR::isError($newFolder)) return; $doc4 = $this->createDocument('Test Doc Four', 'testdoc4.txt', $folder1); $doc1_id = $doc1->get_documentid(); $doc2_id = $doc2->get_documentid(); $aItems = array(); $aItems['documents'][] = $doc1_id; $aItems['documents'][] = $doc2_id; $aItems['folders'][] = $folder1->get_folderid(); // Call bulk action - checkout // test without authentication - should fail $response = $this->ktapi->performBulkAction('checkout', $aItems, 'Testing API', null); $this->assertEqual($response['status_code'], 1); // test with authentication $response = $this->ktapi->performBulkAction('checkout', $aItems, 'Testing API', null, KT_TEST_USER, KT_TEST_PASS); $this->assertEqual($response['status_code'], 0); $this->assertTrue(empty($response['results'])); // update document object $doc1 = $this->ktapi->get_document_by_id($doc1_id); $this->assertTrue($doc1->is_checked_out()); // cancel the checkout // test without authentication - should fail $response = $this->ktapi->performBulkAction('undo_checkout', $aItems, 'Testing API', null); $this->assertEqual($response['status_code'], 1); // test with authentication $response = $this->ktapi->performBulkAction('undo_checkout', $aItems, 'Testing API', null, KT_TEST_USER, KT_TEST_PASS); $this->assertEqual($response['status_code'], 0); $this->assertTrue(empty($response['results'])); // delete items // test without authentication - should fail $response = $this->ktapi->performBulkAction('delete', $aItems, 'Testing API'); $this->assertEqual($response['status_code'], 1); // test with authentication $response = $this->ktapi->performBulkAction('delete', $aItems, 'Testing API', null, KT_TEST_USER, KT_TEST_PASS); $this->assertEqual($response['status_code'], 0); } /** * Testing the bulk actions - checkout and cancel check out */ public function testApiBulkImmute() { // if not enabled, do not run remaining tests if (!$this->esig_enabled) return null; // Create folder and documents $doc1 = $this->createDocument('Test Doc One', 'testdoc1.txt'); $doc2 = $this->createDocument('Test Doc Two', 'testdoc2.txt'); $folder1 = $this->root->add_folder("New test folder"); $this->assertNotError($newFolder); if(PEAR::isError($newFolder)) return; $doc4 = $this->createDocument('Test Doc Four', 'testdoc4.txt', $folder1); $doc1_id = $doc1->get_documentid(); $doc2_id = $doc2->get_documentid(); $aItems = array(); $aItems['documents'][] = $doc1_id; $aItems['documents'][] = $doc2_id; $aItems['folders'][] = $folder1->get_folderid(); // Call bulk action - checkout // test without authentication - should fail $response = $this->ktapi->performBulkAction('immute', $aItems, 'Testing API'); $this->assertEqual($response['status_code'], 1); $doc1 = $this->ktapi->get_document_by_id($doc1_id); $this->assertFalse($doc1->isImmutable()); // test with authentication $response = $this->ktapi->performBulkAction('immute', $aItems, 'Testing API', null, KT_TEST_USER, KT_TEST_PASS); $this->assertEqual($response['status_code'], 0); $this->assertTrue(empty($response['results'])); // update document object $doc1 = $this->ktapi->get_document_by_id($doc1_id); $this->assertTrue($doc1->isImmutable()); // remove immutability for deletion $doc1->unimmute(); $doc2->unimmute(); $doc4->unimmute(); // delete items // test without authentication - should fail $response = $this->ktapi->performBulkAction('delete', $aItems, 'Testing API'); $this->assertEqual($response['status_code'], 1); // test with authentication $response = $this->ktapi->performBulkAction('delete', $aItems, 'Testing API', null, KT_TEST_USER, KT_TEST_PASS); $this->assertEqual($response['status_code'], 0); } // /* *** Test Bulk actions class *** */ // // /** // * Test the bulk copy functionality // */ // function testCopy() // { // // Create documents // $doc1 = $this->createDocument('Test Doc One', 'testdoc1.txt'); // $doc2 = $this->createDocument('Test Doc Two', 'testdoc2.txt'); // $doc3 = $this->createDocument('Test Doc Three', 'testdoc3.txt'); // $folder1 = $this->root->add_folder("New copy folder"); // $this->assertNotError($newFolder); // if(PEAR::isError($newFolder)) return; // // $doc4 = $this->createDocument('Test Doc Four', 'testdoc4.txt', $folder1); // // // Add a folder // $targetFolder = $this->root->add_folder("New target folder"); // $this->assertNotError($newFolder); // if(PEAR::isError($newFolder)) return; // // $aItems = array($doc1, $doc2, $doc3, $folder1); // // // Copy documents and folder into target folder // $res = $this->bulk->copy($aItems, $targetFolder, 'Testing bulk copy'); // // $this->assertTrue(empty($res)); // // // Check the documents copied // $listDocs = $targetFolder->get_listing(1, 'D'); // $this->assertTrue(count($listDocs) == 3); // // // Check the folder copied // $listFolders = $targetFolder->get_listing(1, 'F'); // $this->assertTrue(count($listFolders) == 1); // // // Check the document contained in the folder copied // $newFolderId = $listFolders[0]['id']; // $newFolder = $this->ktapi->get_folder_by_id($newFolderId); // $listSubDocs = $newFolder->get_listing(1, 'D'); // $this->assertTrue(count($listSubDocs) == 1); // // // Delete and expunge documents and folder // $this->deleteDocument($doc1); // $this->deleteDocument($doc2); // $this->deleteDocument($doc3); // $this->deleteDocument($doc4); // $targetFolder->delete('Testing bulk copy'); // $folder1->delete('Testing bulk copy'); // } // // /** // * Test the bulk move functionality // */ // function testMove() // { // // Create documents // $doc1 = $this->createDocument('Test Doc One', 'testdoc1.txt'); // $doc2 = $this->createDocument('Test Doc Two', 'testdoc2.txt'); // $doc3 = $this->createDocument('Test Doc Three', 'testdoc3.txt'); // $folder1 = $this->root->add_folder("New move folder"); // $this->assertNotError($newFolder); // if(PEAR::isError($newFolder)) return; // // $doc4 = $this->createDocument('Test Doc Four', 'testdoc4.txt', $folder1); // // // Add a folder // $targetFolder = $this->root->add_folder("New target folder"); // $this->assertNotError($newFolder); // if(PEAR::isError($newFolder)) return; // // $aItems = array($doc1, $doc2, $doc3, $folder1); // // // Copy documents and folder into target folder // $res = $this->bulk->move($aItems, $targetFolder, 'Testing bulk move'); // // $this->assertTrue(empty($res)); // // // Check document has been moved not copied // $detail = $doc1->get_detail(); // $this->assertFalse($detail['folder_id'] == $this->root->get_folderid()); // $this->assertTrue($detail['folder_id'] == $targetFolder->get_folderid()); // // // Check folder has been moved not copied // $this->assertFalse($folder1->get_parent_folder_id() == $this->root->get_folderid()); // $this->assertTrue($folder1->get_parent_folder_id() == $targetFolder->get_folderid()); // // // Check the documents copied // $listDocs = $targetFolder->get_listing(1, 'D'); // $this->assertTrue(count($listDocs) == 3); // // // Check the folder copied // $listFolders = $targetFolder->get_listing(1, 'F'); // $this->assertTrue(count($listFolders) == 1); // // // Check the document contained in the folder copied // $newFolderId = $listFolders[0]['id']; // $newFolder = $this->ktapi->get_folder_by_id($newFolderId); // $listSubDocs = $newFolder->get_listing(1, 'D'); // $this->assertTrue(count($listSubDocs) == 1); // // // Delete and expunge documents and folder // $this->deleteDocument($doc1); // $this->deleteDocument($doc2); // $this->deleteDocument($doc3); // $this->deleteDocument($doc4); // $targetFolder->delete('Testing bulk copy'); // $folder1->delete('Testing bulk copy'); // } // // /** // * Test the bulk checkout and cancel checkout functionality // */ // function testCheckout() // { // // Create documents // $doc1 = $this->createDocument('Test Doc One', 'testdoc1.txt'); // $doc2 = $this->createDocument('Test Doc Two', 'testdoc2.txt'); // $doc3 = $this->createDocument('Test Doc Three', 'testdoc3.txt'); // $folder1 = $this->root->add_folder("New test folder"); // $this->assertNotError($newFolder); // if(PEAR::isError($newFolder)) return; // // $doc4 = $this->createDocument('Test Doc Four', 'testdoc4.txt', $folder1); // // $aItems = array($doc1, $doc2, $doc3, $folder1); // // // Checkout documents and folder // $res = $this->bulk->checkout($aItems, 'Testing bulk checkout'); // // $this->assertTrue(empty($res)); // // $this->assertTrue($doc1->is_checked_out()); // $this->assertTrue($doc2->is_checked_out()); // $this->assertTrue($doc3->is_checked_out()); // // // refresh the doc4 document object to reflect changes // $doc4 = KTAPI_Document::get($this->ktapi, $doc4->get_documentid()); // $this->assertTrue($doc4->is_checked_out()); // // $res = $this->bulk->undo_checkout($aItems, 'Testing bulk undo / cancel checkout'); // // $this->assertTrue(empty($res)); // // $this->assertFalse($doc1->is_checked_out()); // $this->assertFalse($doc2->is_checked_out()); // $this->assertFalse($doc3->is_checked_out()); // // // refresh the doc4 document object to reflect changes // $doc4 = KTAPI_Document::get($this->ktapi, $doc4->get_documentid()); // $this->assertFalse($doc4->is_checked_out()); // // // Delete and expunge documents and folder // $this->deleteDocument($doc1); // $this->deleteDocument($doc2); // $this->deleteDocument($doc3); // $this->deleteDocument($doc4); // $folder1->delete('Testing bulk checkout'); // } // // /** // * Test the bulk immute functionality // */ // function testImmute() // { // // Create documents // $doc1 = $this->createDocument('Test Doc One', 'testdoc1.txt'); // $doc2 = $this->createDocument('Test Doc Two', 'testdoc2.txt'); // $doc3 = $this->createDocument('Test Doc Three', 'testdoc3.txt'); // $folder1 = $this->root->add_folder("New test folder"); // $this->assertNotError($newFolder); // if(PEAR::isError($newFolder)) return; // // $doc4 = $this->createDocument('Test Doc Four', 'testdoc4.txt', $folder1); // // $aItems = array($doc1, $doc2, $doc3, $folder1); // // // Immute documents // $res = $this->bulk->immute($aItems); // // $this->assertTrue(empty($res)); // // $this->assertTrue($doc1->isImmutable()); // $this->assertTrue($doc2->isImmutable()); // $this->assertTrue($doc3->isImmutable()); // // // refresh the doc4 document object to reflect changes // $doc4 = KTAPI_Document::get($this->ktapi, $doc4->get_documentid()); // $this->assertTrue($doc4->isImmutable()); // // // remove immutability for deletion // $doc1->unimmute(); // $doc2->unimmute(); // $doc3->unimmute(); // $doc4->unimmute(); // // // Delete and expunge documents and folder // $this->deleteDocument($doc1); // $this->deleteDocument($doc2); // $this->deleteDocument($doc3); // $this->deleteDocument($doc4); // $folder1->delete('Testing bulk checkout'); // } // // /** // * Test the bulk delete functionality // */ // function testDelete() // { // // Create documents // $doc1 = $this->createDocument('Test Doc One', 'testdoc1.txt'); // $doc2 = $this->createDocument('Test Doc Two', 'testdoc2.txt'); // $doc3 = $this->createDocument('Test Doc Three', 'testdoc3.txt'); // $folder1 = $this->root->add_folder("New test folder"); // $this->assertNotError($newFolder); // if(PEAR::isError($newFolder)) return; // // $doc4 = $this->createDocument('Test Doc Four', 'testdoc4.txt', $folder1); // // $aItems = array($doc1, $doc2, $doc3, $folder1); // // // Delete documents and folder // $res = $this->bulk->delete($aItems, 'Testing bulk delete'); // // $this->assertTrue(empty($res)); // // // Check documents have been deleted // $this->assertTrue($doc1->is_deleted()); // $this->assertTrue($doc2->is_deleted()); // $this->assertTrue($doc3->is_deleted()); // // // refresh the doc4 document object to reflect changes // $doc4 = KTAPI_Document::get($this->ktapi, $doc4->get_documentid()); // $this->assertTrue($doc4->is_deleted()); // // // Check folder has been deleted // $folder = $this->ktapi->get_folder_by_name('New test folder'); // $this->assertError($folder); // // // Expunge documents // $doc1->expunge(); // $doc2->expunge(); // $doc3->expunge(); // $doc4->expunge(); // } // // /** // * Test the bulk archive functionality // */ // function testArchive() // { // // Create documents // $doc1 = $this->createDocument('Test Doc One', 'testdoc1.txt'); // $doc2 = $this->createDocument('Test Doc Two', 'testdoc2.txt'); // $doc3 = $this->createDocument('Test Doc Three', 'testdoc3.txt'); // $folder1 = $this->root->add_folder("New test folder"); // $this->assertNotError($newFolder); // if(PEAR::isError($newFolder)) return; // // $doc4 = $this->createDocument('Test Doc Four', 'testdoc4.txt', $folder1); // // $aItems = array($doc1, $doc2, $doc3, $folder1); // // // Archive documents and folder // $res = $this->bulk->archive($aItems, 'Testing bulk archive'); // // $this->assertTrue(empty($res)); // // $document1 = $doc1->getObject(); // $this->assertTrue($document1->getStatusID() == 4); // // // refresh the doc4 document object to reflect changes // $doc4 = KTAPI_Document::get($this->ktapi, $doc4->get_documentid()); // $document4 = $doc4->getObject(); // $this->assertTrue($document4->getStatusID() == 4); // // // Restore for deletion // $doc1->restore(); // $doc2->restore(); // $doc3->restore(); // $doc4->restore(); // // // Delete and expunge documents and folder // $this->deleteDocument($doc1); // $this->deleteDocument($doc2); // $this->deleteDocument($doc3); // $this->deleteDocument($doc4); // $folder1->delete('Testing bulk archive'); // } /** * Helper function to create a document */ function createDocument($title, $filename, $folder = null) { if(is_null($folder)){ $folder = $this->root; } // Create a new document $randomFile = $this->createRandomFile(); $this->assertTrue(is_file($randomFile)); if ($this->esig_enabled) { $document = $folder->add_document($title, $filename, 'Default', $randomFile, KT_TEST_USER, KT_TEST_PASS, 'Testing API'); } else { $document = $folder->add_document($title, $filename, 'Default', $randomFile); } $this->assertNotError($document); @unlink($randomFile); if(PEAR::isError($document)) return false; return $document; } /** * Helper function to delete docs */ function deleteDocument($document) { $document->delete('Testing API'); $document->expunge(); } function createRandomFile($content = 'this is some text', $uploadDir = null) { if(is_null($uploadDir)){ $uploadDir = dirname(__FILE__); } $temp = tempnam($uploadDir, 'myfile'); $fp = fopen($temp, 'wt'); fwrite($fp, $content); fclose($fp); return $temp; } } ?>