summaryrefslogtreecommitdiff
path: root/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.test.js
Unidiff
Diffstat (limited to 'frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.test.js') (more/less context) (ignore whitespace changes)
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.test.js15
1 files changed, 6 insertions, 9 deletions
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.test.js b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.test.js
index 0a4fe0c..9c50c43 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.test.js
@@ -1,225 +1,222 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
30 27
31var tests = { 28var tests = {
32 29
33 //------------------------------------------------------------------------- 30 //-------------------------------------------------------------------------
34 31
35 'simple_tests': function(someTestArgs) { 32 'simple_tests': function(someTestArgs) {
36 vardeferredResult; 33 vardeferredResult;
37 varencryptedRemoteObject; 34 varencryptedRemoteObject;
38 35
39 varkey; 36 varkey;
40 var version; 37 var version;
41 var rawData; 38 var rawData;
42 39
43 key = "just a random key"; 40 key = "just a random key";
44 version = Clipperz.PM.Crypto.encryptingFunctions.currentVersion; 41 version = Clipperz.PM.Crypto.encryptingFunctions.currentVersion;
45 rawData = "just a random text to encrypt"; 42 rawData = "just a random text to encrypt";
46 43
47 encryptedRemoteObject = new Clipperz.PM.DataModel.EncryptedRemoteObject({ 44 encryptedRemoteObject = new Clipperz.PM.DataModel.EncryptedRemoteObject({
48 'retrieveKeyFunction': MochiKit.Base.noop, 45 'retrieveKeyFunction': MochiKit.Base.noop,
49 'retrieveRemoteDataFunction':function () { return "--"}, 46 'retrieveRemoteDataFunction':function () { return "--"},
50 'encryptedDataKeypath': '--', 47 'encryptedDataKeypath': '--',
51 'encryptedVersionKeypath': '--' 48 'encryptedVersionKeypath': '--'
52 }); 49 });
53 SimpleTest.ok(encryptedRemoteObject != null, "create an encryptedRemoteObject"); 50 SimpleTest.ok(encryptedRemoteObject != null, "create an encryptedRemoteObject");
54 51
55 deferredResult = Clipperz.Async.callbacks("EncryptedRemoteObject.test - simple_tests", [ 52 deferredResult = Clipperz.Async.callbacks("EncryptedRemoteObject.test - simple_tests", [
56 MochiKit.Base.method(encryptedRemoteObject, 'getRemoteData'), 53 MochiKit.Base.method(encryptedRemoteObject, 'getRemoteData'),
57 function(aResult) { 54 function(aResult) {
58 SimpleTest.is(aResult, "--", "setting and getting serverData works"); 55 SimpleTest.is(aResult, "--", "setting and getting serverData works");
59 } 56 }
60 ], someTestArgs); 57 ], someTestArgs);
61 58
62 return deferredResult; 59 return deferredResult;
63 }, 60 },
64 61
65 //------------------------------------------------------------------------- 62 //-------------------------------------------------------------------------
66 63
67 'decrypt_test': function (someTestArgs) { 64 'decrypt_test': function (someTestArgs) {
68 vardeferredResult; 65 vardeferredResult;
69 varencryptedRemoteObject; 66 varencryptedRemoteObject;
70 varkey; 67 varkey;
71 var version; 68 var version;
72 var rawData; 69 var rawData;
73 70
74 key = "just a random key"; 71 key = "just a random key";
75 version = Clipperz.PM.Crypto.encryptingFunctions.currentVersion; 72 version = Clipperz.PM.Crypto.encryptingFunctions.currentVersion;
76 rawData = "just a random text to encrypt"; 73 rawData = "just a random text to encrypt";
77 74
78 encryptedRemoteObject = new Clipperz.PM.DataModel.EncryptedRemoteObject({ 75 encryptedRemoteObject = new Clipperz.PM.DataModel.EncryptedRemoteObject({
79 'retrieveKeyFunction': MochiKit.Base.partial(MochiKit.Async.succeed, key), 76 'retrieveKeyFunction': MochiKit.Base.partial(MochiKit.Async.succeed, key),
80 'retrieveRemoteDataFunction':MochiKit.Base.partial(Clipperz.Async.callbacks, "EncryptedRemoteObject.test - decrypt_test <encrypt data>", [ 77 'retrieveRemoteDataFunction':MochiKit.Base.partial(Clipperz.Async.callbacks, "EncryptedRemoteObject.test - decrypt_test <encrypt data>", [
81 MochiKit.Base.partial(Clipperz.PM.Crypto.deferredEncrypt, {key:key, value:rawData, version:version}), 78 MochiKit.Base.partial(Clipperz.PM.Crypto.deferredEncrypt, {key:key, value:rawData, version:version}),
82 function (someEncryptedData) { 79 function (someEncryptedData) {
83 return { 80 return {
84 'data': someEncryptedData, 81 'data': someEncryptedData,
85 'version': version 82 'version': version
86 } 83 }
87 } 84 }
88 ], someTestArgs)//, 85 ], someTestArgs)//,
89 // 'encryptedDataKeypath': 'data', 86 // 'encryptedDataKeypath': 'data',
90 // 'encryptedVersionKeypath': 'version' 87 // 'encryptedVersionKeypath': 'version'
91 }); 88 });
92 89
93 deferredResult = new Clipperz.Async.Deferred("decrypt_test", someTestArgs); 90 deferredResult = new Clipperz.Async.Deferred("decrypt_test", someTestArgs);
94 deferredResult.addMethod(encryptedRemoteObject, 'getDecryptedData'); 91 deferredResult.addMethod(encryptedRemoteObject, 'getDecryptedData');
95 deferredResult.addCallback(function (aResult) { 92 deferredResult.addCallback(function (aResult) {
96 SimpleTest.is(aResult, rawData, "encrypt and decrypt works"); 93 SimpleTest.is(aResult, rawData, "encrypt and decrypt works");
97 }) 94 })
98 deferredResult.callback(); 95 deferredResult.callback();
99 96
100 return deferredResult; 97 return deferredResult;
101 }, 98 },
102 99
103 //------------------------------------------------------------------------- 100 //-------------------------------------------------------------------------
104 101
105 'getValue_test': function (someTestArgs) { 102 'getValue_test': function (someTestArgs) {
106 vardeferredResult; 103 vardeferredResult;
107 varencryptedRemoteObject; 104 varencryptedRemoteObject;
108 varkey; 105 varkey;
109 var version; 106 var version;
110 var rawData; 107 var rawData;
111 108
112 key = "just a random key"; 109 key = "just a random key";
113 version = Clipperz.PM.Crypto.encryptingFunctions.currentVersion; 110 version = Clipperz.PM.Crypto.encryptingFunctions.currentVersion;
114 rawData = { 111 rawData = {
115 key1: 'value1', 112 key1: 'value1',
116 key2: 'value2' 113 key2: 'value2'
117 }; 114 };
118 115
119 encryptedRemoteObject = new Clipperz.PM.DataModel.EncryptedRemoteObject({ 116 encryptedRemoteObject = new Clipperz.PM.DataModel.EncryptedRemoteObject({
120 'reference': "testReference", 117 'reference': "testReference",
121 'retrieveKeyFunction': MochiKit.Base.partial(MochiKit.Async.succeed, key), 118 'retrieveKeyFunction': MochiKit.Base.partial(MochiKit.Async.succeed, key),
122 'retrieveRemoteDataFunction':MochiKit.Base.partial(Clipperz.Async.callbacks, "EncryptedRemoteObject.test - decrypt_test <encrypt data>", [ 119 'retrieveRemoteDataFunction':MochiKit.Base.partial(Clipperz.Async.callbacks, "EncryptedRemoteObject.test - decrypt_test <encrypt data>", [
123 MochiKit.Base.partial(Clipperz.PM.Crypto.deferredEncrypt, {key:key, value:rawData, version:version}), 120 MochiKit.Base.partial(Clipperz.PM.Crypto.deferredEncrypt, {key:key, value:rawData, version:version}),
124 function (someEncryptedData) { 121 function (someEncryptedData) {
125 return { 122 return {
126 'data': someEncryptedData, 123 'data': someEncryptedData,
127 'version': version 124 'version': version
128 } 125 }
129 } 126 }
130 ], someTestArgs)//, 127 ], someTestArgs)//,
131 // 'encryptedDataKeypath': 'data', 128 // 'encryptedDataKeypath': 'data',
132 // 'encryptedVersionKeypath': 'version' 129 // 'encryptedVersionKeypath': 'version'
133 }); 130 });
134 131
135 deferredResult = new Clipperz.Async.Deferred("decrypt_test", someTestArgs); 132 deferredResult = new Clipperz.Async.Deferred("decrypt_test", someTestArgs);
136 133
137 deferredResult.addMethod(encryptedRemoteObject, 'getValue', 'key1'); 134 deferredResult.addMethod(encryptedRemoteObject, 'getValue', 'key1');
138 deferredResult.addTest('value1', "getting 'key1' works"); 135 deferredResult.addTest('value1', "getting 'key1' works");
139 deferredResult.addMethod(encryptedRemoteObject, 'hasAnyCleanTextData'); 136 deferredResult.addMethod(encryptedRemoteObject, 'hasAnyCleanTextData');
140 deferredResult.addTest(true, "After accessing a value, hasAnyCleanTextData returns false"); 137 deferredResult.addTest(true, "After accessing a value, hasAnyCleanTextData returns false");
141 138
142 deferredResult.addMethod(encryptedRemoteObject, 'hasPendingChanges'); 139 deferredResult.addMethod(encryptedRemoteObject, 'hasPendingChanges');
143 deferredResult.addTest(false, "if nothing has changed, the object should return not pending changes"); 140 deferredResult.addTest(false, "if nothing has changed, the object should return not pending changes");
144 141
145 deferredResult.addMethod(encryptedRemoteObject, 'deleteAllCleanTextData'); 142 deferredResult.addMethod(encryptedRemoteObject, 'deleteAllCleanTextData');
146 deferredResult.addMethod(encryptedRemoteObject, 'hasAnyCleanTextData'); 143 deferredResult.addMethod(encryptedRemoteObject, 'hasAnyCleanTextData');
147 deferredResult.addTest(false, "After deleting all cleanTextData, hasAnyCleanTextData returns false"); 144 deferredResult.addTest(false, "After deleting all cleanTextData, hasAnyCleanTextData returns false");
148 145
149 deferredResult.addMethod(encryptedRemoteObject, 'getValue', 'key1'); 146 deferredResult.addMethod(encryptedRemoteObject, 'getValue', 'key1');
150 deferredResult.addTest('value1', "getting 'key1' (also after a lock) works correctly"); 147 deferredResult.addTest('value1', "getting 'key1' (also after a lock) works correctly");
151 148
152 deferredResult.addMethod(encryptedRemoteObject, 'setValue', 'key1', 'new value1'); 149 deferredResult.addMethod(encryptedRemoteObject, 'setValue', 'key1', 'new value1');
153 deferredResult.addMethod(encryptedRemoteObject, 'getValue', 'key1'); 150 deferredResult.addMethod(encryptedRemoteObject, 'getValue', 'key1');
154 deferredResult.addTest('new value1', "after setting a new value, it is correctly returned"); 151 deferredResult.addTest('new value1', "after setting a new value, it is correctly returned");
155 152
156 deferredResult.addMethod(encryptedRemoteObject, 'values'); 153 deferredResult.addMethod(encryptedRemoteObject, 'values');
157 deferredResult.addCallback(function (someValues) { 154 deferredResult.addCallback(function (someValues) {
158 SimpleTest.is(someValues['key1'], 'new value1', "the value got straight from the objectStore is correct"); 155 SimpleTest.is(someValues['key1'], 'new value1', "the value got straight from the objectStore is correct");
159 }); 156 });
160 157
161 deferredResult.addMethod(encryptedRemoteObject, 'hasPendingChanges'); 158 deferredResult.addMethod(encryptedRemoteObject, 'hasPendingChanges');
162 deferredResult.addTest(true, "once a value has been changed, the object should return that there're some pending changes"); 159 deferredResult.addTest(true, "once a value has been changed, the object should return that there're some pending changes");
163 160
164 deferredResult.addMethod(encryptedRemoteObject, 'revertChanges'); 161 deferredResult.addMethod(encryptedRemoteObject, 'revertChanges');
165 deferredResult.addMethod(encryptedRemoteObject, 'hasPendingChanges'); 162 deferredResult.addMethod(encryptedRemoteObject, 'hasPendingChanges');
166 deferredResult.addTest(false, "reverting the changes should return the object to its initial state, without any peding changes"); 163 deferredResult.addTest(false, "reverting the changes should return the object to its initial state, without any peding changes");
167 164
168 deferredResult.addMethod(encryptedRemoteObject, 'getValue', 'key1'); 165 deferredResult.addMethod(encryptedRemoteObject, 'getValue', 'key1');
169 deferredResult.addTest('value1', "also the value of the changed item has been restored"); 166 deferredResult.addTest('value1', "also the value of the changed item has been restored");
170 167
171 deferredResult.callback(); 168 deferredResult.callback();
172 169
173 return deferredResult; 170 return deferredResult;
174 }, 171 },
175 172
176 //------------------------------------------------------------------------- 173 //-------------------------------------------------------------------------
177 174
178 'encrypt_with_new_object_test': function (someTestArgs) { 175 'encrypt_with_new_object_test': function (someTestArgs) {
179 vardeferredResult; 176 vardeferredResult;
180 varencryptedRemoteObject; 177 varencryptedRemoteObject;
181 varkey; 178 varkey;
182 // var version; 179 // var version;
183 // var rawData; 180 // var rawData;
184 181
185 key = "just a random key"; 182 key = "just a random key";
186 // version = Clipperz.PM.Crypto.encryptingFunctions.currentVersion; 183 // version = Clipperz.PM.Crypto.encryptingFunctions.currentVersion;
187 // rawData = "just a random text to encrypt"; 184 // rawData = "just a random text to encrypt";
188 185
189 encryptedRemoteObject = new Clipperz.PM.DataModel.EncryptedRemoteObject({ 186 encryptedRemoteObject = new Clipperz.PM.DataModel.EncryptedRemoteObject({
190 'retrieveRemoteDataFunction':MochiKit.Base.noop 187 'retrieveRemoteDataFunction':MochiKit.Base.noop
191 }); 188 });
192 189
193 encryptedRemoteObject.setValue('key1', "value1"); 190 encryptedRemoteObject.setValue('key1', "value1");
194 encryptedRemoteObject.setValue('key2', "value2"); 191 encryptedRemoteObject.setValue('key2', "value2");
195 encryptedRemoteObject.setValue('key3', "value3"); 192 encryptedRemoteObject.setValue('key3', "value3");
196 193
197 deferredResult = new Clipperz.Async.Deferred("encrypt_with_new_object_test", someTestArgs); 194 deferredResult = new Clipperz.Async.Deferred("encrypt_with_new_object_test", someTestArgs);
198 deferredResult.addMethod(encryptedRemoteObject, 'prepareRemoteDataWithKey', key); 195 deferredResult.addMethod(encryptedRemoteObject, 'prepareRemoteDataWithKey', key);
199 deferredResult.addCallback(MochiKit.Base.itemgetter('data')); 196 deferredResult.addCallback(MochiKit.Base.itemgetter('data'));
200 deferredResult.collectResults({ 197 deferredResult.collectResults({
201 'key': MochiKit.Base.partial(MochiKit.Async.succeed, key), 198 'key': MochiKit.Base.partial(MochiKit.Async.succeed, key),
202 'value':MochiKit.Async.succeed, 199 'value':MochiKit.Async.succeed,
203 'version':MochiKit.Base.partial(MochiKit.Async.succeed, Clipperz.PM.Crypto.encryptingFunctions.currentVersion) 200 'version':MochiKit.Base.partial(MochiKit.Async.succeed, Clipperz.PM.Crypto.encryptingFunctions.currentVersion)
204 }); 201 });
205 deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt); 202 deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt);
206 deferredResult.addCallback(function (aResult) { 203 deferredResult.addCallback(function (aResult) {
207 SimpleTest.is(aResult['key1'], "value1", "encrypt and decrypt works for first element"); 204 SimpleTest.is(aResult['key1'], "value1", "encrypt and decrypt works for first element");
208 SimpleTest.is(aResult['key2'], "value2", "encrypt and decrypt works for second element"); 205 SimpleTest.is(aResult['key2'], "value2", "encrypt and decrypt works for second element");
209 SimpleTest.is(aResult['key3'], "value3", "encrypt and decrypt works for third element"); 206 SimpleTest.is(aResult['key3'], "value3", "encrypt and decrypt works for third element");
210 }) 207 })
211 deferredResult.callback(); 208 deferredResult.callback();
212 209
213 return deferredResult; 210 return deferredResult;
214 }, 211 },
215 212
216 //------------------------------------------------------------------------- 213 //-------------------------------------------------------------------------
217 //------------------------------------------------------------------------- 214 //-------------------------------------------------------------------------
218 //------------------------------------------------------------------------- 215 //-------------------------------------------------------------------------
219 //------------------------------------------------------------------------- 216 //-------------------------------------------------------------------------
220 'syntaxFix': MochiKit.Base.noop 217 'syntaxFix': MochiKit.Base.noop
221}; 218};
222 219
223//############################################################################# 220//#############################################################################
224 221
225SimpleTest.runDeferredTests("Clipperz.PM.DataModel.EncryptedRemoteObject", tests, {trace:false}); 222SimpleTest.runDeferredTests("Clipperz.PM.DataModel.EncryptedRemoteObject", tests, {trace:false});