Commit 44f7655fa9bfa9b28fef45d0140de1905b54d4e0

Authored by Conrad Vermeulen
1 parent 6946e8a9

WSA-49

"Improve the document_detail and folder_detail records to incorporate more fields available on the document"
Updated.

Committed By: Conrad Vermeulen
Reviewed By: Kevin Fourie

git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@7761 c91229c3-7414-0410-bfa2-8a42b809f60b
ktwebservice/nunit/README
... ... @@ -11,6 +11,30 @@ The unit tests were written for NUnit. NUnit 2.2.0 was used during development.
11 11  
12 12 This framework was developed in Linux using Mono.
13 13  
  14 +DATABASE
  15 +--------
  16 +
  17 +Review helper.cs to see the configuration settings. UnixODBC is used. Sample config files:
  18 +
  19 + # odbc.ini
  20 +
  21 +[ktdms]
  22 +Driver = myodbcdriver
  23 +Description = MySQL ODBC 2.50 Driver DSN
  24 +SERVER = localhost
  25 +PORT =
  26 +Socket = /tmp/mysql.sock
  27 +USER = root
  28 +Password =
  29 +Database = ktdms
  30 +OPTION = 3
  31 +
  32 + # odbcinst.ini
  33 +[myodbcdriver]
  34 +Description = MySQL ODBC 2.50 Driver DSN
  35 +Driver = /usr/lib64/unixODBC/libmyodbc3.so
  36 +
  37 +
14 38 The document type 'NewType' must be added to the database for the document_type.cs unit test to run.
15 39  
16 40  
... ... @@ -37,3 +61,4 @@ For more information:
37 61  
38 62 http://nunit.org/
39 63 http://www.mono-project.com/
  64 +http://www.unixodbc.org
... ...
ktwebservice/nunit/document_add.cs
... ... @@ -8,20 +8,20 @@ namespace MonoTests.KnowledgeTree
8 8 public class AddDocumentTest : KTTest
9 9 {
10 10  
11   -
  11 +
12 12 private int _docId;
13 13 private int _folderId;
14 14 private String _filename;
15   - private String _content;
  15 + private String _content;
16 16  
17 17 public AddDocumentTest() : base()
18   - {
  18 + {
19 19 this._folderId = 1;
20   - }
  20 + }
21 21  
22 22 [SetUp]
23 23 public void SetUp()
24   - {
  24 + {
25 25 this._filename = Helper.isUnix()?"/tmp/kt_unit_test1.txt":"c:\\kt_unit_test1.txt";
26 26 this._content = "hello world!";
27 27  
... ... @@ -29,10 +29,10 @@ namespace MonoTests.KnowledgeTree
29 29  
30 30 [TearDown]
31 31 public void TearDown()
32   - {
33   - Helper.deleteFile(this._filename);
34   - }
35   -
  32 + {
  33 + Helper.deleteFile(this._filename);
  34 + }
  35 +
36 36 [Test]
37 37 public void FindDocumentBeforeAdd()
38 38 {
... ... @@ -49,7 +49,7 @@ namespace MonoTests.KnowledgeTree
49 49 {
50 50 System.Console.WriteLine("document not found. that is ok!");
51 51 }
52   - }
  52 + }
53 53  
54 54 [Test]
55 55 public void FindFolderBeforeAdd()
... ... @@ -67,7 +67,7 @@ namespace MonoTests.KnowledgeTree
67 67 {
68 68 if (this._verbose) System.Console.WriteLine("folder not found. that is ok!");
69 69 }
70   - }
  70 + }
71 71  
72 72 [Test]
73 73 public void AddDocument()
... ... @@ -89,7 +89,7 @@ namespace MonoTests.KnowledgeTree
89 89 Assert.AreEqual(0, response1.status_code);
90 90 Assert.AreEqual("kt unit test1", response1.title);
91 91 Assert.AreEqual("Default", response1.document_type);
92   - Assert.AreEqual("0.1", response1.version);
  92 + Assert.AreEqual(0.1, response1.version);
93 93 Assert.AreEqual("kt_unit_test1.txt", response1.filename);
94 94  
95 95 Assert.IsFalse(response1.created_date == null);
... ... @@ -172,7 +172,7 @@ namespace MonoTests.KnowledgeTree
172 172 Assert.AreEqual(0, response1.status_code);
173 173 Assert.AreEqual(filename, response1.title);
174 174 Assert.AreEqual("Default", response1.document_type);
175   - Assert.AreEqual("0.1", response1.version);
  175 + Assert.AreEqual(0.1, response1.version);
