diff --git a/ktwebservice/nunit/README b/ktwebservice/nunit/README index 909f4ba..97aab3c 100644 --- a/ktwebservice/nunit/README +++ b/ktwebservice/nunit/README @@ -11,6 +11,30 @@ The unit tests were written for NUnit. NUnit 2.2.0 was used during development. This framework was developed in Linux using Mono. +DATABASE +-------- + +Review helper.cs to see the configuration settings. UnixODBC is used. Sample config files: + + # odbc.ini + +[ktdms] +Driver = myodbcdriver +Description = MySQL ODBC 2.50 Driver DSN +SERVER = localhost +PORT = +Socket = /tmp/mysql.sock +USER = root +Password = +Database = ktdms +OPTION = 3 + + # odbcinst.ini +[myodbcdriver] +Description = MySQL ODBC 2.50 Driver DSN +Driver = /usr/lib64/unixODBC/libmyodbc3.so + + The document type 'NewType' must be added to the database for the document_type.cs unit test to run. @@ -37,3 +61,4 @@ For more information: http://nunit.org/ http://www.mono-project.com/ +http://www.unixodbc.org diff --git a/ktwebservice/nunit/document_add.cs b/ktwebservice/nunit/document_add.cs index 418da26..2cb58e0 100755 --- a/ktwebservice/nunit/document_add.cs +++ b/ktwebservice/nunit/document_add.cs @@ -8,20 +8,20 @@ namespace MonoTests.KnowledgeTree public class AddDocumentTest : KTTest { - + private int _docId; private int _folderId; private String _filename; - private String _content; + private String _content; public AddDocumentTest() : base() - { + { this._folderId = 1; - } + } [SetUp] public void SetUp() - { + { this._filename = Helper.isUnix()?"/tmp/kt_unit_test1.txt":"c:\\kt_unit_test1.txt"; this._content = "hello world!"; @@ -29,10 +29,10 @@ namespace MonoTests.KnowledgeTree [TearDown] public void TearDown() - { - Helper.deleteFile(this._filename); - } - + { + Helper.deleteFile(this._filename); + } + [Test] public void FindDocumentBeforeAdd() { @@ -49,7 +49,7 @@ namespace MonoTests.KnowledgeTree { System.Console.WriteLine("document not found. that is ok!"); } - } + } [Test] public void FindFolderBeforeAdd() @@ -67,7 +67,7 @@ namespace MonoTests.KnowledgeTree { if (this._verbose) System.Console.WriteLine("folder not found. that is ok!"); } - } + } [Test] public void AddDocument() @@ -89,7 +89,7 @@ namespace MonoTests.KnowledgeTree 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(0.1, response1.version); Assert.AreEqual("kt_unit_test1.txt", response1.filename); Assert.IsFalse(response1.created_date == null); @@ -172,7 +172,7 @@ namespace MonoTests.KnowledgeTree 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(0.1, response1.version); Assert.AreEqual("kt_unit_test1.txt", response1.filename); Assert.IsFalse(response1.created_date == null); diff --git a/ktwebservice/nunit/document_download.cs b/ktwebservice/nunit/document_download.cs index 6112020..68924e7 100644 --- a/ktwebservice/nunit/document_download.cs +++ b/ktwebservice/nunit/document_download.cs @@ -1,12 +1,10 @@ using NUnit.Framework; using System; using System.IO; -using System.Net; +using System.Net; namespace MonoTests.KnowledgeTree -{ - - +{ [TestFixture] public class DocumentSystemMetadataTest : KTTest { @@ -61,10 +59,11 @@ namespace MonoTests.KnowledgeTree long length = Helper.ConvertBase64EncodingToFile(update_resp.message, filename); - //System.Console.WriteLine(Helper.readFile(filename)); + System.Console.WriteLine(Helper.readFile(filename)); // TODO - why??? - //Assert.AreEqual(length, this._doc1.filesize); + Assert.AreEqual(length, this._doc1.filesize+1); + } } } diff --git a/ktwebservice/nunit/document_links.cs b/ktwebservice/nunit/document_links.cs index f7dc767..999d34f 100644 --- a/ktwebservice/nunit/document_links.cs +++ b/ktwebservice/nunit/document_links.cs @@ -47,6 +47,15 @@ namespace MonoTests.KnowledgeTree 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); + Assert.AreEqual(this._doc2.title, linkresp.links[0].title); + Assert.AreEqual("Default", linkresp.links[0].document_type); + Assert.AreEqual(this._doc2.filesize+1, linkresp.links[0].filesize); + Assert.AreEqual(0.1, linkresp.links[0].version); + Assert.AreEqual("n/a", linkresp.links[0].workflow); + Assert.AreEqual("n/a", linkresp.links[0].workflow_state); + Assert.AreEqual("Reference", linkresp.links[0].link_type); + Assert.AreEqual("n/a", linkresp.links[0].custom_document_no); + Assert.AreEqual("n/a", linkresp.links[0].oem_document_no); response = this._kt.unlink_documents(this._session, this._doc1.docId, this._doc2.docId); Assert.AreEqual(0, response.status_code); diff --git a/ktwebservice/nunit/document_metadata.cs b/ktwebservice/nunit/document_metadata.cs index 3d8a1a2..af29019 100644 --- a/ktwebservice/nunit/document_metadata.cs +++ b/ktwebservice/nunit/document_metadata.cs @@ -108,5 +108,42 @@ namespace MonoTests.KnowledgeTree } + [Test] + public void UpdateDocumentMetadataWithSpecialCharactersTest() + { + 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 = "Tec/hn\\ical/"; + 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("Tec/hn\\ical/", 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/folder.cs b/ktwebservice/nunit/folder.cs index 2cfdb74..7279ebb 100644 --- a/ktwebservice/nunit/folder.cs +++ b/ktwebservice/nunit/folder.cs @@ -7,7 +7,7 @@ namespace MonoTests.KnowledgeTree [TestFixture] public class FolderTest : KTTest { - + private int _folder_id; private int _subfolder_id; @@ -18,7 +18,7 @@ namespace MonoTests.KnowledgeTree [TearDown] public void TearDown() - { + { } [Test] @@ -30,7 +30,7 @@ namespace MonoTests.KnowledgeTree Assert.AreEqual(1, response.id); Assert.AreEqual("Root Folder", response.folder_name); Assert.AreEqual(0, response.parent_id); - Assert.AreEqual("/Root Folder", response.full_path); // ??? DOESNT SEEM CONSISTENT - should be 'Root Filder' + Assert.AreEqual("Root Folder", response.full_path); } [Test] @@ -74,8 +74,7 @@ namespace MonoTests.KnowledgeTree [Test] public void GetFolderContents() { - - kt_folder_contents response = this._kt.get_folder_contents(this._session, this._folder_id, 1, "DF"); + 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); Assert.AreEqual("kt_unit_test", response.folder_name); @@ -86,30 +85,43 @@ namespace MonoTests.KnowledgeTree Assert.AreEqual(this._subfolder_id, response2.folder_id); Assert.AreEqual("subfolder", response2.folder_name); Assert.AreEqual("Root Folder/kt_unit_test/subfolder", response2.full_path); - } + } [Test] public void RenameFolder() { - - kt_response response = this._kt.rename_folder(this._session, this._subfolder_id, "subfolder2"); + kt_response response = this._kt.rename_folder(this._session, this._subfolder_id, "subfolde'r2"); 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("subfolde'r2", 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/subfolde'r2", response2.full_path); + } [Test] public void RemoveFolder() { - - kt_response response = this._kt.delete_folder(this._session, this._folder_id, "unit testing remove"); + kt_response response = this._kt.delete_folder(this._session, this._folder_id, "unit testing remove"); Assert.AreEqual(0, response.status_code); - } + } + [Test] + public void AddFolderWithSpecialCharacters() + { + kt_folder_detail response = this._kt.create_folder(this._session, 1, "kt.unit.test"); + Assert.AreEqual(0,response.status_code); + Assert.AreEqual("kt.unit.test",response.folder_name); + + response = this._kt.create_folder(this._session, 1, "kt ' unit \" test"); + Assert.AreEqual(0,response.status_code); + Assert.AreEqual("kt ' unit \" test",response.folder_name); + + response = this._kt.create_folder(this._session, 1, "kt - unit - test"); + Assert.AreEqual(0,response.status_code); + Assert.AreEqual("kt - unit - test",response.folder_name); + } } } diff --git a/ktwebservice/nunit/helper.cs b/ktwebservice/nunit/helper.cs index da4ef72..35a3886 100755 --- a/ktwebservice/nunit/helper.cs +++ b/ktwebservice/nunit/helper.cs @@ -3,6 +3,8 @@ using System.Text; using System.Net; using System.IO; using System.Collections; +using System.Data; +using System.Data.Odbc; namespace MonoTests.KnowledgeTree { @@ -22,17 +24,56 @@ namespace MonoTests.KnowledgeTree { protected KTWebService _kt; protected String _session; - protected bool _verbose; + protected bool _verbose; + public KTTest() { this._kt = new KTWebService(); kt_response response = this._kt.login("admin","admin","127.0.0.1"); this._session = response.message; - this._verbose = false; - + this._verbose = false; + this.setupDb(); } + void setupDb() + { + + String connectionString = "DSN=ktdms;" + "UID=root;" + "PWD="; + try + { + IDbConnection dbcon = new OdbcConnection(connectionString); + if (dbcon == null) + { + System.Console.WriteLine("Cannot create connection"); + } + dbcon.Open(); + IDbCommand dbcmd = dbcon.CreateCommand(); + if (dbcmd == null) + { + System.Console.WriteLine("Cannot create command"); + } + dbcmd.CommandText = "DELETE FROM folders WHERE id > 1"; + dbcmd.CommandType = CommandType.Text; + dbcmd.ExecuteNonQuery(); + dbcmd.CommandText = "DELETE FROM documents"; + dbcmd.CommandType = CommandType.Text; + dbcmd.ExecuteNonQuery(); + dbcmd.CommandText = "DELETE FROM document_types_lookup WHERE name = 'NewType'"; + dbcmd.ExecuteNonQuery(); + dbcmd.CommandText = "INSERT INTO document_types_lookup(id,name) VALUES(2,'NewType')"; + dbcmd.ExecuteNonQuery(); + dbcmd.Dispose(); + dbcmd = null; + dbcon.Close(); + dbcon = null; + } + catch(Exception ex) + { + System.Console.WriteLine(ex.Message); + } + } + ~KTTest() { this._kt.logout(this._session); @@ -188,7 +229,7 @@ namespace MonoTests.KnowledgeTree this.title = "kt unit test" + offset; this.realFilename = "kt_unit_test" + offset + ".txt"; this.filename = (Helper.isUnix()?("/tmp/"):("c:\\")) + this.realFilename; - this.content = "hello world!"; + this.content = "Hello World!\nThis is a test! And more!\n\n\r\n"; this.docId = 0; this.session = session; this.kt = kt; @@ -423,7 +464,6 @@ namespace MonoTests.KnowledgeTree System.IO.FileStream inFile; byte[] binaryData; - string base64String = ""; try { diff --git a/ktwebservice/nunit/makefile b/ktwebservice/nunit/makefile index a88a4df..236c43d 100644 --- a/ktwebservice/nunit/makefile +++ b/ktwebservice/nunit/makefile @@ -1,4 +1,4 @@ -RESULTS= authentication.result document_detail.result document_add.result document_checkout.result document_type.result document_links.result document_owner.result document_rename.result document_history.result document_workflow.result document_copy.result folder.result document_metadata.result document_system_metadata.result query.result document_download.result +RESULTS= authentication.result document_detail.result document_contents.result document_history.result folder.result document_metadata.result document_add.result document_checkout.result document_type.result document_links.result document_owner.result document_rename.result document_workflow.result document_copy.result document_system_metadata.result query.result document_download.result PROXY=KTproxy.cs WSDL=ktdms.wsdl ROOT_URL=http://ktdms.trunk @@ -8,10 +8,8 @@ all: ${RESULTS} results: clean-results ${RESULTS} -KTproxy.dll: KTproxy.cs helper.cs - mcs -r:System.Web.Services /target:library KTproxy.cs helper.cs - - +KTproxy.dll: KTproxy.cs helper.cs + mcs -r:System.Web.Services -r:System.Data.dll /target:library KTproxy.cs helper.cs KTproxy.cs: ktdms.wsdl wsdl -out:${PROXY} ${WSDL} @@ -25,8 +23,8 @@ clean: clean-results: rm -f ${RESULTS} -%.dll: %.cs KTproxy.dll - mcs -r:System.Web.Services -r:nunit.framework /r:KTproxy.dll -debug /target:library -out:$@ $< +%.dll: %.cs KTproxy.dll + mcs -r:System.Web.Services -r:nunit.framework /r:KTproxy.dll -debug /target:library -out:$@ $< %.result: %.dll (export KT_ROOT_URL=${ROOT_URL}; nunit-console $<)