diff --git a/ktwebservice/nunit/README b/ktwebservice/nunit/README
index 4f9b928..909f4ba 100644
--- a/ktwebservice/nunit/README
+++ b/ktwebservice/nunit/README
@@ -11,6 +11,9 @@ The unit tests were written for NUnit. NUnit 2.2.0 was used during development.
This framework was developed in Linux using Mono.
+The document type 'NewType' must be added to the database for the document_type.cs unit test to run.
+
+
RUNNING THE TESTS
-----------------
@@ -20,8 +23,6 @@ A makefile is provided which can be used as follows:
- make // will build and run the tests
-- make results // will attempt to only build results
-
- make clean // will remove all temporary and binary files
STATE
diff --git a/ktwebservice/nunit/authentication.cs b/ktwebservice/nunit/authentication.cs
index d35235f..043ecfe 100644
--- a/ktwebservice/nunit/authentication.cs
+++ b/ktwebservice/nunit/authentication.cs
@@ -3,42 +3,42 @@ using System;
using System.IO;
namespace MonoTests.KnowledgeTree
-{
+{
[TestFixture]
public class AuthenticationTest
{
-
+
private String _session;
private KnowledgeTreeService _kt;
-
+
[SetUp]
- public void SetUp()
+ public void SetUp()
{
- this._kt = new KnowledgeTreeService();
+ this._kt = new KnowledgeTreeService();
}
[TearDown]
- public void TearDown()
+ public void TearDown()
{
}
-
+
[Test]
- public void Login()
+ public void Login()
{
- kt_response response = this._kt.login("admin","admin","127.0.0.1");
-
+ kt_response response = this._kt.login("admin","admin","127.0.0.1");
+
Assert.AreEqual(0,response.status_code);
Assert.IsFalse(response.message == null);
Assert.IsFalse(response.message == "");
-
- this._session = response.message;
+
+ this._session = response.message;
}
-
+
[Test]
- public void Logout()
+ public void Logout()
{
kt_response response = this._kt.logout(this._session);
Assert.AreEqual(0,response.status_code);
- }
+ }
}
}
diff --git a/ktwebservice/nunit/document_add.cs b/ktwebservice/nunit/document_add.cs
index 19b1875..662b0fd 100755
--- a/ktwebservice/nunit/document_add.cs
+++ b/ktwebservice/nunit/document_add.cs
@@ -3,70 +3,78 @@ using System;
using System.IO;
namespace MonoTests.KnowledgeTree
-{
+{
[TestFixture]
- public class AddDocumentTest
+ public class AddDocumentTest
{
-
+
private String _session;
- private KnowledgeTreeService _kt;
+ private KnowledgeTreeService _kt;
private int _docId;
- private int _folderId;
+ private int _folderId;
private String _filename;
private String _content;
private bool _verbose;
-
-
+
+ public AddDocumentTest()
+ {
+
+ this._verbose = true;
+
+ this._folderId = 1;
+ }
+
+
[SetUp]
- public void SetUp()
+ public void SetUp()
{
- this._kt = new KnowledgeTreeService();
+ this._kt = new KnowledgeTreeService();
//this._kt.Url = "http://ktdms.trunk/ktwebservice/webservice.php";
kt_response response = this._kt.login("admin","admin","127.0.0.1");
- this._session = response.message;
-
- this._filename = Helper.isUnix()?"/tmp/kt_unit_test1.txt":"c:\\kt_unit_test1.txt";
+ this._session = response.message;
+
+ this._filename = Helper.isUnix()?"/tmp/kt_unit_test1.txt":"c:\\kt_unit_test1.txt";
this._content = "hello world!";
Helper.writeFile(this._filename, this._content);
-
- this._verbose = false;
-
- this._folderId = 1;
+
+
}
[TearDown]
- public void TearDown()
+ public void TearDown()
{
- this._kt.logout(this._session);
-
- Helper.deleteFile(this._filename);
+
+ Helper.deleteFile(this._filename);
+
+
+ this._kt.logout(this._session);
}
-
-
-
-
+
+
+
+
[Test]
- public void FindDocumentBeforeAdd()
+ public void FindDocumentBeforeAdd()
{
String filename = "Root Folder/kt test folder/kt unit test1";
if (this._verbose) System.Console.WriteLine("Finding document before add: " + filename);
- kt_document_detail documentDetail = this._kt.get_document_detail_by_name(this._session, filename, "T");
+ kt_document_detail documentDetail = this._kt.get_document_detail_by_title(this._session, 1, filename, "");
if (0 == documentDetail.status_code)
{
if (this._verbose) System.Console.WriteLine("Found document - deleting");
kt_response response = this._kt.delete_document(this._session, documentDetail.document_id, "Delete - cleaning up before add");
Assert.AreEqual(0, response.status_code);
}
- else if (this._verbose)
+ else if (this._verbose)
{
System.Console.WriteLine("document not found. that is ok!");
}
- }
-
-
+ }
+
+
[Test]
- public void FindFolderBeforeAdd()
+ public void FindFolderBeforeAdd()
{
String folder = "Root Folder/kt test folder";
if (this._verbose) System.Console.WriteLine("Finding folder before add: " + folder);
@@ -81,87 +89,150 @@ namespace MonoTests.KnowledgeTree
{
if (this._verbose) System.Console.WriteLine("folder not found. that is ok!");
}
- }
-
-
+ }
+
+
[Test]
- public void AddDocument()
- {
+ public void AddDocument()
+ {
String folder = "kt test folder";
-
+
if (this._verbose) System.Console.WriteLine("Creating folder : " + folder);
kt_folder_detail folderDetail = this._kt.create_folder(this._session, 1, folder);
this._folderId = folderDetail.id;
if (this._verbose) System.Console.WriteLine("Got folder id : " + this._folderId);
-
+
String filename = "kt unit test1";
-
+
if (this._verbose) System.Console.WriteLine("Adding document : " + filename);
-
-
+
+
kt_document_detail response1 = this._kt.add_base64_document(this._session, this._folderId, filename, this._filename, "Default", Helper.ConvertFileToBase64Encoding(this._filename));
-
+
Assert.AreEqual(0, response1.status_code);
Assert.AreEqual("kt unit test1", response1.title);
Assert.AreEqual("Default", response1.document_type);
Assert.AreEqual("0.1", response1.version);
Assert.AreEqual("kt_unit_test1.txt", response1.filename);
-
+
Assert.IsFalse(response1.created_date == null);
Assert.IsFalse(response1.created_date == "");
-
+
Assert.AreEqual("Administrator", response1.created_by);
-
+
//Assert.IsTrue(response1.updated_date == null);
- Assert.IsTrue("" != response1.updated_date);
+ Assert.IsTrue("" != response1.updated_date);
+
+ Assert.AreEqual("Administrator", response1.updated_by);
- Assert.AreEqual("Administrator", response1.updated_by);
+ Assert.IsTrue(response1.document_id > 0);
- Assert.IsTrue(response1.document_id > 0);
-
Assert.AreEqual(this._folderId, response1.folder_id);
-
-
- Assert.AreEqual("n/a",response1.workflow);
-
-
- Assert.AreEqual("n/a",response1.workflow_state);
-
- Assert.AreEqual("Root Folder/" + folder + "/kt unit test1", response1.full_path);
-
+
+
+ Assert.AreEqual("n/a",response1.workflow);
+
+
+ Assert.AreEqual("n/a",response1.workflow_state);
+
+ Assert.AreEqual("Root Folder/" + folder + "/kt unit test1", response1.full_path);
+
this._docId = response1.document_id;
}
-
+
[Test]
- public void FindDocumentBeforeDelete()
+ public void FindDocumentBeforeDelete()
{
+
if (this._verbose) System.Console.WriteLine("Find document before delete");
- kt_document_detail documentDetail = this._kt.get_document_detail_by_name(this._session, "Root Folder/kt test folder/kt unit test1", "T");
+ kt_document_detail documentDetail = this._kt.get_document_detail_by_name(this._session, 1, "Root Folder/kt test folder/kt unit test1", "T","");
Assert.AreEqual(0, documentDetail.status_code);
Assert.AreEqual(this._docId, documentDetail.document_id);
-
+
+
+
if (this._verbose) System.Console.WriteLine("Find document before delete without the Root Folder's explicit naming");
- documentDetail = this._kt.get_document_detail_by_name(this._session, "/kt test folder/kt unit test1", "T");
+ documentDetail = this._kt.get_document_detail_by_title(this._session, 1, "/kt test folder/kt unit test1", "");
Assert.AreEqual(0, documentDetail.status_code);
Assert.AreEqual(this._docId, documentDetail.document_id);
}
-
+
[Test]
- public void DeleteDocument()
+ public void DeleteDocument()
{
if (this._verbose) System.Console.WriteLine("Deleting document");
- kt_response response = this._kt.delete_document(this._session, this._docId, "Delete - cleaning up after add");
+ kt_response response = this._kt.delete_document(this._session, this._docId, "Delete - cleaning up after add");
Assert.AreEqual(0, response.status_code);
}
-
+
[Test]
- public void FindDocumentAfterDelete()
+ public void FindDocumentAfterDelete()
{
if (this._verbose) System.Console.WriteLine("Checking that document is gone!");
-
- kt_document_detail documentDetail = this._kt.get_document_detail_by_name(this._session, "Root Folder/kt test folder/kt unit test1", "T");
+
+ kt_document_detail documentDetail = this._kt.get_document_detail_by_title(this._session, 1, "Root Folder/kt test folder/kt unit test1", "");
Assert.IsTrue(0 != documentDetail.status_code);
- }
-
+ }
+
+
+
+
+ [Test]
+ public void Add2PhaseDocument()
+ {
+
+
+ String filename = "kt unit test31";
+
+ if (this._verbose) System.Console.WriteLine("Adding document : " + filename);
+ FileUploader uploader = new FileUploader("http://ktdms.trunk/ktwebservice/upload.php");
+
+ uploader.upload(this._session, this._filename);
+ String tempname = uploader.getFilename();
+
+ kt_document_detail response1 = this._kt.add_document(this._session, this._folderId, filename, this._filename, "Default", tempname);
+
+ Assert.AreEqual(0, response1.status_code);
+ Assert.AreEqual(filename, response1.title);
+ Assert.AreEqual("Default", response1.document_type);
+ Assert.AreEqual("0.1", response1.version);
+ Assert.AreEqual("kt_unit_test1.txt", response1.filename);
+
+ Assert.IsFalse(response1.created_date == null);
+ Assert.IsFalse(response1.created_date == "");
+
+ Assert.AreEqual("Administrator", response1.created_by);
+
+ //Assert.IsTrue(response1.updated_date == null);
+ Assert.IsTrue("" != response1.updated_date);
+
+ Assert.AreEqual("Administrator", response1.updated_by);
+
+ Assert.IsTrue(response1.document_id > 0);
+
+ Assert.AreEqual(this._folderId, response1.folder_id);
+
+
+ Assert.AreEqual("n/a",response1.workflow);
+
+
+ Assert.AreEqual("n/a",response1.workflow_state);
+
+
+ this._docId = response1.document_id;
+
+ kt_response response = this._kt.delete_document(this._session, this._docId, "Delete - cleaning up after add");
+ Assert.AreEqual(0, response.status_code);
+ }
+
+ [Test]
+ public void DropFolder()
+ {
+ if (this._verbose) System.Console.WriteLine("Drop Folder!");
+
+ kt_response documentDetail = this._kt.delete_folder(this._session, this._folderId, "delete - cleaning up");
+ Assert.AreEqual(0, documentDetail.status_code);
+ }
+
}
}
diff --git a/ktwebservice/nunit/document_checkout.cs b/ktwebservice/nunit/document_checkout.cs
new file mode 100644
index 0000000..2816cca
--- /dev/null
+++ b/ktwebservice/nunit/document_checkout.cs
@@ -0,0 +1,120 @@
+using NUnit.Framework;
+using System;
+using System.IO;
+
+namespace MonoTests.KnowledgeTree
+{
+ [TestFixture]
+ public class CheckoutDocumentTest
+ {
+ private String _session;
+ private KnowledgeTreeService _kt;
+ private int _docId;
+ private int _folderId;
+ private String _filename;
+ private String _content;
+ private bool _verbose;
+
+
+ [SetUp]
+ public void SetUp()
+ {
+ this._kt = new KnowledgeTreeService();
+ kt_response response = this._kt.login("admin","admin","127.0.0.1");
+ this._session = response.message;
+
+ this._filename = Helper.isUnix()?"/tmp/kt_unit_test1.txt":"c:\\kt_unit_test1.txt";
+
+ String filename = "kt unit test1";
+
+ this._content = "hello world!";
+
+ Helper.writeFile(this._filename, this._content);
+
+ this._verbose = false;
+
+ this._folderId = 1;
+
+ kt_document_detail response1 = this._kt.add_base64_document(this._session, this._folderId, filename, this._filename, "Default", Helper.ConvertFileToBase64Encoding(this._filename));
+
+ if (this._verbose && response1.status_code != 0)
+ {
+ System.Console.WriteLine("Could not create file: " + this._filename);
+ }
+ this._docId = response1.document_id;
+
+
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+
+ Helper.deleteFile(this._filename);
+
+ kt_response response = this._kt.delete_document(this._session, this._docId, "Delete - cleaning up");
+ if (this._verbose && response.status_code != 0)
+ {
+ System.Console.WriteLine("Could not delete file: " + this._filename);
+ }
+
+ this._kt.logout(this._session);
+
+ }
+
+ [Test]
+ public void CheckoutDocument()
+ {
+ String filename = "kt unit test1";
+
+ if (this._verbose) System.Console.WriteLine("Checking out document : " + filename);
+
+ kt_response response = this._kt.checkout_base64_document(this._session, this._docId, "unit test - going to checkout and then undo", false);
+ Assert.AreEqual(0, response.status_code);
+
+
+ response = this._kt.undo_document_checkout(this._session, this._docId, "unit test - doing undo");
+ Assert.AreEqual(0, response.status_code);
+ }
+
+ [Test]
+ public void CheckinDocument()
+ {
+ String filename = "kt unit test1";
+
+ if (this._verbose) System.Console.WriteLine("Checking out document : " + filename);
+
+ kt_response response = this._kt.checkout_base64_document(this._session, this._docId, "unit test - going to checkout and then checkin", false);
+ Assert.AreEqual(0, response.status_code);
+
+
+ kt_document_detail checkin = this._kt.checkin_base64_document(this._session, this._docId, filename, "unit test - doing checkin", Helper.ConvertFileToBase64Encoding(this._filename), false);
+ Assert.AreEqual(0, checkin.status_code);
+
+ //assert - check data checkout
+ }
+
+ [Test]
+ public void Checkin2PhaseDocument()
+ {
+ String filename = "kt unit test1";
+
+ if (this._verbose) System.Console.WriteLine("Checking out document : " + filename);
+
+ kt_response response = this._kt.checkout_document(this._session, this._docId, "unit test - going to checkout and then checkin", false);
+ Assert.AreEqual(0, response.status_code);
+
+
+ FileUploader uploader = new FileUploader("http://ktdms.trunk/ktwebservice/upload.php");
+
+ uploader.upload(this._session, this._filename);
+ String tempname = uploader.getFilename();
+
+ kt_document_detail checkin = this._kt.checkin_document(this._session, this._docId, filename, "unit test - doing checkin", tempname, false);
+ Assert.AreEqual(0, checkin.status_code);
+ }
+
+
+
+ }
+}
diff --git a/ktwebservice/nunit/document_detail.cs b/ktwebservice/nunit/document_detail.cs
new file mode 100644
index 0000000..6406f63
--- /dev/null
+++ b/ktwebservice/nunit/document_detail.cs
@@ -0,0 +1,123 @@
+using NUnit.Framework;
+using System;
+using System.IO;
+
+namespace MonoTests.KnowledgeTree
+{
+ [TestFixture]
+ public class DocumentDetailTest
+ {
+ private String _session;
+ private KnowledgeTreeService _kt;
+ private int _docId;
+ private int _folderId;
+ private String _filename;
+ private String _content;
+ private bool _verbose;
+
+
+ [SetUp]
+ public void SetUp()
+ {
+ this._kt = new KnowledgeTreeService();
+ kt_response response = this._kt.login("admin","admin","127.0.0.1");
+ this._session = response.message;
+
+ this._filename = Helper.isUnix()?"/tmp/kt_unit_test1.txt":"c:\\kt_unit_test1.txt";
+
+ String filename = "kt unit test1";
+
+ this._content = "hello world!";
+
+ Helper.writeFile(this._filename, this._content);
+
+ this._verbose = false;
+
+ this._folderId = 1;
+
+ kt_document_detail response1 = this._kt.add_base64_document(this._session, this._folderId, filename, this._filename, "Default", Helper.ConvertFileToBase64Encoding(this._filename));
+
+ if (this._verbose && response1.status_code != 0)
+ {
+ System.Console.WriteLine("Could not create file: " + this._filename);
+ }
+ this._docId = response1.document_id;
+
+
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+
+ Helper.deleteFile(this._filename);
+
+ kt_response response = this._kt.delete_document(this._session, this._docId, "Delete - cleaning up");
+ if (this._verbose && response.status_code != 0)
+ {
+ System.Console.WriteLine("Could not delete file: " + this._filename);
+ }
+
+ this._kt.logout(this._session);
+
+ }
+
+ [Test]
+ public void NonExistantDocumentTest()
+ {
+ kt_document_detail response = this._kt.get_document_detail(this._session, -1,"");
+ Assert.IsFalse(response.status_code == 0);
+ }
+
+ [Test]
+ public void DocumentExistanceTest()
+ {
+ kt_document_detail response = this._kt.get_document_detail(this._session, this._docId,"");
+ Assert.AreEqual(0, response.status_code);
+ Assert.AreEqual(this._docId, response.document_id);
+ }
+
+ [Test]
+ public void GetDetailByTitleTest()
+ {
+ kt_document_detail response = this._kt.get_document_detail_by_name(this._session, 1, "Root Folder/kt unit test1", "T","");
+
+ Assert.AreEqual(0, response.status_code);
+ Assert.AreEqual(this._docId, response.document_id);
+ }
+
+
+ [Test]
+ public void GetDetailByTitle2Test()
+ {
+ kt_document_detail response = this._kt.get_document_detail_by_title(this._session, 1, "Root Folder/kt unit test1", "");
+
+ Assert.AreEqual(0, response.status_code);
+ Assert.AreEqual(this._docId, response.document_id);
+ }
+
+ [Test]
+ public void GetDetailByFileTest()
+ {
+ kt_document_detail response = this._kt.get_document_detail_by_name(this._session, 1, "Root Folder/kt_unit_test1.txt", "F","");
+
+ Assert.AreEqual(0, response.status_code);
+ Assert.AreEqual(this._docId, response.document_id);
+ }
+ [Test]
+ public void GetDetailByFile2Test()
+ {
+ kt_document_detail response = this._kt.get_document_detail_by_filename(this._session, 1, "Root Folder/kt_unit_test1.txt", "");
+
+ Assert.AreEqual(0, response.status_code);
+ Assert.AreEqual(this._docId, response.document_id);
+ }
+
+ [Test]
+ public void GetDetailByUnknownNameTest()
+ {
+ kt_document_detail response = this._kt.get_document_detail_by_name(this._session, 1, "Root Folder/kt_unit_test1.ssssdasdasd", "F","");
+ Assert.IsFalse(response.status_code == 0);
+ }
+ }
+}
diff --git a/ktwebservice/nunit/document_download.cs b/ktwebservice/nunit/document_download.cs
new file mode 100644
index 0000000..8c6ab6b
--- /dev/null
+++ b/ktwebservice/nunit/document_download.cs
@@ -0,0 +1,85 @@
+using NUnit.Framework;
+using System;
+using System.IO;
+using System.Net;
+
+namespace MonoTests.KnowledgeTree
+{
+
+
+ [TestFixture]
+ public class DocumentSystemMetadataTest
+ {
+ private String _session;
+ private KnowledgeTreeService _kt;
+ private int _folderId;
+ private bool _verbose;
+ private Document _doc1;
+
+
+ [SetUp]
+ public void SetUp()
+ {
+ this._kt = new KnowledgeTreeService();
+ kt_response response = this._kt.login("admin","admin","127.0.0.1");
+ this._session = response.message;
+
+ this._folderId = 1;
+
+
+ this._doc1 = new Document(1, this._session, this._kt, this._verbose,false);
+ this._doc1.createFile(this._folderId);
+
+
+ this._verbose = true;
+
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ this._doc1.deleteFile();
+
+ this._kt.logout(this._session);
+
+ }
+
+ [Test]
+ public void DownloadTest()
+ {
+ kt_response update_resp = this._kt.download_document(this._session, this._doc1.docId );
+ Assert.AreEqual(0, update_resp.status_code);
+
+ System.Console.WriteLine("Download...." + update_resp.message);
+
+ String uri = update_resp.message;
+
+ HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(uri);
+
+ WebResponse response = webrequest.GetResponse();
+ StreamReader sr = new StreamReader(response.GetResponseStream());
+ String content = sr.ReadToEnd();
+
+ System.Console.WriteLine(content);
+
+
+ }
+
+ [Test]
+ public void SmallDownloadTest()
+ {
+ kt_response update_resp = this._kt.download_small_document(this._session, this._doc1.docId );
+ Assert.AreEqual(0, update_resp.status_code);
+
+ String filename = Helper.isUnix()?("/tmp/kt_unit_test_tmp.txt"):("c:\\kt_unit_test_tmp.txt");
+
+
+
+ long length = Helper.ConvertBase64EncodingToFile(update_resp.message, filename);
+ //System.Console.WriteLine(Helper.readFile(filename));
+
+ // TODO - why???
+ //Assert.AreEqual(length, this._doc1.filesize);
+ }
+ }
+}
diff --git a/ktwebservice/nunit/document_history.cs b/ktwebservice/nunit/document_history.cs
new file mode 100644
index 0000000..9302a6c
--- /dev/null
+++ b/ktwebservice/nunit/document_history.cs
@@ -0,0 +1,50 @@
+using NUnit.Framework;
+using System;
+using System.IO;
+
+namespace MonoTests.KnowledgeTree
+{
+ [TestFixture]
+ public class DocumentHistoryTest
+ {
+ private String _session;
+ private KnowledgeTreeService _kt;
+ private int _folderId;
+ private bool _verbose;
+ private Document _doc1;
+
+ [SetUp]
+ public void SetUp()
+ {
+ this._kt = new KnowledgeTreeService();
+ kt_response response = this._kt.login("admin","admin","127.0.0.1");
+ this._session = response.message;
+
+ this._folderId = 1;
+
+ this._doc1 = new Document(1, this._session, this._kt, this._verbose,false);
+ this._doc1.createFile(this._folderId);
+
+ this._verbose = true;
+
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ this._doc1.deleteFile();
+
+ this._kt.logout(this._session);
+ }
+
+ [Test]
+ public void ChangeTypeTest()
+ {
+ kt_document_version_history_response version_resp = this._kt.get_document_version_history(this._session, this._doc1.docId);
+ Assert.AreEqual(0, version_resp.status_code);
+
+ kt_document_transaction_history_response history_resp = this._kt.get_document_transaction_history(this._session, this._doc1.docId);
+ Assert.AreEqual(0, history_resp.status_code);
+ }
+ }
+}
diff --git a/ktwebservice/nunit/document_links.cs b/ktwebservice/nunit/document_links.cs
new file mode 100644
index 0000000..272a5ff
--- /dev/null
+++ b/ktwebservice/nunit/document_links.cs
@@ -0,0 +1,77 @@
+using NUnit.Framework;
+using System;
+using System.IO;
+
+namespace MonoTests.KnowledgeTree
+{
+
+
+ [TestFixture]
+ public class DocumentLinkTest
+ {
+ private String _session;
+ private KnowledgeTreeService _kt;
+ private int _folderId;
+ private bool _verbose;
+ private Document _doc1;
+ private Document _doc2;
+
+
+ [SetUp]
+ public void SetUp()
+ {
+ this._kt = new KnowledgeTreeService();
+ kt_response response = this._kt.login("admin","admin","127.0.0.1");
+ this._session = response.message;
+
+ this._folderId = 1;
+
+
+ this._doc1 = new Document(1, this._session, this._kt, this._verbose, false);
+ this._doc1.createFile(this._folderId);
+ this._doc2 = new Document(2, this._session, this._kt, this._verbose, false);
+ this._doc2.createFile(this._folderId);
+
+
+ this._verbose = true;
+
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ this._doc1.deleteFile();
+ this._doc2.deleteFile();
+
+ this._kt.logout(this._session);
+
+ }
+
+ [Test]
+ public void LinkingTest()
+ {
+ kt_linked_document_response linkresp = this._kt.get_document_links(this._session, this._doc1.docId);
+ Assert.AreEqual(0, linkresp.status_code);
+ Assert.AreEqual(null, linkresp.links);
+
+ kt_response response = this._kt.link_documents(this._session, this._doc1.docId, this._doc2.docId, "Reference");
+ Assert.AreEqual(0, response.status_code);
+
+ linkresp = this._kt.get_document_links(this._session, this._doc1.docId);
+ Assert.AreEqual(0, linkresp.status_code);
+ Assert.AreEqual(this._doc1.docId, linkresp.parent_document_id);
+ Assert.AreEqual(1, linkresp.links.Length);
+ Assert.AreEqual(this._doc2.docId, linkresp.links[0].document_id);
+
+ response = this._kt.unlink_documents(this._session, this._doc1.docId, this._doc2.docId);
+ Assert.AreEqual(0, response.status_code);
+
+ linkresp = this._kt.get_document_links(this._session, this._doc1.docId);
+ Assert.AreEqual(0, linkresp.status_code);
+ Assert.AreEqual(null, linkresp.links);
+
+ }
+
+
+ }
+}
diff --git a/ktwebservice/nunit/document_metadata.cs b/ktwebservice/nunit/document_metadata.cs
new file mode 100644
index 0000000..b7b265b
--- /dev/null
+++ b/ktwebservice/nunit/document_metadata.cs
@@ -0,0 +1,125 @@
+using NUnit.Framework;
+using System;
+using System.IO;
+
+namespace MonoTests.KnowledgeTree
+{
+ [TestFixture]
+ public class DocumentMetadataTest
+ {
+ private String _session;
+ private KnowledgeTreeService _kt;
+ private int _docId;
+ private int _folderId;
+ private String _filename;
+ private String _content;
+ private bool _verbose;
+
+
+ [SetUp]
+ public void SetUp()
+ {
+ this._kt = new KnowledgeTreeService();
+
+ kt_response response = this._kt.login("admin","admin","127.0.0.1");
+ this._session = response.message;
+
+ this._filename = Helper.isUnix()?"/tmp/kt_unit_test1.txt":"c:\\kt_unit_test1.txt";
+
+ String filename = "kt unit test1";
+
+ this._content = "hello world!";
+
+ Helper.writeFile(this._filename, this._content);
+
+ this._verbose = false;
+
+ this._folderId = 1;
+
+ kt_document_detail response1 = this._kt.add_base64_document(this._session, this._folderId, filename, this._filename, "Default", Helper.ConvertFileToBase64Encoding(this._filename));
+
+ if (this._verbose && response1.status_code != 0)
+ {
+ System.Console.WriteLine("Could not create file: " + this._filename);
+ }
+ this._docId = response1.document_id;
+
+
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+
+ Helper.deleteFile(this._filename);
+
+ kt_response response = this._kt.delete_document(this._session, this._docId, "Delete - cleaning up");
+ if (this._verbose && response.status_code != 0)
+ {
+ System.Console.WriteLine("Could not delete file: " + this._filename);
+ }
+
+ this._kt.logout(this._session);
+
+ }
+
+ [Test]
+ public void GetDocumentTypesTest()
+ {
+ kt_document_types_response doc_types = this._kt.get_document_types(this._session);
+ Assert.AreEqual(0, doc_types.status_code);
+ }
+
+ [Test]
+ public void GetDocumentTypeMetadataTest()
+ {
+
+ kt_metadata_response metadata = this._kt.get_document_type_metadata(this._session, "Default");
+ Assert.AreEqual(0, metadata.status_code);
+ }
+
+ [Test]
+ public void GetDocumentMetadataTest()
+ {
+
+ kt_metadata_response metadata = this._kt.get_document_metadata(this._session, this._docId);
+ Assert.AreEqual(0, metadata.status_code);
+ }
+
+ [Test]
+ public void UpdateDocumentMetadataTest()
+ {
+ kt_metadata_fieldset[] fs = new kt_metadata_fieldset[1];
+ fs[0] = new kt_metadata_fieldset();
+ fs[0].fieldset = "General information";
+ fs[0].fields = new kt_metadata_field[3];
+ fs[0].fields[0] = new kt_metadata_field();
+ fs[0].fields[0].name = "Document Author";
+ fs[0].fields[0].value = "Joe Soap";
+ fs[0].fields[1] = new kt_metadata_field();
+ fs[0].fields[1].name = "Category";
+ fs[0].fields[1].value = "Technical";
+ fs[0].fields[2] = new kt_metadata_field();
+ fs[0].fields[2].name = "Media Type";
+ fs[0].fields[2].value = "Text";
+
+ kt_sysdata_item[] sysdata = new kt_sysdata_item[0];
+
+ kt_document_detail update_resp = this._kt.update_document_metadata(this._session, this._docId, fs, sysdata);
+ Assert.AreEqual(0, update_resp.status_code);
+ Assert.AreEqual("General information", update_resp.metadata[1].fieldset);
+
+ Assert.AreEqual("Document Author", update_resp.metadata[1].fields[0].name);
+ Assert.AreEqual("Joe Soap", update_resp.metadata[1].fields[0].value);
+
+ Assert.AreEqual("Category", update_resp.metadata[1].fields[1].name);
+ Assert.AreEqual("Technical", update_resp.metadata[1].fields[1].value);
+
+ Assert.AreEqual("Media Type", update_resp.metadata[1].fields[2].name);
+ Assert.AreEqual("Text", update_resp.metadata[1].fields[2].value);
+
+
+ }
+
+ }
+}
diff --git a/ktwebservice/nunit/document_owner.cs b/ktwebservice/nunit/document_owner.cs
new file mode 100644
index 0000000..56c8677
--- /dev/null
+++ b/ktwebservice/nunit/document_owner.cs
@@ -0,0 +1,53 @@
+using NUnit.Framework;
+using System;
+using System.IO;
+
+namespace MonoTests.KnowledgeTree
+{
+ [TestFixture]
+ public class DocumentOwnerTest
+ {
+ private String _session;
+ private KnowledgeTreeService _kt;
+ private int _folderId;
+ private bool _verbose;
+ private Document _doc1;
+
+ [SetUp]
+ public void SetUp()
+ {
+ this._kt = new KnowledgeTreeService();
+ kt_response response = this._kt.login("admin","admin","127.0.0.1");
+ this._session = response.message;
+
+ this._folderId = 1;
+
+
+ this._doc1 = new Document(1, this._session, this._kt, this._verbose, false);
+ this._doc1.createFile(this._folderId);
+
+ this._verbose = true;
+
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ this._doc1.deleteFile();
+
+ this._kt.logout(this._session);
+
+ }
+
+ [Test]
+ public void ChangeOwnerTest()
+ {
+ kt_document_detail response = this._kt.change_document_owner(this._session, this._doc1.docId, "anonymous", "just trying to change owner");
+ Assert.AreEqual(0, response.status_code);
+
+ // test to non existant user
+ response = this._kt.change_document_owner(this._session, this._doc1.docId, "blah", "just trying to change owner");
+ Assert.IsFalse(0 == response.status_code);
+ }
+ }
+}
diff --git a/ktwebservice/nunit/document_rename.cs b/ktwebservice/nunit/document_rename.cs
new file mode 100644
index 0000000..b6f8190
--- /dev/null
+++ b/ktwebservice/nunit/document_rename.cs
@@ -0,0 +1,52 @@
+using NUnit.Framework;
+using System;
+using System.IO;
+
+namespace MonoTests.KnowledgeTree
+{
+ [TestFixture]
+ public class DocumentRenameTest
+ {
+ private String _session;
+ private KnowledgeTreeService _kt;
+ private int _folderId;
+ private bool _verbose;
+ private Document _doc1;
+
+ [SetUp]
+ public void SetUp()
+ {
+ this._kt = new KnowledgeTreeService();
+ kt_response response = this._kt.login("admin","admin","127.0.0.1");
+ this._session = response.message;
+
+ this._folderId = 1;
+
+ this._doc1 = new Document(1, this._session, this._kt, this._verbose,false);
+ this._doc1.createFile(this._folderId);
+
+ this._verbose = true;
+
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ this._doc1.deleteFile();
+
+ this._kt.logout(this._session);
+ }
+
+ [Test]
+ public void RenameTest()
+ {
+ kt_document_detail response = this._kt.rename_document_filename(this._session, this._doc1.docId, "test fname");
+ Assert.AreEqual(0, response.status_code);
+ Assert.AreEqual("test fname", response.filename);
+
+ response = this._kt.rename_document_title(this._session, this._doc1.docId, "test title");
+ Assert.AreEqual(0, response.status_code);
+ Assert.AreEqual("test title", response.title);
+ }
+ }
+}
diff --git a/ktwebservice/nunit/document_system_metadata.cs b/ktwebservice/nunit/document_system_metadata.cs
new file mode 100644
index 0000000..729b2e2
--- /dev/null
+++ b/ktwebservice/nunit/document_system_metadata.cs
@@ -0,0 +1,187 @@
+using NUnit.Framework;
+using System;
+using System.IO;
+
+namespace MonoTests.KnowledgeTree
+{
+
+
+ [TestFixture]
+ public class DocumentSystemMetadataTest
+ {
+ private String _session;
+ private KnowledgeTreeService _kt;
+ private int _folderId;
+ private bool _verbose;
+ private Document _doc1;
+ private Document _doc2;
+
+
+ [SetUp]
+ public void SetUp()
+ {
+ this._kt = new KnowledgeTreeService();
+ kt_response response = this._kt.login("admin","admin","127.0.0.1");
+ this._session = response.message;
+
+ this._folderId = 1;
+
+
+ this._doc1 = new Document(1, this._session, this._kt, this._verbose,false);
+ this._doc1.createFile(this._folderId);
+ this._doc2 = new Document(2, this._session, this._kt, this._verbose,true);
+
+
+ this._verbose = true;
+
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ this._doc1.deleteFile();
+ this._doc2.deleteFile();
+
+ this._kt.logout(this._session);
+
+ }
+
+ [Test]
+ public void UpdateDocumentMetadataTest()
+ {
+
+ kt_metadata_fieldset[] fs = new kt_metadata_fieldset[1];
+ fs[0] = new kt_metadata_fieldset();
+ fs[0].fieldset = "General information";
+ fs[0].fields = new kt_metadata_field[3];
+ fs[0].fields[0] = new kt_metadata_field();
+ fs[0].fields[0].name = "Document Author";
+ fs[0].fields[0].value = "Joe Soap";
+ fs[0].fields[1] = new kt_metadata_field();
+ fs[0].fields[1].name = "Category";
+ fs[0].fields[1].value = "Technical";
+ fs[0].fields[2] = new kt_metadata_field();
+ fs[0].fields[2].name = "Media Type";
+ fs[0].fields[2].value = "Text";
+
+ kt_sysdata_item[] sysdata = new kt_sysdata_item[2];
+ sysdata[0] = new kt_sysdata_item();
+ sysdata[0].name = "created_by";
+ sysdata[0].value = "Anonymous";
+ sysdata[1] = new kt_sysdata_item();
+ sysdata[1].name = "created_date";
+ sysdata[1].value = "2007-01-17";
+
+
+ kt_document_detail update_resp = this._kt.update_document_metadata(this._session, this._doc1.docId, fs, sysdata);
+ Assert.AreEqual(0, update_resp.status_code);
+ Assert.AreEqual("General information", update_resp.metadata[1].fieldset);
+
+ Assert.AreEqual("Document Author", update_resp.metadata[1].fields[0].name);
+ Assert.AreEqual("Joe Soap", update_resp.metadata[1].fields[0].value);
+
+ Assert.AreEqual("Category", update_resp.metadata[1].fields[1].name);
+ Assert.AreEqual("Technical", update_resp.metadata[1].fields[1].value);
+
+ Assert.AreEqual("Media Type", update_resp.metadata[1].fields[2].name);
+ Assert.AreEqual("Text", update_resp.metadata[1].fields[2].value);
+
+ Assert.AreEqual("Anonymous", update_resp.created_by);
+ Assert.AreEqual("2007-01-17 00:00:00", update_resp.created_date);
+ }
+
+ [Test]
+ public void AddSmallDocumentWithMetadataTest()
+ {
+ kt_metadata_fieldset[] fs = new kt_metadata_fieldset[1];
+ fs[0] = new kt_metadata_fieldset();
+ fs[0].fieldset = "General information";
+ fs[0].fields = new kt_metadata_field[3];
+ fs[0].fields[0] = new kt_metadata_field();
+ fs[0].fields[0].name = "Document Author";
+ fs[0].fields[0].value = "Joe Soap";
+ fs[0].fields[1] = new kt_metadata_field();
+ fs[0].fields[1].name = "Category";
+ fs[0].fields[1].value = "Technical";
+ fs[0].fields[2] = new kt_metadata_field();
+ fs[0].fields[2].name = "Media Type";
+ fs[0].fields[2].value = "Text";
+
+ kt_sysdata_item[] sysdata = new kt_sysdata_item[2];
+ sysdata[0] = new kt_sysdata_item();
+ sysdata[0].name = "created_by";
+ sysdata[0].value = "Anonymous";
+ sysdata[1] = new kt_sysdata_item();
+ sysdata[1].name = "created_date";
+ sysdata[1].value = "2007-01-17";
+
+ this._doc2.local=false;
+ kt_document_detail update_resp = this._doc2.createFileWithMetadata(this._folderId, fs, sysdata);
+
+ Assert.AreEqual(0, update_resp.status_code);
+ Assert.AreEqual("General information", update_resp.metadata[1].fieldset);
+
+ Assert.AreEqual("Document Author", update_resp.metadata[1].fields[0].name);
+ Assert.AreEqual("Joe Soap", update_resp.metadata[1].fields[0].value);
+
+ Assert.AreEqual("Category", update_resp.metadata[1].fields[1].name);
+ Assert.AreEqual("Technical", update_resp.metadata[1].fields[1].value);
+
+ Assert.AreEqual("Media Type", update_resp.metadata[1].fields[2].name);
+ Assert.AreEqual("Text", update_resp.metadata[1].fields[2].value);
+
+ Assert.AreEqual("Anonymous", update_resp.created_by);
+ Assert.AreEqual("2007-01-17 00:00:00", update_resp.created_date);
+ }
+
+ [Test]
+ public void CheckinSmallDocumentWithMetadataTest()
+ {
+ kt_metadata_fieldset[] fs = new kt_metadata_fieldset[1];
+ fs[0] = new kt_metadata_fieldset();
+ fs[0].fieldset = "General information";
+ fs[0].fields = new kt_metadata_field[3];
+ fs[0].fields[0] = new kt_metadata_field();
+ fs[0].fields[0].name = "Document Author";
+ fs[0].fields[0].value = "Joe Soap";
+ fs[0].fields[1] = new kt_metadata_field();
+ fs[0].fields[1].name = "Category";
+ fs[0].fields[1].value = "Technical";
+ fs[0].fields[2] = new kt_metadata_field();
+ fs[0].fields[2].name = "Media Type";
+ fs[0].fields[2].value = "Text";
+
+ kt_sysdata_item[] sysdata = new kt_sysdata_item[2];
+ sysdata[0] = new kt_sysdata_item();
+ sysdata[0].name = "created_by";
+ sysdata[0].value = "Anonymous";
+ sysdata[1] = new kt_sysdata_item();
+ sysdata[1].name = "created_date";
+ sysdata[1].value = "2007-01-17";
+
+ kt_response resp = this._kt.checkout_base64_document(this._session, this._doc1.docId, "test checkin", false);
+ Assert.AreEqual(0, resp.status_code);
+
+
+
+ kt_document_detail update_resp = this._doc1.checkinFileWithMetadata(this._folderId, fs, sysdata);
+
+ Assert.AreEqual(0, update_resp.status_code);
+ Assert.AreEqual("General information", update_resp.metadata[1].fieldset);
+
+ Assert.AreEqual("Document Author", update_resp.metadata[1].fields[0].name);
+ Assert.AreEqual("Joe Soap", update_resp.metadata[1].fields[0].value);
+
+ Assert.AreEqual("Category", update_resp.metadata[1].fields[1].name);
+ Assert.AreEqual("Technical", update_resp.metadata[1].fields[1].value);
+
+ Assert.AreEqual("Media Type", update_resp.metadata[1].fields[2].name);
+ Assert.AreEqual("Text", update_resp.metadata[1].fields[2].value);
+
+ Assert.AreEqual("Anonymous", update_resp.created_by);
+ Assert.AreEqual("2007-01-17 00:00:00", update_resp.created_date);
+ }
+
+
+ }
+}
diff --git a/ktwebservice/nunit/document_type.cs b/ktwebservice/nunit/document_type.cs
new file mode 100644
index 0000000..404072c
--- /dev/null
+++ b/ktwebservice/nunit/document_type.cs
@@ -0,0 +1,62 @@
+using NUnit.Framework;
+using System;
+using System.IO;
+
+namespace MonoTests.KnowledgeTree
+{
+ [TestFixture]
+ public class DocumentOwnerTest
+ {
+ private String _session;
+ private KnowledgeTreeService _kt;
+ private int _folderId;
+ private bool _verbose;
+ private Document _doc1;
+
+ [SetUp]
+ public void SetUp()
+ {
+ this._kt = new KnowledgeTreeService();
+ kt_response response = this._kt.login("admin","admin","127.0.0.1");
+ this._session = response.message;
+
+ this._folderId = 1;
+
+
+ this._doc1 = new Document(1, this._session, this._kt, this._verbose,false);
+ this._doc1.createFile(this._folderId);
+
+ this._verbose = true;
+
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ this._doc1.deleteFile();
+
+ this._kt.logout(this._session);
+
+ }
+
+ [Test]
+ public void ChangeTypeTest()
+ {
+ // NOTE: Create the following type 'NewType' via the admin pages
+
+ kt_document_detail response = this._kt.change_document_type(this._session, this._doc1.docId, "NewType");
+ Assert.AreEqual(0, response.status_code);
+ if (0 != response.status_code)
+ {
+ System.Console.WriteLine("Please check that the document type 'NewType' exists in the database! This test should pass if it exists!");
+ System.Console.WriteLine("SQL: insert into document_types_lookup(name) values('NewType');");
+ }
+
+ // NOTE: we need to test with an unknown type as well
+
+ response = this._kt.change_document_type(this._session, this._doc1.docId, "UnknownType");
+ Assert.IsTrue(0 != response.status_code);
+
+ }
+ }
+}
diff --git a/ktwebservice/nunit/document_workflow.cs b/ktwebservice/nunit/document_workflow.cs
new file mode 100644
index 0000000..f184492
--- /dev/null
+++ b/ktwebservice/nunit/document_workflow.cs
@@ -0,0 +1,98 @@
+using NUnit.Framework;
+using System;
+using System.IO;
+
+namespace MonoTests.KnowledgeTree
+{
+ [TestFixture]
+ public class WorkflowTest
+ {
+ private String _session;
+ private KnowledgeTreeService _kt;
+ private int _folderId;
+ private bool _verbose;
+ private Document _doc1;
+
+ [SetUp]
+ public void SetUp()
+ {
+ this._kt = new KnowledgeTreeService();
+ kt_response response = this._kt.login("admin","admin","127.0.0.1");
+ this._session = response.message;
+
+ this._folderId = 1;
+
+
+ this._doc1 = new Document(1, this._session, this._kt, this._verbose, false);
+ this._doc1.createFile(this._folderId);
+
+ this._verbose = true;
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ this._doc1.deleteFile();
+ this._kt.logout(this._session);
+ }
+
+ [Test]
+ public void NonExistantWorkflowTest()
+ {
+ kt_document_detail response = this._kt.start_document_workflow(this._session, this._doc1.docId, "Non Existant Workflow");
+ Assert.IsTrue(0 != response.status_code);
+ }
+
+ [Test]
+ public void StartWorkflowTest()
+ {
+ kt_document_detail response = this._kt.start_document_workflow(this._session, this._doc1.docId, "Review Process");
+ Assert.AreEqual(0, response.status_code);
+ Assert.AreEqual("Review Process", response.workflow);
+ }
+
+ [Test]
+ public void StopWorkflowTest()
+ {
+ kt_document_detail response = this._kt.start_document_workflow(this._session, this._doc1.docId, "Review Process");
+ Assert.AreEqual(0, response.status_code);
+ Assert.AreEqual("Review Process", response.workflow);
+
+ response = this._kt.delete_document_workflow(this._session, this._doc1.docId);
+ Assert.AreEqual(0, response.status_code);
+ Assert.AreEqual("n/a", response.workflow);
+ }
+
+ [Test]
+ public void GetTransitionsTest()
+ {
+ kt_document_detail response = this._kt.start_document_workflow(this._session, this._doc1.docId, "Review Process");
+ Assert.AreEqual(0, response.status_code);
+ Assert.AreEqual("Review Process", response.workflow);
+
+ kt_workflow_transitions_response trans_resp = this._kt.get_document_workflow_transitions(this._session, this._doc1.docId);
+ Assert.AreEqual(0, trans_resp.status_code);
+ Assert.AreEqual(1, trans_resp.transitions.Length);
+ Assert.AreEqual("Request Approval", trans_resp.transitions[0]);
+ }
+
+ [Test]
+ public void WorkflowTransitionTest()
+ {
+ kt_document_detail response = this._kt.start_document_workflow(this._session, this._doc1.docId, "Review Process");
+ Assert.AreEqual(0, response.status_code);
+ Assert.AreEqual("Review Process", response.workflow);
+ Assert.AreEqual("Draft", response.workflow_state);
+
+ response = this._kt.perform_document_workflow_transition(this._session, this._doc1.docId, "Request Approval", "Please approve me");
+ Assert.AreEqual(0, response.status_code);
+ Assert.AreEqual("Review Process", response.workflow);
+ Assert.AreEqual("Approval", response.workflow_state);
+
+ response = this._kt.perform_document_workflow_transition(this._session, this._doc1.docId, "Approve", "Ok!");
+ Assert.AreEqual(0, response.status_code);
+ Assert.AreEqual("Review Process", response.workflow);
+ Assert.AreEqual("Published", response.workflow_state);
+ }
+ }
+}
diff --git a/ktwebservice/nunit/folder.cs b/ktwebservice/nunit/folder.cs
index ad90cae..7630489 100644
--- a/ktwebservice/nunit/folder.cs
+++ b/ktwebservice/nunit/folder.cs
@@ -3,39 +3,36 @@ using System;
using System.IO;
namespace MonoTests.KnowledgeTree
-{
+{
[TestFixture]
- public class FolderTest
+ public class FolderTest
{
-
+
private String _session;
private KnowledgeTreeService _kt;
private int _folder_id;
private int _subfolder_id;
- private bool _skip;
-
+
[SetUp]
- public void SetUp()
+ public void SetUp()
{
- this._skip = true;
- if (this._skip) return;
- this._kt = new KnowledgeTreeService();
+ this._kt = new KnowledgeTreeService();
kt_response response = this._kt.login("admin","admin","127.0.0.1");
- this._session = response.message;
-
+ this._session = response.message;
+
}
[TearDown]
- public void TearDown()
+ public void TearDown()
{
- if (this._skip) return;
+
this._kt.logout(this._session);
}
-
+
[Test]
- public void GetFolderDetail()
+ public void GetFolderDetail()
{
- if (this._skip) return;
+
kt_folder_detail response = this._kt.get_folder_detail(this._session, 1);
Assert.AreEqual(0, response.status_code);
Assert.AreEqual(1, response.id);
@@ -43,49 +40,49 @@ namespace MonoTests.KnowledgeTree
Assert.AreEqual(0, response.parent_id);
Assert.AreEqual("/Root Folder", response.full_path); // ??? DOESNT SEEM CONSISTENT - should be 'Root Filder'
}
-
+
[Test]
- public void AddFolder()
+ public void AddFolder()
{
- if (this._skip) return;
+
kt_folder_detail response = this._kt.create_folder(this._session, 1, "kt_unit_test");
Assert.AreEqual(0,response.status_code);
-
+
this._folder_id = response.id;
-
+
response = this._kt.create_folder(this._session, this._folder_id, "subfolder");
Assert.AreEqual(0,response.status_code);
-
+
this._subfolder_id = response.id;
-
- }
+
+ }
[Test]
- public void GetFolderByName()
+ public void GetFolderByName()
{
- if (this._skip) return;
+
kt_folder_detail response = this._kt.get_folder_detail_by_name(this._session, "/kt_unit_test");
Assert.AreEqual(0,response.status_code);
- Assert.AreEqual(this._folder_id, response.id);
+ Assert.AreEqual(this._folder_id, response.id);
response = this._kt.get_folder_detail_by_name(this._session, "kt_unit_test");
Assert.AreEqual(0,response.status_code);
- Assert.AreEqual(this._folder_id, response.id);
+ Assert.AreEqual(this._folder_id, response.id);
response = this._kt.get_folder_detail_by_name(this._session, "kt_unit_test/subfolder");
Assert.AreEqual(0,response.status_code);
- Assert.AreEqual(this._subfolder_id,response.id);
+ Assert.AreEqual(this._subfolder_id,response.id);
response = this._kt.get_folder_detail_by_name(this._session, "kt_unit_test/subfolder2");
Assert.IsFalse(response.status_code == 0);
-
+
}
-
+
[Test]
- public void GetFolderContents()
+ public void GetFolderContents()
{
- if (this._skip) return;
+
kt_folder_contents response = this._kt.get_folder_contents(this._session, this._folder_id, 1, "DF");
Assert.AreEqual(0,response.status_code);
Assert.AreEqual(this._folder_id,response.folder_id);
@@ -98,45 +95,29 @@ namespace MonoTests.KnowledgeTree
Assert.AreEqual("subfolder", response2.folder_name);
Assert.AreEqual("Root Folder/kt_unit_test/subfolder", response2.full_path);
}
-
+
[Test]
- public void RenameFolder()
+ public void RenameFolder()
{
- if (this._skip) return;
+
kt_response response = this._kt.rename_folder(this._session, this._subfolder_id, "subfolder2");
Assert.AreEqual(0, response.status_code);
-
+
kt_folder_detail response2 = this._kt.get_folder_detail(this._session, this._subfolder_id);
Assert.AreEqual(0, response2.status_code);
Assert.AreEqual(this._subfolder_id, response2.id);
Assert.AreEqual("subfolder2", response2.folder_name);
Assert.AreEqual(this._folder_id, response2.parent_id);
- Assert.AreEqual("Root Folder/kt_unit_test/subfolder2", response2.full_path);
- }
+ Assert.AreEqual("Root Folder/kt_unit_test/subfolder2", response2.full_path);
+ }
[Test]
- public void CopyFolder()
- {
- if (this._skip) return;
- // TODO copy
- //
- }
-
- [Test]
- public void MoveFolder()
+ public void RemoveFolder()
{
- if (this._skip) return;
- // TODO move
- //
- }
- [Test]
- public void RemoveFolder()
- {
- if (this._skip) return;
kt_response response = this._kt.delete_folder(this._session, this._folder_id, "unit testing remove");
Assert.AreEqual(0, response.status_code);
- }
+ }
}
}
diff --git a/ktwebservice/nunit/helper.cs b/ktwebservice/nunit/helper.cs
new file mode 100755
index 0000000..d66ece8
--- /dev/null
+++ b/ktwebservice/nunit/helper.cs
@@ -0,0 +1,400 @@
+using System;
+using System.Text;
+using System.Net;
+using System.IO;
+
+namespace MonoTests.KnowledgeTree
+{
+ public class FileUploader
+ {
+ private String boundary;
+ private String uri;
+ private String filename;
+
+
+ public FileUploader(String uri)
+ {
+ this.uri = uri;
+ this.boundary = "----" + DateTime.Now.Ticks.ToString("x");
+ }
+
+ public String getFilename()
+ {
+ return this.filename;
+ }
+
+
+ public void upload(String sessionid, String filename)
+ {
+ String displayname = Path.GetFileName(filename);
+ StringBuilder header = new StringBuilder();
+
+ header.Append("--" + boundary + "\r\n" + "Content-Disposition: form-data; name=\"session_id\"\r\n\r\n" + sessionid + "\r\n");
+ header.Append("--" + boundary + "\r\n" + "Content-Disposition: form-data; name=\"action\"\r\n\r\nA\r\n");
+ header.Append("--" + boundary + "\r\n" + "Content-Disposition: form-data; name=\"output\"\r\n\r\nxml\r\n");
+
+ header.Append("--" + boundary + "\r\n");
+ header.Append("Content-Disposition: form-data; name=\"name\";");
+ header.Append("filename=\"" + displayname + "\"\r\nContent-Type: application/octet-stream\r\n\r\n");
+
+
+ HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(this.uri);
+ webrequest.ContentType = "multipart/form-data; boundary=" + boundary;
+ webrequest.Method = "POST";
+
+
+ byte[] headerArray = Encoding.UTF8.GetBytes(header.ToString());
+ byte[] boundaryArray = Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
+
+ FileStream file = new FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read);
+
+ long filesize = file.Length;
+ webrequest.ContentLength = headerArray.Length + filesize + boundaryArray.Length;
+
+ Stream requestStream = webrequest.GetRequestStream();
+ requestStream.Write(headerArray, 0, headerArray.Length);
+
+ byte[] buffer = new byte[10240];
+
+ int read = 0;
+
+ while ((read = file.Read(buffer, 0, buffer.Length)) > 0)
+ {
+
+ requestStream.Write(buffer, 0, read);
+ }
+
+ requestStream.Write(boundaryArray, 0, boundaryArray.Length);
+
+
+ WebResponse response = webrequest.GetResponse();
+ StreamReader sr = new StreamReader(response.GetResponseStream());
+ String xml = sr.ReadToEnd();
+ //System.Console.WriteLine("xml: " + xml);
+
+
+
+ if (xml.IndexOf("0") != -1)
+ {
+ long tmp = this.tokenInt("filesize",xml);
+ if (tmp != filesize)
+ {
+ throw new Exception("Filesize should be " + filesize + " but appears to be "+ tmp);
+ }
+
+ tmp = this.tokenInt("error",xml);
+ if (tmp > 0)
+ {
+ throw new Exception("The server reported error code " + tmp + " for the file upload");
+ }
+ this.filename = this.tokenString("filename",xml);
+ // yay, all is good!
+ return;
+ }
+
+ String msg = this.tokenString("msg", xml);
+ long error = this.tokenInt("error", xml);
+ if (error > 0)
+ {
+ throw new Exception("The server reported error code " + error + " for the file upload");
+ }
+
+ throw new Exception("Upload error: " + msg);
+
+ }
+
+ private String tokenString(String token, String xml)
+ {
+ int tokStart = xml.IndexOf("<"+token+">") + token.Length+2;
+ int tokEnd = xml.IndexOf(""+token+">");
+ if (tokEnd == -1) return "";
+
+ String value = xml.Substring(tokStart, tokEnd-tokStart);
+ //System.Console.WriteLine(token + ": " + value);
+ return value;
+ }
+
+ private long tokenInt(String token, String xml)
+ {
+ String value = this.tokenString(token, xml);
+ if (value.Equals(""))
+ {
+ return -1;
+ }
+ return long.Parse(value);
+ }
+
+ }
+
+ public class Document
+ {
+ public String title;
+ public String filename;
+ public String content;
+ public int docId;
+ public String session;
+ public KnowledgeTreeService kt;
+ public long filesize;
+ public bool verbose;
+ public bool local;
+
+ public Document(int offset, String session, KnowledgeTreeService kt, bool verbose, bool local)
+ {
+ this.title = "kt unit test" + offset;
+ this.filename = Helper.isUnix()?("/tmp/kt_unit_test" + offset + ".txt"):("c:\\kt_unit_test"+offset+".txt");
+ this.content = "hello world!";
+ this.docId = 0;
+ this.session = session;
+ this.kt = kt;
+ this.verbose =verbose;
+ this.local = local;
+ }
+
+ public kt_document_detail createFile(int folderId)
+ {
+ Helper.writeFile(this.filename, this.content);
+ this.filesize = this.content.Length;
+
+ if (this.local)
+ {
+ return null;
+ }
+ kt_document_detail d1 = this.kt.get_document_detail_by_title(this.session, folderId, this.title, "");
+ if (d1.status_code == 1)
+ {
+ this.docId = d1.document_id;
+ this.deleteFile();
+ }
+
+ kt_document_detail response1 = this.kt.add_base64_document(this.session, folderId, this.title, this.filename, "Default", Helper.ConvertFileToBase64Encoding(this.filename));
+
+ if (response1.status_code == 0)
+ {
+ this.docId = response1.document_id;
+ }
+
+ if (this.verbose)
+ {
+ if (response1.status_code == 0)
+ {
+ System.Console.WriteLine("docid: " + this.docId + " filename: " + this.filename);
+ }
+ else
+ {
+ System.Console.WriteLine("Could not create file: " + this.filename);
+ }
+ }
+
+ return response1;
+
+ }
+
+ public kt_document_detail createFileWithMetadata(int folderId, kt_metadata_fieldset[] metadata, kt_sysdata_item[] sysdata)
+ {
+ Helper.writeFile(this.filename, this.content);
+
+ this.filesize = this.content.Length;
+
+ if (this.local)
+ {
+ return null;
+ }
+
+ kt_document_detail d1 = this.kt.get_document_detail_by_title(this.session, folderId, this.title, "");
+ if (d1.status_code == 1)
+ {
+ this.docId = d1.document_id;
+ this.deleteFile();
+ }
+
+ kt_document_detail response1 = this.kt.add_base64_document_with_metadata(this.session, folderId, this.title, this.filename, "Default", Helper.ConvertFileToBase64Encoding(this.filename), metadata, sysdata);
+
+ if (response1.status_code == 0)
+ {
+ this.docId = response1.document_id;
+ }
+
+ if (this.verbose)
+ {
+ if (response1.status_code == 0)
+ {
+ System.Console.WriteLine("docid: " + this.docId + " filename: " + this.filename);
+ }
+ else
+ {
+ System.Console.WriteLine("Could not create file: " + this.filename);
+ }
+ }
+
+ return response1;
+ }
+
+ public kt_document_detail checkinFileWithMetadata(int folderId, kt_metadata_fieldset[] metadata, kt_sysdata_item[] sysdata)
+ {
+ Helper.writeFile(this.filename, this.content);
+ this.filesize = this.content.Length;
+
+ if (this.local)
+ {
+ return null;
+ }
+
+ kt_document_detail d1 = this.kt.get_document_detail_by_title(this.session, folderId, this.title, "");
+ if (d1.status_code == 1)
+ {
+ this.docId = d1.document_id;
+ this.deleteFile();
+ }
+
+ kt_document_detail response1 = this.kt.checkin_base64_document_with_metadata(this.session, this.docId, this.filename, "checkin reason", Helper.ConvertFileToBase64Encoding(this.filename), false, metadata, sysdata);
+
+ if (response1.status_code == 0)
+ {
+ this.docId = response1.document_id;
+ }
+
+ if (this.verbose)
+ {
+ if (response1.status_code == 0)
+ {
+ System.Console.WriteLine("docid: " + this.docId + " filename: " + this.filename);
+ }
+ else
+ {
+ System.Console.WriteLine("Could not create file: " + this.filename);
+ }
+ }
+
+ return response1;
+ }
+
+
+
+ public void deleteFile()
+ {
+ Helper.deleteFile(this.filename);
+
+ if (this.local)
+ {
+ return;
+ }
+
+ if (this.docId > 0)
+ {
+
+ kt_response response = this.kt.delete_document(this.session, this.docId, "Delete - cleaning up");
+ if (this.verbose && response.status_code != 0)
+ {
+ System.Console.WriteLine("Could not delete file: " + this.filename);
+ }
+ }
+ }
+ }
+
+
+ public class Helper
+ {
+ public static bool isUnix()
+ {
+ // found reference on: http://www.mono-project.com/FAQ:_Technical
+ int platform = (int) Environment.OSVersion.Platform;
+ return (platform == 4) || (platform == 128);
+ }
+
+ public static void writeFile(String filename, String text)
+ {
+ try
+ {
+ TextWriter tw = new StreamWriter(filename);
+ tw.WriteLine(text );
+ tw.Close();
+ }
+ catch (System.Exception exp)
+ {
+ System.Console.WriteLine("{0}", exp.Message);
+ throw;
+ }
+ }
+
+ public static String readFile(String filename)
+ {
+ String text = null;
+ try
+ {
+ FileStream inFile = new FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read);
+ StreamReader sr = new StreamReader(inFile);
+ text = sr.ReadToEnd();
+ inFile.Close();
+ }
+ catch (System.Exception exp)
+ {
+ System.Console.WriteLine("{0}", exp.Message);
+ throw;
+ }
+
+ return text;
+ }
+
+ public static void deleteFile(string filename)
+ {
+ try
+ {
+ File.Delete(filename);
+ }
+ catch(System.Exception)
+ {
+ // we are using this to cleanup, so don't handle
+ }
+ }
+
+ public static string ConvertFileToBase64Encoding(string filename)
+ {
+ System.IO.FileStream inFile;
+
+ byte[] binaryData;
+ string base64String = "";
+
+ try
+ {
+ inFile = new System.IO.FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read);
+ binaryData = new Byte[inFile.Length];
+ inFile.Read(binaryData, 0, (int)inFile.Length);
+ inFile.Close();
+
+ base64String = System.Convert.ToBase64String(binaryData, 0, binaryData.Length);
+ }
+ catch (System.Exception exp)
+ {
+ System.Console.WriteLine("{0}", exp.Message);
+ throw;
+ }
+
+ return base64String;
+ }
+
+ public static long ConvertBase64EncodingToFile(String encoding, string filename)
+ {
+ System.IO.FileStream inFile;
+
+ byte[] binaryData;
+ string base64String = "";
+
+ try
+ {
+ binaryData = Convert.FromBase64String (encoding);
+
+ inFile = new System.IO.FileStream(filename, System.IO.FileMode.Create);
+
+ inFile.Write(binaryData, 0, (int)binaryData.Length);
+ inFile.Close();
+ }
+ catch (System.Exception exp)
+ {
+ System.Console.WriteLine("{0}", exp.Message);
+ throw;
+ }
+ return binaryData.Length;
+ }
+
+ }
+}
diff --git a/ktwebservice/nunit/inventory.txt b/ktwebservice/nunit/inventory.txt
new file mode 100644
index 0000000..15501b2
--- /dev/null
+++ b/ktwebservice/nunit/inventory.txt
@@ -0,0 +1,86 @@
+authentication.cs
+=================
+*login
+*logout
+
+document_add.cs
+===============
+
+*add_base64_document
+*delete_document
+*delete_folder
+*get_document_detail_by_name
+*get_folder_detail_by_name
+
+document_checkout.cs
+====================
+
+*checkin_base64_document
+*checkout_base64_document
+*undo_document_checkout
+
+document_detail.cs
+==================
+
+*get_document_detail
+*get_document_detail_by_name
+
+document_links.cs
+=================
+
+*get_document_links
+*link_documents
+*unlink_documents
+
+document_owner.cs
+=================
+
+*change_document_owner
+
+
+document_type.cs
+================
+
+*change_document_type
+
+document_history.cs
+===================
+
+*get_document_version_history
+*get_document_transaction_history
+
+document_rename.cs
+==================
+
+*rename_document_filename
+*rename_document_title
+
+document_workflow.cs
+====================
+
+*start_document_workflow
+*stop_document_workflow
+*perform_document_workflow_transition
+*get_document_workflow_transitions
+
+document_metadata.cs
+====================
+
+*get_document_types
+*get_document_type_metadata
+*get_document_metadata
+*update_document_metadata
+
+folder.cs
+=========
+
+*get_folder_detail
+*create_folder
+*get_folder_detail_by_name
+*get_folder_contents
+*delete_folder
+
+document_system_metadata.cs
+===========================
+
+*update_document_metadata
diff --git a/ktwebservice/nunit/makefile b/ktwebservice/nunit/makefile
index 859cdd4..1af3df6 100644
--- a/ktwebservice/nunit/makefile
+++ b/ktwebservice/nunit/makefile
@@ -1,14 +1,15 @@
-RESULTS=authentication.result folder.result document.result query.result
+RESULTS=authentication.result document_detail.result document_links.result document_owner.result document_type.result document_history.result document_rename.result document_workflow.result document_metadata.result folder.result document_add.result document_system_metadata.result document_checkout.result
+#document_download.result
PROXY=KTproxy.cs
WSDL=ktdms.wsdl
WSDL_URL=http://ktdms.trunk/ktwebservice/index.php?wsdl
all: ${RESULTS}
-
+
results: clean-results ${RESULTS}
-
-KTproxy.dll: KTproxy.cs
- mcs -r:System.Web.Services /target:library KTproxy.cs
+
+KTproxy.dll: KTproxy.cs helper.cs
+ mcs -r:System.Web.Services /target:library KTproxy.cs helper.cs
KTproxy.cs: ktdms.wsdl
wsdl -out:${PROXY} ${WSDL}
@@ -23,7 +24,7 @@ clean-results:
rm -f ${RESULTS}
%.dll: %.cs KTproxy.dll
- mcs -r:System.Web.Services -r:nunit.framework /r:KTproxy.dll -debug /target:library -out:$@ $<
+ mcs -r:System.Web.Services -r:nunit.framework /r:KTproxy.dll -debug /target:library -out:$@ $<
%.result: %.dll
nunit-console $<
diff --git a/ktwebservice/nunit/query.cs b/ktwebservice/nunit/query.cs
index 735bcec..c3ee009 100644
--- a/ktwebservice/nunit/query.cs
+++ b/ktwebservice/nunit/query.cs
@@ -3,45 +3,45 @@ using System;
using System.IO;
namespace MonoTests.KnowledgeTree
-{
+{
[TestFixture]
public class QueryTest
{
-
+
private String _session;
private KnowledgeTreeService _kt;
-
+
[SetUp]
- public void SetUp()
+ public void SetUp()
{
- this._kt = new KnowledgeTreeService();
- kt_response response = this._kt.login("admin","admin","127.0.0.1");
- this._session = response.message;
-
+ this._kt = new KnowledgeTreeService();
+ kt_response response = this._kt.login("admin","admin","127.0.0.1");
+ this._session = response.message;
+
}
[TearDown]
- public void TearDown()
+ public void TearDown()
{
this._kt.logout(this._session);
}
-
+
[Test]
- public void Query()
+ public void Query()
{
- kt_search_response response = this._kt.search(this._session, "Filesize >= \"0\"", "");
-
- Assert.AreEqual(0,response.status_code);
-
-
+ kt_search_response response = this._kt.search(this._session, "Filesize >= \"0\"", "");
+
+ Assert.AreEqual(0,response.status_code);
+
+
if (response.status_code == 0)
{
-
+
for(int i=0;i