176 176 Assert.AreEqual("kt_unit_test1.txt", response1.filename);
177 177  
178 178 Assert.IsFalse(response1.created_date == null);
... ...
ktwebservice/nunit/document_download.cs
1 1 using NUnit.Framework;
2 2 using System;
3 3 using System.IO;
4   -using System.Net;
  4 +using System.Net;
5 5  
6 6 namespace MonoTests.KnowledgeTree
7   -{
8   -
9   -
  7 +{
10 8 [TestFixture]
11 9 public class DocumentSystemMetadataTest : KTTest
12 10 {
... ... @@ -61,10 +59,11 @@ namespace MonoTests.KnowledgeTree
61 59  
62 60  
63 61 long length = Helper.ConvertBase64EncodingToFile(update_resp.message, filename);
64   - //System.Console.WriteLine(Helper.readFile(filename));
  62 + System.Console.WriteLine(Helper.readFile(filename));
65 63  
66 64 // TODO - why???
67   - //Assert.AreEqual(length, this._doc1.filesize);
  65 + Assert.AreEqual(length, this._doc1.filesize+1);
  66 +
68 67 }
69 68 }
70 69 }
... ...
ktwebservice/nunit/document_links.cs
... ... @@ -47,6 +47,15 @@ namespace MonoTests.KnowledgeTree
47 47 Assert.AreEqual(this._doc1.docId, linkresp.parent_document_id);
48 48 Assert.AreEqual(1, linkresp.links.Length);
49 49 Assert.AreEqual(this._doc2.docId, linkresp.links[0].document_id);
  50 + Assert.AreEqual(this._doc2.title, linkresp.links[0].title);
  51 + Assert.AreEqual("Default", linkresp.links[0].document_type);
  52 + Assert.AreEqual(this._doc2.filesize+1, linkresp.links[0].filesize);
  53 + Assert.AreEqual(0.1, linkresp.links[0].version);
  54 + Assert.AreEqual("n/a", linkresp.links[0].workflow);
  55 + Assert.AreEqual("n/a", linkresp.links[0].workflow_state);
  56 + Assert.AreEqual("Reference", linkresp.links[0].link_type);
  57 + Assert.AreEqual("n/a", linkresp.links[0].custom_document_no);
  58 + Assert.AreEqual("n/a", linkresp.links[0].oem_document_no);
50 59  
51 60 response = this._kt.unlink_documents(this._session, this._doc1.docId, this._doc2.docId);
52 61 Assert.AreEqual(0, response.status_code);
... ...
ktwebservice/nunit/document_metadata.cs
... ... @@ -108,5 +108,42 @@ namespace MonoTests.KnowledgeTree
108 108  
109 109 }
110 110  
  111 + [Test]
  112 + public void UpdateDocumentMetadataWithSpecialCharactersTest()
  113 + {
  114 + kt_metadata_fieldset[] fs = new kt_metadata_fieldset[1];
  115 + fs[0] = new kt_metadata_fieldset();
  116 + fs[0].fieldset = "General information";
  117 + fs[0].fields = new kt_metadata_field[3];
  118 + fs[0].fields[0] = new kt_metadata_field();
  119 + fs[0].fields[0].name = "Document Author";
  120 + fs[0].fields[0].value = "Joe \\Soap";
  121 + fs[0].fields[1] = new kt_metadata_field();
  122 + fs[0].fields[1].name = "Category";
  123 + fs[0].fields[1].value = "Tec/hn\\ical/";
  124 + fs[0].fields[2] = new kt_metadata_field();
  125 + fs[0].fields[2].name = "Media Type";
  126 + fs[0].fields[2].value = "Text'";
  127 +
  128 + kt_sysdata_item[] sysdata = new kt_sysdata_item[0];
  129 +
  130 + kt_document_detail update_resp = this._kt.update_document_metadata(this._session, this._docId, fs, sysdata);
  131 + Assert.AreEqual(0, update_resp.status_code);
  132 + Assert.AreEqual("General information", update_resp.metadata[1].fieldset);
  133 +
  134 + Assert.AreEqual("Document Author", update_resp.metadata[1].fields[0].name);
  135 + Assert.AreEqual("Joe \\Soap", update_resp.metadata[1].fields[0].value);
  136 +
  137 + Assert.AreEqual("Category", update_resp.metadata[1].fields[1].name);
  138 + Assert.AreEqual("Tec/hn\\ical/", update_resp.metadata[1].fields[1].value);
  139 +
  140 + Assert.AreEqual("Media Type", update_resp.metadata[1].fields[2].name);
  141 + Assert.AreEqual("Text'", update_resp.metadata[1].fields[2].value);
  142 +
  143 +
  144 + }
  145 +
  146 +
  147 +
