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.js | 15 |
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 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz's Javascript Crypto Library. | 5 | This file is part of Clipperz Community Edition. |
6 | Javascript Crypto Library provides web developers with an extensive | 6 | Clipperz Community Edition is an online password manager. |
7 | and efficient set of cryptographic functions. The library aims to | ||
8 | obtain maximum execution speed while preserving modularity and | ||
9 | reusability. | ||
10 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
11 | refer to http://www.clipperz.com | 8 | refer 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 | ||
29 | Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); | 26 | Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); |
30 | 27 | ||
31 | var tests = { | 28 | var 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 | ||
225 | SimpleTest.runDeferredTests("Clipperz.PM.DataModel.EncryptedRemoteObject", tests, {trace:false}); | 222 | SimpleTest.runDeferredTests("Clipperz.PM.DataModel.EncryptedRemoteObject", tests, {trace:false}); |