111 148 }
112 149 }
... ...
ktwebservice/nunit/folder.cs
... ... @@ -7,7 +7,7 @@ namespace MonoTests.KnowledgeTree
7 7 [TestFixture]
8 8 public class FolderTest : KTTest
9 9 {
10   -
  10 +
11 11 private int _folder_id;
12 12 private int _subfolder_id;
13 13  
... ... @@ -18,7 +18,7 @@ namespace MonoTests.KnowledgeTree
18 18  
19 19 [TearDown]
20 20 public void TearDown()
21   - {
  21 + {
22 22 }
23 23  
24 24 [Test]
... ... @@ -30,7 +30,7 @@ namespace MonoTests.KnowledgeTree
30 30 Assert.AreEqual(1, response.id);
31 31 Assert.AreEqual("Root Folder", response.folder_name);
32 32 Assert.AreEqual(0, response.parent_id);
33   - Assert.AreEqual("/Root Folder", response.full_path); // ??? DOESNT SEEM CONSISTENT - should be 'Root Filder'
  33 + Assert.AreEqual("Root Folder", response.full_path);
34 34 }
35 35  
36 36 [Test]
... ... @@ -74,8 +74,7 @@ namespace MonoTests.KnowledgeTree
74 74 [Test]
75 75 public void GetFolderContents()
76 76 {
77   -
78   - kt_folder_contents response = this._kt.get_folder_contents(this._session, this._folder_id, 1, "DF");
  77 + kt_folder_contents response = this._kt.get_folder_contents(this._session, this._folder_id, 1, "DF");
79 78 Assert.AreEqual(0,response.status_code);
80 79 Assert.AreEqual(this._folder_id,response.folder_id);
81 80 Assert.AreEqual("kt_unit_test", response.folder_name);
... ... @@ -86,30 +85,43 @@ namespace MonoTests.KnowledgeTree
86 85 Assert.AreEqual(this._subfolder_id, response2.folder_id);
87 86 Assert.AreEqual("subfolder", response2.folder_name);
88 87 Assert.AreEqual("Root Folder/kt_unit_test/subfolder", response2.full_path);
89   - }
  88 + }
90 89  
91 90 [Test]
92 91 public void RenameFolder()
93 92 {
94   -
95   - kt_response response = this._kt.rename_folder(this._session, this._subfolder_id, "subfolder2");
  93 + kt_response response = this._kt.rename_folder(this._session, this._subfolder_id, "subfolde'r2");
96 94 Assert.AreEqual(0, response.status_code);
97 95  
98 96 kt_folder_detail response2 = this._kt.get_folder_detail(this._session, this._subfolder_id);
99 97 Assert.AreEqual(0, response2.status_code);
100 98 Assert.AreEqual(this._subfolder_id, response2.id);
101   - Assert.AreEqual("subfolder2", response2.folder_name);
  99 + Assert.AreEqual("subfolde'r2", response2.folder_name);
102 100 Assert.AreEqual(this._folder_id, response2.parent_id);
103   - Assert.AreEqual("Root Folder/kt_unit_test/subfolder2", response2.full_path);
104   - }
  101 + Assert.AreEqual("Root Folder/kt_unit_test/subfolde'r2", response2.full_path);
  102 + }
105 103  
106 104 [Test]
107 105 public void RemoveFolder()
108 106 {
109   -
110   - kt_response response = this._kt.delete_folder(this._session, this._folder_id, "unit testing remove");
  107 + kt_response response = this._kt.delete_folder(this._session, this._folder_id, "unit testing remove");
111 108 Assert.AreEqual(0, response.status_code);
112   - }
  109 + }
113 110  
  111 + [Test]
  112 + public void AddFolderWithSpecialCharacters()
  113 + {
  114 + kt_folder_detail response = this._kt.create_folder(this._session, 1, "kt.unit.test");
  115 + Assert.AreEqual(0,response.status_code);
  116 + Assert.AreEqual("kt.unit.test",response.folder_name);
  117 +
  118 + response = this._kt.create_folder(this._session, 1, "kt ' unit \" test");
  119 + Assert.AreEqual(0,response.status_code);
  120 + Assert.AreEqual("kt ' unit \" test",response.folder_name);
  121 +
  122 + response = this._kt.create_folder(this._session, 1, "kt - unit - test");
  123 + Assert.AreEqual(0,response.status_code);
  124 + Assert.AreEqual("kt - unit - test",response.folder_name);
  125 + }
114 126 }
115 127 }
... ...
ktwebservice/nunit/helper.cs
... ... @@ -3,6 +3,8 @@ using System.Text;
3 3 using System.Net;
4 4 using System.IO;
5 5 using System.Collections;
  6 +using System.Data;
  7 +using System.Data.Odbc;
6 8  
7 9 namespace MonoTests.KnowledgeTree
8 10 {
... ... @@ -22,17 +24,56 @@ namespace MonoTests.KnowledgeTree
22 24 {
23 25 protected KTWebService _kt;
24 26 protected String _session;
25   - protected bool _verbose;
  27 + protected bool _verbose;
  28 +
26 29  
27 30 public KTTest()
28 31 {
29 32 this._kt = new KTWebService();
30 33 kt_response response = this._kt.login("admin","admin","127.0.0.1");
31 34 this._session = response.message;
32   - this._verbose = false;
33   -
  35 + this._verbose = false;
  36 + this.setupDb();
34 37 }
35 38  
  39 + void setupDb()
  40 + {
  41 +
  42 + String connectionString = "DSN=ktdms;" + "UID=root;" + "PWD=";
  43 + try
  44 + {
  45 + IDbConnection dbcon = new OdbcConnection(connectionString);
  46 + if (dbcon == null)
  47 + {
  48 + System.Console.WriteLine("Cannot create connection");
  49 + }
  50 + dbcon.Open();
  51 + IDbCommand dbcmd = dbcon.CreateCommand();
  52 + if (dbcmd == null)
  53 + {
  54 + System.Console.WriteLine("Cannot create command");
  55 + }
  56 + dbcmd.CommandText = "DELETE FROM folders WHERE id > 1";
  57 + dbcmd.CommandType = CommandType.Text;
  58 + dbcmd.ExecuteNonQuery();
  59 + dbcmd.CommandText = "DELETE FROM documents";
  60 + dbcmd.CommandType = CommandType.Text;
  61 + dbcmd.ExecuteNonQuery();
  62 + dbcmd.CommandText = "DELETE FROM document_types_lookup WHERE name = 'NewType'";
  63 + dbcmd.ExecuteNonQuery();
  64 + dbcmd.CommandText = "INSERT INTO document_types_lookup(id,name) VALUES(2,'NewType')";
  65 + dbcmd.ExecuteNonQuery();
  66 + dbcmd.Dispose();
  67 + dbcmd = null;
  68 + dbcon.Close();
  69 + dbcon = null;
  70 + }
  71 + catch(Exception ex)
  72 + {
  73 + System.Console.WriteLine(ex.Message);
  74 + }
  75 + }
  76 +
36 77 ~KTTest()
37 78 {
38 79 this._kt.logout(this._session);
... ... @@ -188,7 +229,7 @@ namespace MonoTests.KnowledgeTree
188 229 this.title = "kt unit test" + offset;
189 230 this.realFilename = "kt_unit_test" + offset + ".txt";
190 231 this.filename = (Helper.isUnix()?("/tmp/"):("c:\\")) + this.realFilename;
191   - this.content = "hello world!";
  232 + this.content = "Hello World!\nThis is a test! And more!\n\n\r\n";
192 233 this.docId = 0;
193 234 this.session = session;
194 235 this.kt = kt;
... ... @@ -423,7 +464,6 @@ namespace MonoTests.KnowledgeTree
423 464 System.IO.FileStream inFile;
424 465  
425 466 byte[] binaryData;
426   - string base64String = "";
427 467  
428 468 try
429 469 {
... ...
ktwebservice/nunit/makefile
1   -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
  1 +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
2 2 PROXY=KTproxy.cs
3 3 WSDL=ktdms.wsdl
4 4 ROOT_URL=http://ktdms.trunk
... ... @@ -8,10 +8,8 @@ all: ${RESULTS}
8 8  
9 9 results: clean-results ${RESULTS}
10 10  
11   -KTproxy.dll: KTproxy.cs helper.cs
12   - mcs -r:System.Web.Services /target:library KTproxy.cs helper.cs
13   -
14   -
  11 +KTproxy.dll: KTproxy.cs helper.cs
  12 + mcs -r:System.Web.Services -r:System.Data.dll /target:library KTproxy.cs helper.cs
15 13  
16 14 KTproxy.cs: ktdms.wsdl
17 15 wsdl -out:${PROXY} ${WSDL}
... ... @@ -25,8 +23,8 @@ clean:
25 23 clean-results:
26 24 rm -f ${RESULTS}
27 25  
28   -%.dll: %.cs KTproxy.dll
29   - mcs -r:System.Web.Services -r:nunit.framework /r:KTproxy.dll -debug /target:library -out:$@ $<
  26 +%.dll: %.cs KTproxy.dll
  27 + mcs -r:System.Web.Services -r:nunit.framework /r:KTproxy.dll -debug /target:library -out:$@ $<
30 28  
31 29 %.result: %.dll
32 30 (export KT_ROOT_URL=${ROOT_URL}; nunit-console $<)
... ...